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); }
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); }
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); }
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); }