private BoardGame.AIPlayer getRivalPlayer(int boardGamePlayerId, BoardGame.UserPlayer userPlayer) { if (null == userPlayer) { Log.Error("not found board game.user player"); return(null); } int intellect = 0, tactic = 0, leadership = 0, grace = 0, morality = 0, goodness = 0; switch (_valuationBasis) { case BoardGame.EValuationBasis.Tricker: intellect = getRivalStat(userPlayer.Intellect, Def.BOARDGAME_RIVAL_AI_STAT_MIN_RATIO, Def.BOARDGAME_RIVAL_AI_STAT_MAX_RATIO); tactic = getRivalStat(userPlayer.Tactic, Def.BOARDGAME_RIVAL_AI_STAT_MIN_RATIO, Def.BOARDGAME_RIVAL_AI_STAT_MAX_RATIO); leadership = getRivalStat(userPlayer.Leadership, Def.BOARDGAME_RIVAL_AI_STAT_MIN_RATIO, Def.BOARDGAME_RIVAL_AI_STAT_MAX_RATIO); break; case BoardGame.EValuationBasis.Politician: grace = getRivalStat(userPlayer.Grace, Def.BOARDGAME_RIVAL_AI_STAT_MIN_RATIO, Def.BOARDGAME_RIVAL_AI_STAT_MAX_RATIO); morality = getRivalStat(userPlayer.Morality, Def.BOARDGAME_RIVAL_AI_STAT_MIN_RATIO, Def.BOARDGAME_RIVAL_AI_STAT_MAX_RATIO); goodness = getRivalStat(userPlayer.Goodness, Def.BOARDGAME_RIVAL_AI_STAT_MIN_RATIO, Def.BOARDGAME_RIVAL_AI_STAT_MAX_RATIO); break; default: Log.Error("invalid BoardGame.EValuationBasis"); break; } return(new BoardGame.AIPlayer(Manager.Instance.Object.BoardGameMode, boardGamePlayerId , intellect, tactic, leadership, grace, morality, goodness)); }
protected override IEnumerator ExamRoutine() { DialogueEvent.Invoke(NPCId, _exam.NPCAlarm); yield return(null); if (IsFirst) { DialogueEvent.Invoke(NPCId, _exam.NPCProcessMethod); yield return(null); DialogueEvent.Invoke(NPCId, _exam.NPCEvaluateMethod); yield return(null); } string startMsg = string.Format(_exam.NPCStartPlayersName, _userName, _rivalName); DialogueEvent.Invoke(NPCId, startMsg); yield return(null); DialogueEvent.Invoke(Def.EXAM_USER_START); yield return(null); // BoardGame.UserPlayer userPlayer = new BoardGame.UserPlayer(Manager.Instance.Object.BoardGameMode); BoardGame.AIPlayer aiPlayer = getRivalPlayer(_rival.boardGamePlayerId, userPlayer); Manager.Instance.Object.BoardGameMode.Start(_valuationBasis, userPlayer, aiPlayer); yield return(null); Manager.Instance.Object.BoardGameMode.EndEvent.Detach(onEnd); if (IsFirst) { DialogueEvent.Invoke(_userFirstResultLines); yield return(null); Manager.Instance.Object.StoryMode.LoadScenario(_rival.firstMeetScenarioPath); } else { DialogueEvent.Invoke(_rival, _rivalResultLines); yield return(null); DialogueEvent.Invoke(_userResultLines); yield return(null); } }