1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- script 'registry.rb'
- class Store
- attr_reader :id
- attr_reader :name
- attr_reader :vpath
-
- extend Registry
-
-
- def initialize(id, name, vpath = nil)
- @id = id
- @name = name
- @vpath = vpath
- end
-
- def self.load_something(name, vpath, klass = nil, &block)
-
- Store[name].drop! if Store[name]
- id = Eruta::Store.get_unused_id(1000)
- return nil if id < 0
- res = block.call(id)
- return nil unless res
- klass ||= self
- loaded = klass.new(id, name)
- Store.register(loaded, id, name)
- return loaded
- end
-
-
-
- def self.load_tilemap(name, vpath)
- load_something(name, vpath) do | nid |
- Eruta::Store.load_tilemap(nid, vpath)
- end
- end
-
-
- NONE = 0
- BITMAP = 1
- FONT = 2
- AUDIO_STREAM = 3
- SAMPLE = 4
- CONFIG = 5
- OTHER = 8
- TILEMAP = 9
-
-
- def kind
- return Eruta::Store.kind(@id)
- end
-
-
- def drop!
- res = Eruta::Store.drop(@id)
- Store.unregister(self)
- return res
- end
-
- module Forward
- def forward_name(name)
- return self.to_s.downcase + '_' + name.to_s
- end
-
- def [](name)
- return Store[forward_name(name)]
- end
- def drop!(name)
- obj = self[name]
- obj.drop! if obj
- end
- end
-
- end
|