shield
parent
69c0706be4
commit
b03b607235
@ -0,0 +1,70 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
)
|
||||
|
||||
func MakeShield(c *Connection, s *System) {
|
||||
m := &MakeShieldState{
|
||||
System: s,
|
||||
CommandSuite: CommandSet{
|
||||
balCommand,
|
||||
BroadcastCommand(s),
|
||||
helpCommand,
|
||||
NearbyCommand(s),
|
||||
playersCommand,
|
||||
},
|
||||
}
|
||||
c.SetState(m)
|
||||
}
|
||||
|
||||
type MakeShieldState struct {
|
||||
CommandSuite
|
||||
*System
|
||||
start int64
|
||||
}
|
||||
|
||||
func (m *MakeShieldState) Enter(c *Connection) {
|
||||
c.Printf("Making shield on %v...\n", m.System)
|
||||
}
|
||||
|
||||
func (m *MakeShieldState) Tick(c *Connection, frame int64) ConnectionState {
|
||||
if m.start == 0 {
|
||||
m.start = frame
|
||||
}
|
||||
if framesToDur(frame-m.start) >= options.makeShieldTime {
|
||||
return Idle(m.System)
|
||||
}
|
||||
return m
|
||||
}
|
||||
|
||||
func (m *MakeShieldState) Exit(c *Connection) {
|
||||
c.Printf("Done! System %v is now shielded.\n", m.System)
|
||||
m.System.Shield = new(Shield)
|
||||
}
|
||||
|
||||
func (m *MakeShieldState) String() string {
|
||||
return fmt.Sprintf("Making shield on %v", m.System)
|
||||
}
|
||||
|
||||
type Shield struct {
|
||||
energy float64
|
||||
}
|
||||
|
||||
func (s *Shield) Tick(frame int64) {
|
||||
if s.energy < 1000 {
|
||||
s.energy += (1000 - s.energy) * 0.0005
|
||||
}
|
||||
}
|
||||
|
||||
func (s *Shield) Hit() bool {
|
||||
if s.energy > 750 {
|
||||
s.energy -= 750
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (s *Shield) Dead() bool {
|
||||
return false
|
||||
}
|
Loading…
Reference in New Issue