package field import ( "image/color" ) // ────────────────────────────────────────────────────────────────────────────── // // MARK STRUCTURE // // ────────────────────────────────────────────────────────────────────────────── // type Mark struct { Cell *Cell Change *Change color color.Color } func (m *Mark) GetColor() color.Color { return m.color } // ────────────────────────────────────────────────────────────────────────────── // // CHANGE_ACTION TYPE // // ────────────────────────────────────────────────────────────────────────────── // type ChangeAction int const ( ActionSetNumber = iota ActionSetNote ActionRemoveNumber ActionRemoveNote ) // ────────────────────────────────────────────────────────────────────────────── // // CHANGE STRUCTURE // // ────────────────────────────────────────────────────────────────────────────── // type ExternalChange struct { Cell *Cell Marks []Mark Action ChangeAction Value int From int TriggerdBy string //strategy or manuell } // ────────────────────────────────────────────────────────────────────────────── // // CHANGE STRUCTURE // // ────────────────────────────────────────────────────────────────────────────── // type Change struct { Cell *Cell marks []Mark action ChangeAction value int from int triggerdBy string //strategy or manuell } // ────────────────────────────────────────────────────────────────────────────── // // GETTER // // ────────────────────────────────────────────────────────────────────────────── // func (c *Change) GetMarks() []Mark { return c.marks } func (c *Change) GetAction() ChangeAction { return c.action } func (c *Change) GetTo() int { return c.value } func (c *Change) GetFrom() int { return c.from } func (c *Change) GetTriggeredBy() string { return c.triggerdBy } // ────────────────────────────────────────────────────────────────────────────── // // ??? // // ────────────────────────────────────────────────────────────────────────────── // func (c *Change) do() { switch c.action { case ActionSetNumber: c.Cell.number = c.value case ActionSetNote: c.Cell.Notes.numbers = append(c.Cell.Notes.numbers, c.value) case ActionRemoveNumber: c.Cell.number = 0 case ActionRemoveNote: for i, existing := range c.Cell.Notes.numbers { if existing == c.from { c.Cell.Notes.numbers = append(c.Cell.Notes.numbers[:i], c.Cell.Notes.numbers[i+1:]...) return } } } }