diff options
| author | feurig <don@suspectdevices.com> | 2021-12-05 18:32:12 -0800 |
|---|---|---|
| committer | feurig <don@suspectdevices.com> | 2021-12-05 18:32:12 -0800 |
| commit | 1b5e750a08bfd07a96ebdd1eb518871fcd09a183 (patch) | |
| tree | 72b2326cd82c99239c9223acd76094a1ddeb7a71 /modernworld/laser.go | |
| parent | cf8db4d4057cbdeeed6bdcb2aa35f19cea4d09f7 (diff) | |
mod this framework
Diffstat (limited to 'modernworld/laser.go')
| -rw-r--r-- | modernworld/laser.go | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/modernworld/laser.go b/modernworld/laser.go new file mode 100644 index 0000000..d2d532d --- /dev/null +++ b/modernworld/laser.go @@ -0,0 +1,46 @@ +package invaders + +import tl "github.com/JoelOtter/termloop" + +type Laser struct { + *tl.Rectangle + Direction int + IsFromHero bool + IsNew bool + HasHit bool + HitAlienLaser bool + Points int +} + +func NewHeroLaser(heroGunPosition int, y int) *Laser { + return &Laser{ + Rectangle: tl.NewRectangle(heroGunPosition, y, 1, 1, tl.ColorRed), + Direction: 1, + IsNew: true, + IsFromHero: true, + } +} + +func NewAlienLaser(alienGunPosition int, y int) *Laser { + return &Laser{ + Rectangle: tl.NewRectangle(alienGunPosition, y, 1, 1, tl.ColorGreen), + Direction: -1, + IsNew: true, + IsFromHero: false, + Points: 5, + } +} + +func (laser *Laser) Collide(collision tl.Physical) { + if laser.IsFromHero == false { + return + } + + if laserCollide, isLaser := collision.(*Laser); isLaser { + laser.HasHit = true + laser.HitAlienLaser = true + laser.Points = laserCollide.Points + + laserCollide.HasHit = true + } +} |
