コード例 #1
0
        public HashSet <IsGoCondition> ValidStart(int deck_rid, int mission_id, int tankerNum)
        {
            HashSet <IsGoCondition> ret         = new HashSet <IsGoCondition>();
            Mst_mission2            mst_mission = null;

            if (mission_id > 0)
            {
                if (!Mst_DataManager.Instance.Mst_mission.TryGetValue(mission_id, out mst_mission))
                {
                    ret.Add(IsGoCondition.Invalid);
                    return(ret);
                }
            }
            else
            {
                if (mission_id != -1 && mission_id != -2)
                {
                    ret.Add(IsGoCondition.Invalid);
                    return(ret);
                }
                List <Mst_mission2> supportResistedData = Mst_DataManager.Instance.GetSupportResistedData(Comm_UserDatas.Instance.User_deck[deck_rid].Area_id);
                mst_mission = ((mission_id != -1) ? supportResistedData[1] : supportResistedData[0]);
            }
            Mem_deck value = null;

            if (!Comm_UserDatas.Instance.User_deck.TryGetValue(deck_rid, out value))
            {
                ret.Add(IsGoCondition.InvalidDeck);
                return(ret);
            }
            if (value.Ship.Count() == 0)
            {
                ret.Add(IsGoCondition.InvalidDeck);
                return(ret);
            }
            if (value.MissionState != 0)
            {
                ret.Add(IsGoCondition.Mission);
            }
            if (value.IsActionEnd)
            {
                ret.Add(IsGoCondition.ActionEndDeck);
                return(ret);
            }
            Mem_ship value2 = null;

            if (!Comm_UserDatas.Instance.User_ship.TryGetValue(value.Ship[0], out value2))
            {
                ret.Add(IsGoCondition.Invalid);
                return(ret);
            }
            if (value2.Get_DamageState() == DamageState.Taiha)
            {
                ret.Add(IsGoCondition.FlagShipTaiha);
            }
            Mem_deck mem_deck = Comm_UserDatas.Instance.User_deck.Values.FirstOrDefault((Mem_deck x) => (x.Mission_id == mission_id) ? true : false);

            if (mem_deck != null)
            {
                ret.Add(IsGoCondition.OtherDeckMissionRunning);
            }
            int destroy_ship = 0;

            value.Ship.getMemShip().ForEach(delegate(Mem_ship deck_ship)
            {
                if (deck_ship.Stype == 2)
                {
                    destroy_ship++;
                }
                Mst_ship mst_ship = Mst_DataManager.Instance.Mst_ship[deck_ship.Ship_id];
                if (deck_ship.Fuel <= 0 || deck_ship.Bull <= 0)
                {
                    ret.Add(IsGoCondition.NeedSupply);
                }
                if (mst_mission.IsSupportMission() && (deck_ship.Fuel < mst_ship.Fuel_max || deck_ship.Bull < mst_ship.Bull_max))
                {
                    ret.Add(IsGoCondition.ReqFullSupply);
                }
                if (Comm_UserDatas.Instance.User_ndock.Values.Any((Mem_ndock ndock) => ndock.Ship_id == deck_ship.Rid))
                {
                    ret.Add(IsGoCondition.HasRepair);
                }
                if (deck_ship.IsBlingShip())
                {
                    ret.Add(IsGoCondition.HasBling);
                }
            });
            if (mst_mission.IsSupportMission() && destroy_ship < 2)
            {
                ret.Add(IsGoCondition.NecessaryStype);
            }
            List <Mem_tanker> freeTanker = Mem_tanker.GetFreeTanker(Comm_UserDatas.Instance.User_tanker);

            if (freeTanker.Count < tankerNum)
            {
                ret.Add(IsGoCondition.Tanker);
            }
            return(ret);
        }
