aboutsummaryrefslogtreecommitdiff
path: root/modernworld/laser.go
diff options
context:
space:
mode:
authorfeurig <don@suspectdevices.com>2021-12-05 18:32:12 -0800
committerfeurig <don@suspectdevices.com>2021-12-05 18:32:12 -0800
commit1b5e750a08bfd07a96ebdd1eb518871fcd09a183 (patch)
tree72b2326cd82c99239c9223acd76094a1ddeb7a71 /modernworld/laser.go
parentcf8db4d4057cbdeeed6bdcb2aa35f19cea4d09f7 (diff)
mod this framework
Diffstat (limited to 'modernworld/laser.go')
-rw-r--r--modernworld/laser.go46
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
+ }
+}