1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- # Models a low level tile map and helps manage loaded tile maps.
- class Tilemap < Store
- extend Store::Forward
- # Loads the tile map sample. Supports .tmx files.
- def self.load(name, vpath)
- load_something(forward_name(name), vpath, self) do | nid |
- Eruta::Store.load_tilemap(nid, vpath)
- end
- end
- # Sets a tile map as the active tile map.
- # Does not drop the previous tile map.
- def self.activate!(tilemap)
- active_map_ tilemap.id
- @active = tilemap
- end
- # returns the current active tilemap
- def self.active
- return @active || nil
- end
- # Equivalent to Tilemap.actvate(self)
- def activate!
- Tilemap.activate!(self)
- end
- # Reloads the current active tile map. Doesn othing if there is no active map
- # Returns the reloaded map. The map ID might have changed.
- def self.reload
- return nil unless self.active
- path = self.active.vpath
- name = self.active.name
- # Disable map
- active_map_(-1)
- # Drop the current map
- self.active_map.drop!
- # Load the map again and set it as active
- map = self.load(name, vpath)
- self.activate!(map) if map
- return map
- end
- end
-
|