Esempio n. 1
0
File: graph.go Progetto: arlm/godip
func (self *Graph) edges(n common.Province) (result map[common.Province]*edge) {
	p, c := n.Split()
	if node, ok := self.nodes[p]; ok {
		if sub, ok := node.subs[c]; ok {
			result = sub.edges
		}
	}
	return
}
Esempio n. 2
0
File: graph.go Progetto: arlm/godip
func (self *Graph) Has(n common.Province) (result bool) {
	p, c := n.Split()
	if node, ok := self.nodes[p]; ok {
		if _, ok := node.subs[c]; ok {
			result = true
		}
	}
	return
}
Esempio n. 3
0
File: graph.go Progetto: arlm/godip
func (self *Graph) Flags(n common.Province) (result map[common.Flag]bool) {
	p, c := n.Split()
	if node, ok := self.nodes[p]; ok {
		if sub, ok := node.subs[c]; ok {
			result = sub.flags
		}
	}
	return
}
Esempio n. 4
0
File: graph.go Progetto: arlm/godip
func (self *Graph) Prov(n common.Province) *subNode {
	p, c := n.Split()
	if self.nodes[p] == nil {
		self.nodes[p] = &node{
			name:  p,
			subs:  make(map[common.Province]*subNode),
			graph: self,
		}
	}
	return self.nodes[p].sub(c)
}
Esempio n. 5
0
File: graph.go Progetto: arlm/godip
func (self *Graph) AllFlags(n common.Province) (result map[common.Flag]bool) {
	result = map[common.Flag]bool{}
	p, _ := n.Split()
	if node, ok := self.nodes[p]; ok {
		for _, sub := range node.subs {
			for flag, _ := range sub.flags {
				result[flag] = true
			}
		}
	}
	return
}
Esempio n. 6
0
File: state.go Progetto: arlm/godip
func (self *State) Order(prov common.Province) (o common.Order, p common.Province, ok bool) {
	if o, ok = self.orders[prov]; ok {
		p = prov
		return
	}
	sup, _ := prov.Split()
	if o, ok = self.orders[sup]; ok {
		p = sup
		return
	}
	for _, name := range self.graph.Coasts(prov) {
		if o, ok = self.orders[name]; ok {
			p = name
			return
		}
	}
	return
}
Esempio n. 7
0
File: state.go Progetto: arlm/godip
func (self *State) SupplyCenter(prov common.Province) (n common.Nation, p common.Province, ok bool) {
	if n, ok = self.supplyCenters[prov]; ok {
		p = prov
		return
	}
	sup, _ := prov.Split()
	if n, ok = self.supplyCenters[sup]; ok {
		p = sup
		return
	}
	for _, name := range self.graph.Coasts(prov) {
		if n, ok = self.supplyCenters[name]; ok {
			p = name
			return
		}
	}
	return
}
Esempio n. 8
0
File: state.go Progetto: arlm/godip
func (self *State) Unit(prov common.Province) (u common.Unit, p common.Province, ok bool) {
	if u, ok = self.units[prov]; ok {
		p = prov
		return
	}
	sup, _ := prov.Split()
	if u, ok = self.units[sup]; ok {
		p = sup
		return
	}
	for _, name := range self.graph.Coasts(prov) {
		if u, ok = self.units[name]; ok {
			p = name
			return
		}
	}
	return
}