func Set(d *kol.DB, at time.Duration) (err error) { epoch := &Epoch{ Id: kol.Id(epochKey), At: at, } err = d.Set(epoch) return }
func (self *Member) ReliabilityDelta(d *kol.DB, i int) (err error) { user := &user.User{Id: self.UserId} if err = d.Get(user); err != nil { return } if i > 0 { user.HeldDeadlines += i } else { user.MissedDeadlines -= i } if err = d.Set(user); err != nil { return } return }
func (self *Game) allocate(d *kol.DB, phase *Phase) (err error) { members, err := self.Members(d) if err != nil { return } switch self.AllocationMethod { case common.RandomString: for memberIndex, nationIndex := range rand.Perm(len(members)) { members[memberIndex].Nation = common.VariantMap[self.Variant].Nations[nationIndex] } case common.PreferencesString: prefs := make([][]dip.Nation, len(members)) for index, member := range members { prefs[index] = member.PreferredNations } for index, nation := range optimizePreferences(prefs) { members[index].Nation = nation } default: return fmt.Errorf("Unknown allocation method %v", self.AllocationMethod) } for index, _ := range members { opts := dip.Options{} if opts, err = phase.Options(members[index].Nation); err != nil { return } members[index].Options = opts if len(opts) == 0 { members[index].Committed = true members[index].NoOrders = true } else { members[index].Committed = false members[index].NoOrders = false } if err = d.Set(&members[index]); err != nil { return } } return }