()
| 79 | } |
| 80 | |
| 81 | func (stack *Stack) PostUpdate() { |
| 82 | |
| 83 | if stack.Card.Numberable() { |
| 84 | |
| 85 | numbers := []int{0} |
| 86 | |
| 87 | if !stack.Numerous() { |
| 88 | stack.Number = numbers |
| 89 | } else { |
| 90 | |
| 91 | if stack.TopNumberable() == nil { |
| 92 | return |
| 93 | } |
| 94 | |
| 95 | indentation := stack.TopNumberable().Rect.X |
| 96 | |
| 97 | topHalf := append(stack.Head(), stack.Card) |
| 98 | |
| 99 | for _, card := range topHalf { |
| 100 | |
| 101 | if !card.Numberable() { |
| 102 | continue |
| 103 | } |
| 104 | |
| 105 | diff := int(card.Rect.X - indentation) |
| 106 | |
| 107 | if diff > 0 { |
| 108 | for i := 0; i < diff; i += int(globals.GridSize) { |
| 109 | numbers = append(numbers, 0) |
| 110 | } |
| 111 | indentation = card.Rect.X |
| 112 | } else if diff < 0 { |
| 113 | for i := 0; i > diff; i -= int(globals.GridSize) { |
| 114 | if len(numbers) > 1 { |
| 115 | numbers = numbers[:len(numbers)-1] |
| 116 | } |
| 117 | } |
| 118 | indentation = card.Rect.X |
| 119 | } |
| 120 | |
| 121 | numbers[len(numbers)-1]++ |
| 122 | |
| 123 | if card == stack.Card { |
| 124 | stack.Number = numbers |
| 125 | break |
| 126 | } |
| 127 | |
| 128 | } |
| 129 | |
| 130 | } |
| 131 | |
| 132 | } |
| 133 | |
| 134 | } |
| 135 | |
| 136 | // Head returns the rest of the Stack from this Card up (excluding this Card). The slice is sorted vertically, starting with the top of the stack. |
| 137 | func (stack *Stack) Head() []*Card { |
no test coverage detected