void Awake() { IdWithType res; IdWithType.TryParse(Id, out res); idWithType = res; }
// イベント:必ず認証完了 void ReceivedEvent(ISession session, byte[] bytes) { var c = Communication.Create(bytes); switch (c.command) { case Command.Admin: var message = c.Unpack <string>(); session.Send(Communication.Create(Command.Admin).Pack(message).GetBytes()); break; case Command.GetBall: var ball = c.Unpack <IdWithType>(); MissionLogic.CheckBallGet(GameEnities.Instance.missions, session.Userdata().MissionStates, ball); LoggerService.Locator.Info("Rece : Command.GetBall {0}", IdWithType.GetId(ball)); SendMissionStates(session); break; case Command.MissionState: SendMissionStates(session); break; } }
// ボール取得時の条件確認 static public void CheckBallGet(Mission[] missions, List <MissionState> states, IdWithType ball) { EachOrderMission(missions, states, (mission, state) => { if (!state.IsOrder()) { return; // 受注中以外なら弾く } EachCondition(mission, IdType.Ball, (condition, index) => { if (condition.ID == ball) { state.Conditions[index] = Math.Min(condition.Value, state.Conditions[index] + 1); } }); }); CheckClear(missions, states); CheckOrder(missions, states); }