/// <summary> /// AgentActivityDatas を初期化します。 /// </summary> /// <param name="agentStatusCode">指定した AgentStatusCode で初期化します。</param> public AgentsActivityData(AgentStatusCode agentStatusCode) { Array[0, 0] = new AgentActivityData(agentStatusCode); Array[0, 1] = new AgentActivityData(agentStatusCode); Array[1, 0] = new AgentActivityData(agentStatusCode); Array[1, 1] = new AgentActivityData(agentStatusCode); }
/// <summary> /// エージェントステータスコードの属性を可能な限り ToYouHadCollisionsWithYourselfAndYouFailed に変換します。 /// </summary> /// <param name="agentStatusCode"></param> /// <returns></returns> public static AgentStatusCode ToYouHadCollisionsWithYourselfAndYouFailed(this AgentStatusCode agentStatusCode) { switch (agentStatusCode.ToAction()) { case AgentStatusCodeAction.Movement: return(AgentStatusCode.YouHadCollisionsWithYourselfAndYouFailedToMoveBecauseYouAreThereAlready); case AgentStatusCodeAction.RemovementOurTile: return(AgentStatusCode.YouHadCollisionsWithYourselfAndYouFailedToRemoveTilesFromYourTeamBecauseYouAreThere); } throw new ArgumentOutOfRangeException(); }
/// <summary> /// エージェントステータスコードの属性を可能な限り FailedInMovingByTryingToGoOutOfTheField に変換します。 /// </summary> /// <param name="agentStatusCode"></param> /// <returns></returns> public static AgentStatusCode ToFailedInMovingByTryingToGoOutOfTheField(this AgentStatusCode agentStatusCode) { switch (agentStatusCode.ToAction()) { case AgentStatusCodeAction.Movement: return(AgentStatusCode.FailedInMovingByTryingToGoOutOfTheField); case AgentStatusCodeAction.RemovementOurTile: return(AgentStatusCode.FailedInRemovingOurTileByTryingToGoOutOfTheField); case AgentStatusCodeAction.RemovementOpponentTile: return(AgentStatusCode.FailedInRemovingOpponentTileByTryingToGoOutOfTheField); } throw new ArgumentOutOfRangeException(); }
/// <summary> /// エージェントステータスコードの属性を可能な限り ToFailedByBeingNotMooreNeighborhood に変換します。 /// </summary> /// <param name="agentStatusCode"></param> /// <returns></returns> public static AgentStatusCode ToFailedByBeingNotMooreNeighborhood(this AgentStatusCode agentStatusCode) { switch (agentStatusCode.ToAction()) { case AgentStatusCodeAction.Movement: return(AgentStatusCode.FailedInMovingByBeingNotMooreNeighborhood); case AgentStatusCodeAction.RemovementOurTile: return(AgentStatusCode.FailedInRemovingOurTileByBeingNotMooreNeighborhood); case AgentStatusCodeAction.RemovementOpponentTile: return(AgentStatusCode.FailedInRemovingOpponentTileByBeingNotMooreNeighborhood); } throw new ArgumentOutOfRangeException(); }
/// <summary> /// エージェントステータスコードの属性を求めます。 /// </summary> /// <param name="agentStatusCode">対象のエージェントステータスコード</param> /// <returns>エージェントステータスコードの属性</returns> public static AgentStatusCodeAttribute ToAttribute(this AgentStatusCode agentStatusCode) { if (Enum.GetName(typeof(AgentStatusCode), agentStatusCode).IndexOf("Request") == 0) { return(AgentStatusCodeAttribute.Request); } if (Enum.GetName(typeof(AgentStatusCode), agentStatusCode).IndexOf("SucceededIn") == 0) { return(AgentStatusCodeAttribute.Succeeded); } if (Enum.GetName(typeof(AgentStatusCode), agentStatusCode).IndexOf("FailedIn") == 0) { return(AgentStatusCodeAttribute.Failed); } return(AgentStatusCodeAttribute.Undefined); }
/// <summary> /// エージェントステータスコードの属性を可能な限りリクエストに変換します。 /// </summary> /// <param name="agentStatusCode"></param> /// <returns></returns> public static AgentStatusCode ToRequest(this AgentStatusCode agentStatusCode) { if (agentStatusCode == AgentStatusCode.SucceededNotToDoAnything) { return(AgentStatusCode.RequestNotToDoAnything); } switch (agentStatusCode.ToAction()) { case AgentStatusCodeAction.Movement: return(AgentStatusCode.RequestMovement); case AgentStatusCodeAction.RemovementOurTile: return(AgentStatusCode.RequestRemovementOurTile); case AgentStatusCodeAction.RemovementOpponentTile: return(AgentStatusCode.RequestRemovementOpponentTile); } throw new ArgumentOutOfRangeException(); }
/// <summary> /// エージェントステータスコードのアクションを求めます。 /// </summary> /// <param name="agentStatusCode">対象のエージェントステータスコード</param> /// <returns>エージェントステータスコードのアクション</returns> public static AgentStatusCodeAction ToAction(this AgentStatusCode agentStatusCode) { if (Enum.GetName(typeof(AgentStatusCode), agentStatusCode).IndexOf("InMoving") >= 0 || Enum.GetName(typeof(AgentStatusCode), agentStatusCode).IndexOf("Movement") >= 0) { return(AgentStatusCodeAction.Movement); } if (Enum.GetName(typeof(AgentStatusCode), agentStatusCode).IndexOf("InRemovingOurTile") >= 0 || Enum.GetName(typeof(AgentStatusCode), agentStatusCode).IndexOf("RemovementOurTile") >= 0) { return(AgentStatusCodeAction.RemovementOurTile); } if (Enum.GetName(typeof(AgentStatusCode), agentStatusCode).IndexOf("InRemovingOpponentTile") >= 0 || Enum.GetName(typeof(AgentStatusCode), agentStatusCode).IndexOf("RemovementOpponentTile") >= 0) { return(AgentStatusCodeAction.RemovementOpponentTile); } return(AgentStatusCodeAction.Other); }
/// <summary> /// 初期化を行います /// </summary> /// <param name="agentStatusData">エージェントが行動をどこに起こしたかを表します</param> /// <param name="destination">エージェントが行動した結果の状態を表します</param> public AgentActivityData(AgentStatusCode agentStatusData, Coordinate destination) { AgentStatusData = agentStatusData; Destination = destination; }
/// <summary> /// 初期化を行います /// </summary> /// <param name="agentStatusData">エージェントが行動をどこに起こしたかを表します</param> public AgentActivityData(AgentStatusCode agentStatusData) { AgentStatusData = agentStatusData; Destination = new Coordinate(); }
/// <summary> /// 初期化を行います /// </summary> public AgentActivityData(AgentActivityData agentActivityData) { AgentStatusData = agentActivityData.AgentStatusData; Destination = new Coordinate(agentActivityData.Destination); }
/// <summary> /// 初期化を行います /// </summary> public AgentActivityData() { AgentStatusData = AgentStatusCode.NotDoneAnything; Destination = new Coordinate(); }
/// <summary> /// エージェントの行動が相手のチームからタイルを取り除くことであることを判定します /// </summary> /// <param name="agentStatusData">対象となるエージェントの行動の状態</param> /// <returns>行動が相手のチームからタイルを取り除くなら真が返され、そうでなければ偽が返されます。</returns> public static bool IsRemovementOpponentTile(this AgentStatusCode agentStatusData) => agentStatusData.ToAction() == AgentStatusCodeAction.RemovementOpponentTile;
/// <summary> /// エージェントの行動が移動であることを判定します /// </summary> /// <param name="agentStatusData">対象となるエージェントの行動の状態</param> /// <returns>行動が移動であるなら真が返され、そうでなければ偽が返されます。</returns> public static bool IsMovement(this AgentStatusCode agentStatusData) => agentStatusData.ToAction() == AgentStatusCodeAction.Movement;
/// <summary> /// エージェントの行動が失敗したことを判定します /// </summary> /// <param name="agentStatusData">対象となるエージェントの行動の状態</param> /// <returns>状態がリクエストなら真が返され、そうでなければ偽が返されます。</returns> public static bool IsFailed(this AgentStatusCode agentStatusData) => agentStatusData.ToAttribute() == AgentStatusCodeAttribute.Failed;
/// <summary> /// エージェントの行動が成功したことを判定します /// </summary> /// <param name="agentStatusData">対象となるエージェントの行動の状態</param> /// <returns>状態がリクエストなら真が返され、そうでなければ偽が返されます。</returns> public static bool IsSucceeded(this AgentStatusCode agentStatusData) => agentStatusData.ToAttribute() == AgentStatusCodeAttribute.Succeeded;
/// <summary> /// エージェントの行動の状態がリクエストであることを判定します /// </summary> /// <param name="agentStatusData">対象となるエージェントの行動の状態</param> /// <returns>状態がリクエストなら真が返され、そうでなければ偽が返されます。</returns> public static bool IsRequest(this AgentStatusCode agentStatusData) => agentStatusData.ToAttribute() == AgentStatusCodeAttribute.Request;