MCPcopy Create free account
hub / github.com/SolarLune/masterplan / PostUpdate

Method PostUpdate

stack.go:81–134  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

79}
80
81func (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.
137func (stack *Stack) Head() []*Card {

Callers 1

UpdateMethod · 0.80

Calls 4

NumerousMethod · 0.95
TopNumberableMethod · 0.95
HeadMethod · 0.95
NumberableMethod · 0.80

Tested by

no test coverage detected