public ServiceResult(ResultKinds kind, T result, string warning, ExceptionDescriptions exceptionDescriptions) { Result = result; ExceptionDescriptions = exceptionDescriptions; Kind = kind; WarningDescription = warning; }
// set result, and remember current player if win or loss void SetMoveResult(ResultKinds result) { if (result == ResultKinds.Count) { // count means that player with highest count wins var ap = _gamedef.ActivePlayers.ToArray(); if (ap.Length != 2) { throw Error.Assert("player count"); } var counts = ap.Select(p => PiecesCount(p)).ToArray(); _result = (counts[0] == counts[1]) ? ResultKinds.Draw : ResultKinds.Win; _resultplayer = (_result == ResultKinds.Draw) ? PlayerValue.None : (counts[0] > counts[1]) ? ap[0] : ap[1]; } else { _result = result; _resultplayer = (result == ResultKinds.None || result == ResultKinds.Draw) ? PlayerValue.None : CurrentPlayer; } // credit non-active result to previous active player; or else to current if (_resultplayer == LastMovePlayer) { _resultplayer = LastTurnPlayer; } else if (_resultplayer == MovePlayer) { _resultplayer = TurnPlayer; } }
void AddGoal(ResultKinds result, PlayerValue[] players, GoalCode condition) { foreach (var player in players) { _gamedef.AddGoal(result, player, condition); } }
ResultKinds ResultReverse(ResultKinds result) { return(result == ResultKinds.Win ? ResultKinds.Loss : result == ResultKinds.Loss ? ResultKinds.Win : result); }
internal void AddGoal(ResultKinds kind, PlayerValue player, GoalCode code) { Goals.Add(new GoalDef { Kind = kind, Player = player, Code = code }); }