Created
June 12, 2012 12:00
-
-
Save dimmduh/2917121 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--генератор врагов в точке респауна | |
--создает экземпляры объектов в необходимое время | |
EnemyGenerator = {} | |
function EnemyGenerator:new(params) | |
local generator = {} | |
--координаты появления | |
generator.x = params.x | |
generator.y = params.y | |
--время начала работы генератора | |
--от этого времени отсчитывается | |
generator.timeStart = system.getTimer(); | |
--таблица со временем появления и типом врага | |
generator.enemies = { | |
{ t = 1000, enemyType = 'worm' }, | |
{ t = 3000, enemyType = 'worm' }, | |
{ t = 6000, enemyType = 'worm' }, | |
{ t = 10000, enemyType = 'worm' }, | |
{ t = 10000, enemyType = 'worm' }, | |
{ t = 12000, enemyType = 'worm' }, | |
} | |
--создание объекта | |
function generator:createEnemy( enemyType ) | |
if ( enemyType == "worm" ) then | |
table.insert( enemies, Worm:new( {x = self.x, y = self.y} ) ); | |
end | |
end | |
function generator:enterFrame(e) | |
--объект время создания которого пришло | |
local elaspedItem = self:getElaspedItem(); | |
if (elaspedItem) then | |
--p( elaspedItem.t .. ' != ' .. elaspedItem.enemyType ); | |
self:createEnemy( elaspedItem.enemyType ) | |
table.remove( self.enemies, 1 ) | |
end | |
end | |
--возвращает врага, время которого пришло и он еще не был создан | |
function generator:getElaspedItem() | |
if ( #self.enemies > 0 ) then | |
if ( self.enemies[1].t < self:getElaspedTime() ) then | |
return self.enemies[1]; | |
end | |
end | |
return nil | |
end | |
--возвращает прошедшее время в миллисекундах с начала работы генератора | |
function generator:getElaspedTime() | |
return os.difftime( system.getTimer(), self.timeStart ); | |
end | |
Runtime:addEventListener('enterFrame', generator) | |
return generator | |
end | |
return EnemyGenerator |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment