示例#1
0
 /// <summary>
 /// 选择飞机消息数据处理
 /// </summary>
 /// <param name="data"></param>
 public void OnChoosePlane(ISFSObject data)
 {
     ChooseResult = new ChoosePlaneResult();
     if (data.ContainsKey(ConstantData.KeyChangeInfo))
     {
         var infoArray = data.GetSFSArray(ConstantData.KeyChangeInfo);
         var count     = infoArray.Count;
         ChooseResult.PlaneDataDic = new Dictionary <int, Dictionary <int, PludoPlaneData> >();
         for (int i = 0; i < count; i++)
         {
             var dataItem    = infoArray.GetSFSObject(i);
             var seat        = dataItem.GetInt(RequestKey.KeySeat);
             var playerColor = GetPlayerInfo <PludoPlayerInfo>(seat, true).PlayerColor;
             var planeDic    = new Dictionary <int, PludoPlaneData>();
             for (int j = 0; j < ConstantData.ValuePlaneCount; j++)
             {
                 if (dataItem.ContainsKey(j.ToString()))
                 {
                     var jData     = dataItem.GetSFSObject(j.ToString());
                     var planeData = new PludoPlaneData(jData, playerColor);
                     planeDic.Add(planeData.DataId, planeData);
                 }
             }
             ChooseResult.PlaneDataDic.Add(seat, planeDic);
         }
     }
     SfsHelper.Parse(data, ConstantData.KeyCurrentPlayer, ref ChooseResult.OperationSeat);
     SfsHelper.Parse(data, ConstantData.KeyPlaneId, ref ChooseResult.OperationPlaneId);
 }
示例#2
0
        /// <summary>
        /// 飞机状态变化
        /// </summary>
        /// <param name="choosePlaneData"></param>
        private void OnPlaneStateChange(ChoosePlaneResult choosePlaneData)
        {
            var curOpSeat    = choosePlaneData.OperationSeat;
            var curOpPlaneId = choosePlaneData.OperationPlaneId;
            var curControl   = ControlList.Find(item => item.Seat == curOpSeat);

            if (curControl)
            {
                var curPlayerPlanes = choosePlaneData.PlaneDataDic[curOpSeat];
                var newPlaneData    = curPlayerPlanes[curOpPlaneId];
                if (newPlaneData.CheckPlaneInMulState((int)EnumPlaneStatus.Collide | (int)EnumPlaneStatus.Attack))
                {
                    OnAttackState(choosePlaneData.PlaneDataDic, curControl, newPlaneData, delegate
                    {
                        CollidePlanes(choosePlaneData.PlaneDataDic);
                    });
                }
                else if (newPlaneData.CheckPlaneInMulState((int)EnumPlaneStatus.Attack | (int)EnumPlaneStatus.Fit))
                {
                    OnAttackState(choosePlaneData.PlaneDataDic, curControl, newPlaneData, delegate
                    {
                        OnFitState(curPlayerPlanes, curControl, newPlaneData, false);
                    });
                }
                else
                {
                    if (newPlaneData.CheckPlaneState(EnumPlaneStatus.Finish))
                    {
                        curControl.OnPlaneFinish(newPlaneData);
                        return;
                    }
                    if (newPlaneData.CheckPlaneState(EnumPlaneStatus.Collide))
                    {
                        OnCollideState(choosePlaneData.PlaneDataDic, curControl, newPlaneData);
                        return;
                    }
                    if (newPlaneData.CheckPlaneState(EnumPlaneStatus.Attack))
                    {
                        OnAttackState(choosePlaneData.PlaneDataDic, curControl, newPlaneData);
                        return;
                    }
                    if (newPlaneData.CheckPlaneState(EnumPlaneStatus.Fit))
                    {
                        OnFitState(curPlayerPlanes, curControl, newPlaneData);
                        return;
                    }
                    if (newPlaneData.CheckPlaneState(EnumPlaneStatus.Fly))
                    {
                        curControl.OnPlaneMove(newPlaneData);
                        return;
                    }
                    if (newPlaneData.CheckPlaneState(EnumPlaneStatus.Ready))
                    {
                        curControl.OnPlaneReady(newPlaneData);
                    }
                }
            }
        }