pull/5/head
Jordan Orelli 10 years ago
parent 28681b15a6
commit 9ce71de6e6

@ -40,7 +40,7 @@ var nearbyCommand = &Command{
} }
for _, neighbor := range neighbors { for _, neighbor := range neighbors {
other := index[neighbor.id] other := index[neighbor.id]
fmt.Fprintf(conn, "%s: %v\n", other.name, neighbor.distance) fmt.Fprintf(conn, "%-4d %-20s %v\n", other.id, other.name, system.TravelTimeTo(other))
} }
}, },
} }
@ -120,7 +120,7 @@ var scanCommand = &Command{
if id == system.id { if id == system.id {
continue continue
} }
delay := system.TimeTo(index[id]) delay := system.LightTimeTo(index[id])
id2 := id id2 := id
After(delay, func() { After(delay, func() {
scanSystem(id2, system.id) scanSystem(id2, system.id)
@ -140,7 +140,7 @@ var broadcastCommand = &Command{
if id == system.id { if id == system.id {
continue continue
} }
delay := system.TimeTo(index[id]) delay := system.LightTimeTo(index[id])
id2 := id id2 := id
After(delay, func() { After(delay, func() {
deliverMessage(id2, system.id, msg) deliverMessage(id2, system.id, msg)
@ -228,11 +228,11 @@ func move(conn *Connection, to *System) {
start := conn.System() start := conn.System()
start.Leave(conn) start.Leave(conn)
delay := start.TimeTo(to) delay := start.TravelTimeTo(to)
delay = time.Duration(int64(float64(delay/time.Nanosecond) * 1.25)) fmt.Fprintf(conn, "moving to %s. ETA: %v\n", to.name, delay)
After(delay, func() { After(delay, func() {
to.Arrive(conn) to.Arrive(conn)
fmt.Fprintf(conn, "You have arrived at the %s system.\n", to.name) fmt.Fprintf(conn, "You have arrived at the %s system after a total travel time of %v.\n", to.name, delay)
}) })
} }
@ -289,8 +289,7 @@ var mkBombCommand = &Command{
func bomb(conn *Connection, to *System) { func bomb(conn *Connection, to *System) {
conn.bombs -= 1 conn.bombs -= 1
delay := conn.System().TimeTo(to) delay := conn.System().BombTimeTo(to)
delay = time.Duration(int64(float64(delay/time.Nanosecond) * 1.1))
fmt.Fprintf(conn, "sending bomb to %s. ETA: %v\n", to.name, delay) fmt.Fprintf(conn, "sending bomb to %s. ETA: %v\n", to.name, delay)
After(delay, func() { After(delay, func() {
to.Bombed(conn) to.Bombed(conn)

@ -70,10 +70,18 @@ func (s *System) DistanceTo(other *System) float64 {
return dist3d(s.x, s.y, s.z, other.x, other.y, other.z) return dist3d(s.x, s.y, s.z, other.x, other.y, other.z)
} }
func (s *System) TimeTo(other *System) time.Duration { func (s *System) LightTimeTo(other *System) time.Duration {
return time.Duration(int64(s.DistanceTo(other) * 100000000)) return time.Duration(int64(s.DistanceTo(other) * 100000000))
} }
func (s *System) BombTimeTo(other *System) time.Duration {
return time.Duration(int64(s.DistanceTo(other) * 110000000))
}
func (s *System) TravelTimeTo(other *System) time.Duration {
return time.Duration(int64(s.DistanceTo(other) * 125000000))
}
func (s *System) Bombed(bomber *Connection) { func (s *System) Bombed(bomber *Connection) {
s.EachConn(func(conn *Connection) { s.EachConn(func(conn *Connection) {
conn.Die() conn.Die()
@ -88,7 +96,7 @@ func (s *System) Bombed(bomber *Connection) {
if id == s.id { if id == s.id {
continue continue
} }
delay := s.TimeTo(index[id]) delay := s.BombTimeTo(index[id])
id2 := id id2 := id
After(delay, func() { After(delay, func() {
bombNotice(id2, s.id) bombNotice(id2, s.id)
@ -216,7 +224,7 @@ func (r *scanResults) write(w io.Writer) {
func scanSystem(id int, reply int) { func scanSystem(id int, reply int) {
system := index[id] system := index[id]
source := index[reply] source := index[reply]
delay := system.TimeTo(source) delay := system.LightTimeTo(source)
log_info("scan hit %s from %s after traveling for %v", system.name, source.name, delay) log_info("scan hit %s from %s after traveling for %v", system.name, source.name, delay)
system.EachConn(func(conn *Connection) { system.EachConn(func(conn *Connection) {
@ -234,7 +242,7 @@ func scanSystem(id int, reply int) {
func deliverReply(id int, echo int, results *scanResults) { func deliverReply(id int, echo int, results *scanResults) {
system := index[id] system := index[id]
source := index[echo] source := index[echo]
delay := system.TimeTo(source) delay := system.LightTimeTo(source)
log_info("echo received at %s reflected from %s after traveling for %v", system.name, source.name, delay) log_info("echo received at %s reflected from %s after traveling for %v", system.name, source.name, delay)
system.EachConn(func(conn *Connection) { system.EachConn(func(conn *Connection) {
if results.negative() { if results.negative() {

Loading…
Cancel
Save