Added weapon system. Animated laser.
This commit is contained in:
51
weapons/holster.go
Normal file
51
weapons/holster.go
Normal file
@@ -0,0 +1,51 @@
|
||||
package weapons
|
||||
|
||||
import "mover/gamedata"
|
||||
|
||||
type Holster struct {
|
||||
activewp gamedata.WeaponType
|
||||
guns map[gamedata.WeaponType]Weapon
|
||||
}
|
||||
|
||||
func NewHolster() *Holster {
|
||||
holster := &Holster{
|
||||
guns: make(map[gamedata.WeaponType]Weapon),
|
||||
activewp: gamedata.WeaponTypeGun,
|
||||
}
|
||||
holster.AddWeapon(NewGun())
|
||||
holster.AddWeapon(NewLaser())
|
||||
return holster
|
||||
}
|
||||
|
||||
func (h *Holster) GetActiveWeapon() Weapon {
|
||||
return h.guns[h.activewp]
|
||||
}
|
||||
|
||||
func (h *Holster) GetActiveWeaponType() gamedata.WeaponType {
|
||||
return h.guns[h.activewp].GetWeaponType()
|
||||
}
|
||||
|
||||
func (h *Holster) AddWeapon(w Weapon) {
|
||||
_, ok := h.guns[w.GetWeaponType()]
|
||||
if !ok {
|
||||
h.guns[w.GetWeaponType()] = w
|
||||
}
|
||||
}
|
||||
|
||||
func (h *Holster) CycleWeapon() {
|
||||
//no weapons, nothing to do
|
||||
if len(h.guns) == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
//keep searching until we find the next weapon that exists
|
||||
for ok := false; !ok; {
|
||||
nextwp := (h.activewp + 1) % gamedata.WeaponTypeMax
|
||||
_, ok = h.guns[nextwp]
|
||||
if ok {
|
||||
h.activewp = nextwp
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user