コード例 #2
0
        public HashSet <IsGoCondition> ValidStart(int deck_rid, int mission_id, int tankerNum)
        {
            HashSet <IsGoCondition> ret         = new HashSet <IsGoCondition>();
            Mst_mission2            mst_mission = null;

            if (mission_id > 0)
            {
                if (!Mst_DataManager.Instance.Mst_mission.TryGetValue(mission_id, ref mst_mission))
                {
                    ret.Add(IsGoCondition.Invalid);
                    return(ret);
                }
            }
            else
            {
                if (mission_id != -1 && mission_id != -2)
                {
                    ret.Add(IsGoCondition.Invalid);
                    return(ret);
                }
                List <Mst_mission2> supportResistedData = Mst_DataManager.Instance.GetSupportResistedData(Comm_UserDatas.Instance.User_deck.get_Item(deck_rid).Area_id);
                mst_mission = ((mission_id != -1) ? supportResistedData.get_Item(1) : supportResistedData.get_Item(0));
            }
            Mem_deck mem_deck = null;

            if (!Comm_UserDatas.Instance.User_deck.TryGetValue(deck_rid, ref mem_deck))
            {
                ret.Add(IsGoCondition.InvalidDeck);
                return(ret);
            }
            if (mem_deck.Ship.Count() == 0)
            {
                ret.Add(IsGoCondition.InvalidDeck);
                return(ret);
            }
            if (mem_deck.MissionState != MissionStates.NONE)
            {
                ret.Add(IsGoCondition.Mission);
            }
            if (mem_deck.IsActionEnd)
            {
                ret.Add(IsGoCondition.ActionEndDeck);
                return(ret);
            }
            Mem_ship mem_ship = null;

            if (!Comm_UserDatas.Instance.User_ship.TryGetValue(mem_deck.Ship[0], ref mem_ship))
            {
                ret.Add(IsGoCondition.Invalid);
                return(ret);
            }
            if (mem_ship.Get_DamageState() == DamageState.Taiha)
            {
                ret.Add(IsGoCondition.FlagShipTaiha);
            }
            Mem_deck mem_deck2 = Enumerable.FirstOrDefault <Mem_deck>(Comm_UserDatas.Instance.User_deck.get_Values(), (Mem_deck x) => x.Mission_id == mission_id);

            if (mem_deck2 != null)
            {
                ret.Add(IsGoCondition.OtherDeckMissionRunning);
            }
            int destroy_ship = 0;

            mem_deck.Ship.getMemShip().ForEach(delegate(Mem_ship deck_ship)
            {
                if (deck_ship.Stype == 2)
                {
                    destroy_ship++;
                }
                Mst_ship mst_ship = Mst_DataManager.Instance.Mst_ship.get_Item(deck_ship.Ship_id);
                if (deck_ship.Fuel <= 0 || deck_ship.Bull <= 0)
                {
                    ret.Add(IsGoCondition.NeedSupply);
                }
                if (mst_mission.IsSupportMission() && (deck_ship.Fuel < mst_ship.Fuel_max || deck_ship.Bull < mst_ship.Bull_max))
                {
                    ret.Add(IsGoCondition.ReqFullSupply);
                }
                if (Enumerable.Any <Mem_ndock>(Comm_UserDatas.Instance.User_ndock.get_Values(), (Mem_ndock ndock) => ndock.Ship_id == deck_ship.Rid))
                {
                    ret.Add(IsGoCondition.HasRepair);
                }
                if (deck_ship.IsBlingShip())
                {
                    ret.Add(IsGoCondition.HasBling);
                }
            });
            if (mst_mission.IsSupportMission() && destroy_ship < 2)
            {
                ret.Add(IsGoCondition.NecessaryStype);
            }
            List <Mem_tanker> freeTanker = Mem_tanker.GetFreeTanker(Comm_UserDatas.Instance.User_tanker);

            if (freeTanker.get_Count() < tankerNum)
            {
                ret.Add(IsGoCondition.Tanker);
            }
            return(ret);
        }