func (self *Graph) Coasts(prov common.Province) (result []common.Province) { if node, ok := self.nodes[prov.Super()]; ok { for _, sub := range node.subs { result = append(result, sub.getName()) } } return }
func (self *State) AddBounce(src, dst common.Province) { if existing, ok := self.bounces[dst.Super()]; ok { existing[src.Super()] = true } else { self.bounces[dst.Super()] = map[common.Province]bool{ src.Super(): true, } } }
func (self *State) Bounce(src, dst common.Province) bool { if sources, ok := self.bounces[dst.Super()]; ok { if dislodger, ok := self.dislodgers[dst.Super()]; ok { if len(sources) == 1 && sources[dislodger.Super()] { return false } } return true } if self.dislodgers[dst.Super()] == src.Super() { return true } return false }
func (self *Graph) SC(n common.Province) (result *common.Nation) { if node, ok := self.nodes[n.Super()]; ok { result = node.sc } return }
func (self *State) SetDislodger(attacker, victim common.Province) { self.dislodgers[attacker.Super()] = victim.Super() }