Ejemplo n.º 1
0
        public Api_Result <Mem_deck> Start(int deck_rid, int mission_id, int tankerNum)
        {
            Api_Result <Mem_deck> api_Result = new Api_Result <Mem_deck>();
            Mst_mission2          value      = null;

            if (mission_id > 0)
            {
                if (!Mst_DataManager.Instance.Mst_mission.TryGetValue(mission_id, out value))
                {
                    api_Result.state = Api_Result_State.Parameter_Error;
                    return(api_Result);
                }
            }
            else
            {
                List <Mst_mission2> supportResistedData = Mst_DataManager.Instance.GetSupportResistedData(Comm_UserDatas.Instance.User_deck[deck_rid].Area_id);
                value = ((mission_id != -1) ? supportResistedData[1] : supportResistedData[0]);
            }
            Mem_deck value2 = null;

            if (!Comm_UserDatas.Instance.User_deck.TryGetValue(deck_rid, out value2))
            {
                api_Result.state = Api_Result_State.Parameter_Error;
                return(api_Result);
            }
            if (mission_id > 0 && !Comm_UserDatas.Instance.User_missioncomp.ContainsKey(mission_id))
            {
                Mem_missioncomp mem_missioncomp = new Mem_missioncomp(mission_id, value.Maparea_id, MissionClearKinds.NOTCLEAR);
                mem_missioncomp.Insert();
            }
            if (!value2.MissionStart(value))
            {
                api_Result.state = Api_Result_State.Parameter_Error;
                return(api_Result);
            }
            if (tankerNum > 0)
            {
                IEnumerable <Mem_tanker> enumerable = Mem_tanker.GetFreeTanker(Comm_UserDatas.Instance.User_tanker).Take(tankerNum);
                List <Mem_tanker>        list       = new List <Mem_tanker>();
                foreach (Mem_tanker item in enumerable)
                {
                    if (!item.MissionStart(value.Maparea_id, deck_rid))
                    {
                        list.ForEach(delegate(Mem_tanker x)
                        {
                            x.MissionTerm();
                        });
                        api_Result.state = Api_Result_State.Parameter_Error;
                        return(api_Result);
                    }
                    list.Add(item);
                }
            }
            api_Result.data = value2;
            QuestMission questMission = new QuestMission(value.Id, value2, MissionResultKinds.FAILE);

            questMission.ExecuteCheck();
            return(api_Result);
        }
Ejemplo n.º 2
0
        public Api_Result <List <Mem_tanker> > GoTanker(int area_id, int num)
        {
            Api_Result <List <Mem_tanker> > api_Result = new Api_Result <List <Mem_tanker> >();
            List <Mem_tanker> freeTanker = Mem_tanker.GetFreeTanker(Comm_UserDatas.Instance.User_tanker);

            if (freeTanker.Count() < num)
            {
                api_Result.state = Api_Result_State.Parameter_Error;
                return(api_Result);
            }
            IEnumerable <Mem_tanker> enumerable = freeTanker.Take(num);

            foreach (Mem_tanker item in enumerable)
            {
                item.GoArea(area_id);
            }
            api_Result.data = enumerable.ToList();
            return(api_Result);
        }
Ejemplo n.º 3
0
        public Api_Result <List <Mem_tanker> > GoTanker(int area_id, int num)
        {
            Api_Result <List <Mem_tanker> > api_Result = new Api_Result <List <Mem_tanker> >();
            List <Mem_tanker> freeTanker = Mem_tanker.GetFreeTanker(Comm_UserDatas.Instance.User_tanker);

            if (Enumerable.Count <Mem_tanker>(freeTanker) < num)
            {
                api_Result.state = Api_Result_State.Parameter_Error;
                return(api_Result);
            }
            IEnumerable <Mem_tanker> enumerable = Enumerable.Take <Mem_tanker>(freeTanker, num);

            using (IEnumerator <Mem_tanker> enumerator = enumerable.GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    Mem_tanker current = enumerator.get_Current();
                    current.GoArea(area_id);
                }
            }
            api_Result.data = Enumerable.ToList <Mem_tanker>(enumerable);
            return(api_Result);
        }
Ejemplo n.º 4
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);
        }
        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);
        }
        public Api_Result <Mem_deck> Start(int deck_rid, int mission_id, int tankerNum)
        {
            Api_Result <Mem_deck> api_Result  = new Api_Result <Mem_deck>();
            Mst_mission2          mst_mission = null;

            if (mission_id > 0)
            {
                if (!Mst_DataManager.Instance.Mst_mission.TryGetValue(mission_id, ref mst_mission))
                {
                    api_Result.state = Api_Result_State.Parameter_Error;
                    return(api_Result);
                }
            }
            else
            {
                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))
            {
                api_Result.state = Api_Result_State.Parameter_Error;
                return(api_Result);
            }
            if (mission_id > 0 && !Comm_UserDatas.Instance.User_missioncomp.ContainsKey(mission_id))
            {
                Mem_missioncomp mem_missioncomp = new Mem_missioncomp(mission_id, mst_mission.Maparea_id, MissionClearKinds.NOTCLEAR);
                mem_missioncomp.Insert();
            }
            if (!mem_deck.MissionStart(mst_mission))
            {
                api_Result.state = Api_Result_State.Parameter_Error;
                return(api_Result);
            }
            if (tankerNum > 0)
            {
                IEnumerable <Mem_tanker> enumerable = Enumerable.Take <Mem_tanker>(Mem_tanker.GetFreeTanker(Comm_UserDatas.Instance.User_tanker), tankerNum);
                List <Mem_tanker>        list       = new List <Mem_tanker>();
                using (IEnumerator <Mem_tanker> enumerator = enumerable.GetEnumerator())
                {
                    while (enumerator.MoveNext())
                    {
                        Mem_tanker current = enumerator.get_Current();
                        if (!current.MissionStart(mst_mission.Maparea_id, deck_rid))
                        {
                            list.ForEach(delegate(Mem_tanker x)
                            {
                                x.MissionTerm();
                            });
                            api_Result.state = Api_Result_State.Parameter_Error;
                            return(api_Result);
                        }
                        list.Add(current);
                    }
                }
            }
            api_Result.data = mem_deck;
            QuestMission questMission = new QuestMission(mst_mission.Id, mem_deck, MissionResultKinds.FAILE);

            questMission.ExecuteCheck();
            return(api_Result);
        }