本文整理汇总了Golang中github.com/zond/godip/common.Validator.Dislodged方法的典型用法代码示例。如果您正苦于以下问题:Golang Validator.Dislodged方法的具体用法?Golang Validator.Dislodged怎么用?Golang Validator.Dislodged使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/zond/godip/common.Validator
的用法示例。
在下文中一共展示了Validator.Dislodged方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Options
func (self *disband) Options(v dip.Validator, nation dip.Nation, src dip.Province) (result dip.Options) {
if v.Phase().Type() == cla.Adjustment {
if v.Graph().Has(src) {
if unit, actualSrc, ok := v.Unit(src); ok {
if unit.Nation == nation {
if _, _, balance := cla.AdjustmentStatus(v, unit.Nation); balance < 0 {
result = dip.Options{
dip.SrcProvince(actualSrc): nil,
}
}
}
}
}
} else if v.Phase().Type() == cla.Retreat {
if v.Graph().Has(src) {
if unit, actualSrc, ok := v.Dislodged(src); ok {
if unit.Nation == nation {
result = dip.Options{
dip.SrcProvince(actualSrc): nil,
}
}
}
}
}
return
}
示例2: validateRetreatPhase
func (self *move) validateRetreatPhase(v dip.Validator) error {
if !v.Graph().Has(self.targets[0]) {
return cla.ErrInvalidSource
}
if !v.Graph().Has(self.targets[1]) {
return cla.ErrInvalidDestination
}
if self.targets[0] == self.targets[1] {
return cla.ErrIllegalMove
}
var unit dip.Unit
var ok bool
if unit, self.targets[0], ok = v.Dislodged(self.targets[0]); !ok {
return cla.ErrMissingUnit
}
var err error
if self.targets[1], err = cla.AnyMovePossible(v, unit.Type, self.targets[0], self.targets[1], unit.Type == cla.Army, false, false); err != nil {
return cla.ErrIllegalMove
}
if _, _, ok := v.Unit(self.targets[1]); ok {
return cla.ErrIllegalRetreat
}
if v.Bounce(self.targets[0], self.targets[1]) {
return cla.ErrIllegalRetreat
}
return nil
}
示例3: Options
func (self *move) Options(v dip.Validator, nation dip.Nation, src dip.Province) (result dip.Options) {
if v.Phase().Type() == cla.Retreat {
if !self.flags[cla.ViaConvoy] {
if v.Graph().Has(src) {
if unit, actualSrc, ok := v.Dislodged(src); ok {
if unit.Nation == nation {
for _, dst := range cla.PossibleMoves(v, src, false, true) {
if _, _, foundUnit := v.Unit(dst); !foundUnit {
if !v.Bounce(src, dst) {
if result == nil {
result = dip.Options{}
}
if result[dip.SrcProvince(actualSrc)] == nil {
result[dip.SrcProvince(actualSrc)] = dip.Options{}
}
result[dip.SrcProvince(actualSrc)][dst] = nil
}
}
}
}
}
}
}
} else if v.Phase().Type() == cla.Movement {
if v.Graph().Has(src) {
if unit, actualSrc, ok := v.Unit(src); ok {
if unit.Nation == nation {
if !self.flags[cla.ViaConvoy] || unit.Type == cla.Army {
for _, dst := range cla.PossibleMoves(v, src, true, false) {
if !self.flags[cla.ViaConvoy] {
if result == nil {
result = dip.Options{}
}
if result[dip.SrcProvince(actualSrc)] == nil {
result[dip.SrcProvince(actualSrc)] = dip.Options{}
}
result[dip.SrcProvince(actualSrc)][dst] = nil
} else {
if cp := cla.AnyConvoyPath(v, src, dst, false, nil); len(cp) > 1 {
if result == nil {
result = dip.Options{}
}
if result[dip.SrcProvince(actualSrc)] == nil {
result[dip.SrcProvince(actualSrc)] = dip.Options{}
}
result[dip.SrcProvince(actualSrc)][dst] = nil
}
}
}
}
}
}
}
}
return
}
示例4: validateRetreatPhase
func (self *disband) validateRetreatPhase(v dip.Validator) error {
if !v.Graph().Has(self.targets[0]) {
return cla.ErrInvalidTarget
}
var ok bool
if _, self.targets[0], ok = v.Dislodged(self.targets[0]); !ok {
return cla.ErrMissingUnit
}
return nil
}