diff --git a/elements/enemies.go b/elements/enemies.go index ef287ce..20325f4 100644 --- a/elements/enemies.go +++ b/elements/enemies.go @@ -20,4 +20,6 @@ type Enemies interface { SetTouched() ClearTouched() IsTouched() bool + ExplosionInitiated() bool + SetExplosionInitiated() } diff --git a/elements/flyeye.go b/elements/flyeye.go index 87920d7..6aa9abb 100644 --- a/elements/flyeye.go +++ b/elements/flyeye.go @@ -22,6 +22,7 @@ type FlyEye struct { hit bool touched bool toggle bool + sploding bool } func NewFlyEye() *FlyEye { @@ -34,6 +35,7 @@ func NewFlyEye() *FlyEye { hit: false, touched: false, toggle: false, + sploding: false, } f.Maks.Fill(color.White) return f @@ -151,3 +153,11 @@ func (f *FlyEye) GetEnemyState() gamedata.EnemyState { func (f *FlyEye) SetPosition(p gamedata.Coordinates) { f.position = p } + +func (f *FlyEye) ExplosionInitiated() bool { + return f.sploding +} + +func (f *FlyEye) SetExplosionInitiated() { + f.sploding = true +} diff --git a/gameelement/canvas.go b/gameelement/canvas.go index a797854..d340579 100644 --- a/gameelement/canvas.go +++ b/gameelement/canvas.go @@ -327,6 +327,13 @@ func (c *Canvas) UpdateEnemies() { for _, e := range c.enemies { if !c.gameover { e.SetTarget(c.hero.Pos) + + if e.GetEnemyState() == gamedata.EnemyStateExploding && !e.ExplosionInitiated() { + if c.eventmap[gamedata.GameEventExplosion] != nil { + c.eventmap[gamedata.GameEventExplosion]() + } + e.SetExplosionInitiated() + } } else { e.SetTarget(e.GetPosition()) }