show what's on tiles
This commit is contained in:
parent
160204daa4
commit
ab12a9b26a
@ -1,6 +1,7 @@
|
|||||||
package simulator
|
package simulator
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"strconv"
|
"strconv"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -40,3 +41,8 @@ func (p *Plant) Get() Produce {
|
|||||||
func (p *Plant) String() string {
|
func (p *Plant) String() string {
|
||||||
return strconv.Itoa(p.kind)
|
return strconv.Itoa(p.kind)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Describe returns a human useful string
|
||||||
|
func (p *Plant) Describe() string {
|
||||||
|
return fmt.Sprintf("A %v plant with %v value", strconv.Itoa(p.kind), strconv.Itoa(p.value))
|
||||||
|
}
|
||||||
|
@ -1,10 +1,13 @@
|
|||||||
package simulator
|
package simulator
|
||||||
|
|
||||||
import "fmt"
|
import (
|
||||||
|
"fmt"
|
||||||
|
)
|
||||||
|
|
||||||
//Player is a player controlled mob
|
//Player is a player controlled mob
|
||||||
type Player struct {
|
type Player struct {
|
||||||
Resources map[int]int
|
Resources map[int]int
|
||||||
|
CurrentTile *Tile
|
||||||
}
|
}
|
||||||
|
|
||||||
//NewPlayer initializes a player
|
//NewPlayer initializes a player
|
||||||
@ -18,5 +21,9 @@ func (p *Player) String() string {
|
|||||||
for i := range p.Resources {
|
for i := range p.Resources {
|
||||||
res += fmt.Sprintf("%v: %v", i, p.Resources[i])
|
res += fmt.Sprintf("%v: %v", i, p.Resources[i])
|
||||||
}
|
}
|
||||||
|
res += "\nLocation: \n"
|
||||||
|
if p.CurrentTile != nil {
|
||||||
|
res += p.CurrentTile.String()
|
||||||
|
}
|
||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
|
@ -32,16 +32,16 @@ func (p *Pod) Place(item Producer, x, y int) bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//MovePlayer swaps player tiles
|
//MovePlayer swaps player tiles
|
||||||
func (p *Pod) MovePlayer(x, y, s, t int) bool {
|
func (p *Pod) MovePlayer(x, y, s, t int) *Tile {
|
||||||
if oob(x) || oob(y) || oob(s) || oob(t) {
|
if oob(x) || oob(y) || oob(s) || oob(t) {
|
||||||
return false
|
return nil
|
||||||
}
|
}
|
||||||
if p.Tiles[x][y].User == nil || p.Tiles[s][t].User != nil {
|
if p.Tiles[x][y].User == nil || p.Tiles[s][t].User != nil {
|
||||||
return false
|
return nil
|
||||||
}
|
}
|
||||||
p.Tiles[s][t].User = p.Tiles[x][y].User
|
p.Tiles[s][t].User = p.Tiles[x][y].User
|
||||||
p.Tiles[x][y].User = nil
|
p.Tiles[x][y].User = nil
|
||||||
return true
|
return &p.Tiles[s][t]
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Pod) String() string {
|
func (p *Pod) String() string {
|
||||||
|
@ -5,6 +5,7 @@ type Producer interface {
|
|||||||
Tick()
|
Tick()
|
||||||
Get() Produce
|
Get() Produce
|
||||||
String() string
|
String() string
|
||||||
|
Describe() string
|
||||||
}
|
}
|
||||||
|
|
||||||
//Produce is the result of a producer
|
//Produce is the result of a producer
|
||||||
|
@ -60,23 +60,27 @@ func (s *Simulator) Input(cmd string) {
|
|||||||
|
|
||||||
case "left":
|
case "left":
|
||||||
res := s.Place.MovePlayer(s.Px, s.Py, s.Px, s.Py-1)
|
res := s.Place.MovePlayer(s.Px, s.Py, s.Px, s.Py-1)
|
||||||
if res {
|
if res != nil {
|
||||||
s.Py = s.Py - 1
|
s.Py = s.Py - 1
|
||||||
|
s.Player.CurrentTile = res
|
||||||
}
|
}
|
||||||
case "right":
|
case "right":
|
||||||
res := s.Place.MovePlayer(s.Px, s.Py, s.Px, s.Py+1)
|
res := s.Place.MovePlayer(s.Px, s.Py, s.Px, s.Py+1)
|
||||||
if res {
|
if res != nil {
|
||||||
s.Py = s.Py + 1
|
s.Py = s.Py + 1
|
||||||
|
s.Player.CurrentTile = res
|
||||||
}
|
}
|
||||||
case "up":
|
case "up":
|
||||||
res := s.Place.MovePlayer(s.Px, s.Py, s.Px-1, s.Py)
|
res := s.Place.MovePlayer(s.Px, s.Py, s.Px-1, s.Py)
|
||||||
if res {
|
if res != nil {
|
||||||
s.Px = s.Px - 1
|
s.Px = s.Px - 1
|
||||||
|
s.Player.CurrentTile = res
|
||||||
}
|
}
|
||||||
case "down":
|
case "down":
|
||||||
res := s.Place.MovePlayer(s.Px, s.Py, s.Px+1, s.Py)
|
res := s.Place.MovePlayer(s.Px, s.Py, s.Px+1, s.Py)
|
||||||
if res {
|
if res != nil {
|
||||||
s.Px = s.Px + 1
|
s.Px = s.Px + 1
|
||||||
|
s.Player.CurrentTile = res
|
||||||
}
|
}
|
||||||
case "quit":
|
case "quit":
|
||||||
s.Stop()
|
s.Stop()
|
||||||
|
@ -1,7 +1,21 @@
|
|||||||
package simulator
|
package simulator
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
)
|
||||||
|
|
||||||
//Tile is a tile
|
//Tile is a tile
|
||||||
type Tile struct {
|
type Tile struct {
|
||||||
Maker Producer
|
Maker Producer
|
||||||
User *Player
|
User *Player
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (t *Tile) String() string {
|
||||||
|
var res string
|
||||||
|
if t.Maker != nil {
|
||||||
|
res += fmt.Sprintf("There is a %v here\n", t.Maker.Describe())
|
||||||
|
} else {
|
||||||
|
res += "Nothing here"
|
||||||
|
}
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user