copy slices to prevent weird slice overlap
This commit is contained in:
parent
a28b45e5cf
commit
272903fabc
14
game.go
14
game.go
@ -52,7 +52,7 @@ func NewGame(sentDeck []int, scoDeck []int) *Game {
|
||||
}
|
||||
|
||||
func (g *Game) String() string {
|
||||
return fmt.Sprintf("Sen(%v): %v\n\n%v\n\nSco(%v): %v\nStatus:%v Draw:%v Turn:%v\nBuffers\nCardBuffer:%v\nSB:%v BB:%v\nEffectTarget:%v\nQueuedEffect:%v\n", g.SentinalPlayer.Life, g.SentinalPlayer.Hand, g.GameBoard, g.ScourgePlayer.Life, g.ScourgePlayer.Hand, g.Status, g.CanDraw, g.CurrentTurn, g.CardBuffer, g.ScryBuffer, g.CardBuffer, g.TargetReq, g.QueuedEffect)
|
||||
return fmt.Sprintf("Sen(%v): %v\n\n%v\n\nSco(%v): %v\nStatus:%v Draw:%v Turn:%v\nBuffers\nCardBuffer:%v\nSB:%v BB:%v\nEffectTarget:%v\nQueuedEffect:%v\n", g.SentinalPlayer.Life, g.SentinalPlayer.Hand, g.GameBoard, g.ScourgePlayer.Life, g.ScourgePlayer.Hand, g.Status, g.CanDraw, g.CurrentTurn, g.CardBuffer, g.ScryBuffer, g.BottomBuffer, g.TargetReq, g.QueuedEffect)
|
||||
}
|
||||
|
||||
func (g *Game) Parse(cmd *Command) *CommandResult {
|
||||
@ -155,6 +155,9 @@ func (g *Game) PlayerStateAct(id int, cmd string) *GameView {
|
||||
return NewView(id, g)
|
||||
case "b":
|
||||
//begin game
|
||||
if g.Status == StatusPlaying {
|
||||
break
|
||||
}
|
||||
if id == SentinalID {
|
||||
g.SentinalPlayer.Ready = true
|
||||
} else if id == ScourgeID {
|
||||
@ -248,7 +251,7 @@ func (g *Game) PlayerAct(id int, cmd string) *Deck {
|
||||
g.ScryBuffer = curr.Life
|
||||
}
|
||||
if g.CardBuffer.Size() <= 0 {
|
||||
g.CardBuffer = DeckFromCards(currD.Scry(curr.Life))
|
||||
g.CardBuffer = currD.Scry(g.ScryBuffer)
|
||||
}
|
||||
g.ScryBuffer = 0
|
||||
return g.CardBuffer
|
||||
@ -275,11 +278,12 @@ func (g *Game) PlayerAct(id int, cmd string) *Deck {
|
||||
if x.Owner != g.CurrentTurn {
|
||||
log.Println("drew a card from our deck that isn't our own")
|
||||
}
|
||||
g.CardBuffer.Cards = append(g.CardBuffer.Cards[:x_i], g.CardBuffer.Cards[x_i+1:]...)
|
||||
currD.Bottom(g.CardBuffer.Cards)
|
||||
g.CardBuffer = DeckFromCards(append(g.CardBuffer.Cards[:x_i], g.CardBuffer.Cards[x_i+1:]...))
|
||||
currD.Bottom(g.CardBuffer)
|
||||
curr.Hand = append(curr.Hand, x)
|
||||
g.CanDraw = false
|
||||
g.HasDrawn = true
|
||||
g.CardBuffer.Reset()
|
||||
return DeckFromCards(curr.Hand)
|
||||
case "b":
|
||||
if g.BottomBuffer == 0 || g.ScryBuffer != 0 {
|
||||
@ -298,7 +302,7 @@ func (g *Game) PlayerAct(id int, cmd string) *Deck {
|
||||
}
|
||||
bottomTarget := g.CardBuffer.Cards[x_i]
|
||||
g.CardBuffer.Cards = append(g.CardBuffer.Cards[:x_i], g.CardBuffer.Cards[x_i+1:]...)
|
||||
currD.Bottom([]*Card{bottomTarget})
|
||||
currD.Bottom(DeckFromCards([]*Card{bottomTarget}))
|
||||
g.BottomBuffer = g.BottomBuffer - 1
|
||||
if g.BottomBuffer > 0 {
|
||||
return g.CardBuffer
|
||||
|
@ -243,7 +243,7 @@ func OracleEffect(c *Card, g *Game) {
|
||||
if c.Owner != SentinalID && c.Owner != ScourgeID {
|
||||
log.Println("card draw effect was played but with no owner?")
|
||||
} else {
|
||||
g.CardBuffer = DeckFromCards(g.GetDeck(c.Owner).Scry(1))
|
||||
g.CardBuffer = g.GetDeck(c.Owner).Scry(1)
|
||||
}
|
||||
g.CanDraw = true
|
||||
g.HasDrawn = false
|
||||
@ -300,7 +300,7 @@ func OraclePlayerEffect(p *Player, g *Game) {
|
||||
g.HasDrawn = false
|
||||
RemovePlayerEffect(e.Owner, p)
|
||||
case 2:
|
||||
g.CardBuffer = DeckFromCards(g.GetDeck(p.Id).Scry(1))
|
||||
g.CardBuffer = g.GetDeck(p.Id).Scry(1)
|
||||
g.CanDraw = true
|
||||
g.HasDrawn = false
|
||||
RemovePlayerEffect(e.Owner, p)
|
||||
|
Loading…
Reference in New Issue
Block a user