private TurnWorkResult ExecTurnEndWork() { TurnWorkResult turnWorkResult = new TurnWorkResult(); turnWorkResult.ChangeState = TurnState.TURN_START; turnInstance.AddTurn(this); if (turnInstance.GetDateTime().Day == 1) { new Api_req_Quest(this).EnforceQuestReset(); } if (Utils.IsTurnOver()) { Mem_history mem_history = new Mem_history(); mem_history.SetGameOverToTurn(turnInstance.Total_turn); Comm_UserDatas.Instance.Add_History(mem_history); } foreach (Mem_ship value in Comm_UserDatas.Instance.User_ship.Values) { value.BlingWaitToStart(); value.PurgeLovTouchData(); } Comm_UserDatas.Instance.UpdateEscortShipLocale(); Comm_UserDatas.Instance.UpdateDeckShipLocale(); List <Mem_deck> list = Comm_UserDatas.Instance.User_deck.Values.ToList(); list.ForEach(delegate(Mem_deck x) { x.ActionStart(); }); List <Mst_radingtype> types = Mst_DataManager.Instance.Mst_RadingType[(int)basicInstance.Difficult]; Mst_radingtype radingRecord = Mst_radingtype.GetRadingRecord(types, turnInstance.Total_turn); new HashSet <int>(); if (radingRecord != null) { double randDouble = Utils.GetRandDouble(1.0, 100.0, 1.0, 1); if ((double)radingRecord.Rading_rate >= randDouble) { IEnumerable <IGrouping <int, Mem_tanker> > areaEnableTanker = Mem_tanker.GetAreaEnableTanker(Comm_UserDatas.Instance.User_tanker); Dictionary <int, RadingKind> radingArea = getRadingArea(areaEnableTanker, radingRecord.Rading_type); if (radingArea.Count > 0) { Dictionary <int, List <Mem_tanker> > tankers = areaEnableTanker.ToDictionary((IGrouping <int, Mem_tanker> x) => x.Key, (IGrouping <int, Mem_tanker> y) => y.ToList()); turnWorkResult.RadingResult = getRadingResult(radingRecord.Rading_type, radingArea, tankers); } } } updateRadingEscortShipExp(turnWorkResult.RadingResult); if (basicInstance.Difficult == DifficultKind.KOU || basicInstance.Difficult == DifficultKind.SHI) { addRebellionPoint(); selectRegistanceArea(); } else { selectRegistanceArea(); addRebellionPoint(); } return(turnWorkResult); }
private void TakeMaterial(ref Dictionary <enumMaterialCategory, int> add_mat, ref Dictionary <enumMaterialCategory, int> summaryBase) { IEnumerable <IGrouping <int, Mem_tanker> > areaEnableTanker = Mem_tanker.GetAreaEnableTanker(Comm_UserDatas.Instance.User_tanker); if (areaEnableTanker.Count() != 0) { foreach (IGrouping <int, Mem_tanker> item in areaEnableTanker) { Mst_maparea mst_maparea = Mst_DataManager.Instance.Mst_maparea[item.Key]; DeckShips ship = Comm_UserDatas.Instance.User_EscortDeck[item.Key].Ship; mst_maparea.TakeMaterialNum(Comm_UserDatas.Instance.User_mapclear, item.Count(), ref add_mat, randMaxFlag: false, ship); mst_maparea.TakeMaterialNum(Comm_UserDatas.Instance.User_mapclear, item.Count(), ref summaryBase, randMaxFlag: true, ship); } int materialMaxNum = Comm_UserDatas.Instance.User_basic.GetMaterialMaxNum(); foreach (KeyValuePair <enumMaterialCategory, int> item2 in add_mat) { int num = 0; int num2 = Comm_UserDatas.Instance.User_material[item2.Key].Value + item2.Value; int num3 = materialMaxNum - num2; if (num3 >= 0) { num = item2.Value; } else if (materialMaxNum > Comm_UserDatas.Instance.User_material[item2.Key].Value) { num = materialMaxNum - Comm_UserDatas.Instance.User_material[item2.Key].Value; } Comm_UserDatas.Instance.User_material[item2.Key].Add_Material(num); } } }
private void TakeMaterial(ref Dictionary <enumMaterialCategory, int> add_mat, ref Dictionary <enumMaterialCategory, int> summaryBase) { IEnumerable <IGrouping <int, Mem_tanker> > areaEnableTanker = Mem_tanker.GetAreaEnableTanker(Comm_UserDatas.Instance.User_tanker); if (Enumerable.Count <IGrouping <int, Mem_tanker> >(areaEnableTanker) == 0) { return; } using (IEnumerator <IGrouping <int, Mem_tanker> > enumerator = areaEnableTanker.GetEnumerator()) { while (enumerator.MoveNext()) { IGrouping <int, Mem_tanker> current = enumerator.get_Current(); Mst_maparea mst_maparea = Mst_DataManager.Instance.Mst_maparea.get_Item(current.get_Key()); DeckShips ship = Comm_UserDatas.Instance.User_EscortDeck.get_Item(current.get_Key()).Ship; mst_maparea.TakeMaterialNum(Comm_UserDatas.Instance.User_mapclear, Enumerable.Count <Mem_tanker>(current), ref add_mat, false, ship); mst_maparea.TakeMaterialNum(Comm_UserDatas.Instance.User_mapclear, Enumerable.Count <Mem_tanker>(current), ref summaryBase, true, ship); } } int materialMaxNum = Comm_UserDatas.Instance.User_basic.GetMaterialMaxNum(); using (Dictionary <enumMaterialCategory, int> .Enumerator enumerator2 = add_mat.GetEnumerator()) { while (enumerator2.MoveNext()) { KeyValuePair <enumMaterialCategory, int> current2 = enumerator2.get_Current(); int num = 0; int num2 = Comm_UserDatas.Instance.User_material.get_Item(current2.get_Key()).Value + current2.get_Value(); int num3 = materialMaxNum - num2; if (num3 >= 0) { num = current2.get_Value(); } else if (materialMaxNum > Comm_UserDatas.Instance.User_material.get_Item(current2.get_Key()).Value) { num = materialMaxNum - Comm_UserDatas.Instance.User_material.get_Item(current2.get_Key()).Value; } Comm_UserDatas.Instance.User_material.get_Item(current2.get_Key()).Add_Material(num); } } }
private TurnWorkResult ExecTurnEndWork() { TurnWorkResult turnWorkResult = new TurnWorkResult(); turnWorkResult.ChangeState = TurnState.TURN_START; this.turnInstance.AddTurn(this); if (this.turnInstance.GetDateTime().get_Day() == 1) { new Api_req_Quest(this).EnforceQuestReset(); } if (Utils.IsTurnOver()) { Mem_history mem_history = new Mem_history(); mem_history.SetGameOverToTurn(this.turnInstance.Total_turn); Comm_UserDatas.Instance.Add_History(mem_history); } using (Dictionary <int, Mem_ship> .ValueCollection.Enumerator enumerator = Comm_UserDatas.Instance.User_ship.get_Values().GetEnumerator()) { while (enumerator.MoveNext()) { Mem_ship current = enumerator.get_Current(); current.BlingWaitToStart(); current.PurgeLovTouchData(); } } Comm_UserDatas.Instance.UpdateEscortShipLocale(); Comm_UserDatas.Instance.UpdateDeckShipLocale(); List <Mem_deck> list = Enumerable.ToList <Mem_deck>(Comm_UserDatas.Instance.User_deck.get_Values()); list.ForEach(delegate(Mem_deck x) { x.ActionStart(); }); List <Mst_radingtype> types = Mst_DataManager.Instance.Mst_RadingType.get_Item((int)this.basicInstance.Difficult); Mst_radingtype radingRecord = Mst_radingtype.GetRadingRecord(types, this.turnInstance.Total_turn); HashSet <int> hashSet = new HashSet <int>(); if (radingRecord != null) { double randDouble = Utils.GetRandDouble(1.0, 100.0, 1.0, 1); if ((double)radingRecord.Rading_rate >= randDouble) { IEnumerable <IGrouping <int, Mem_tanker> > areaEnableTanker = Mem_tanker.GetAreaEnableTanker(Comm_UserDatas.Instance.User_tanker); Dictionary <int, RadingKind> radingArea = this.getRadingArea(areaEnableTanker, radingRecord.Rading_type); if (radingArea.get_Count() > 0) { Dictionary <int, List <Mem_tanker> > tankers = Enumerable.ToDictionary <IGrouping <int, Mem_tanker>, int, List <Mem_tanker> >(areaEnableTanker, (IGrouping <int, Mem_tanker> x) => x.get_Key(), (IGrouping <int, Mem_tanker> y) => Enumerable.ToList <Mem_tanker>(y)); turnWorkResult.RadingResult = this.getRadingResult(radingRecord.Rading_type, radingArea, tankers); } } } this.updateRadingEscortShipExp(turnWorkResult.RadingResult); if (this.basicInstance.Difficult == DifficultKind.KOU || this.basicInstance.Difficult == DifficultKind.SHI) { this.addRebellionPoint(); this.selectRegistanceArea(); } else { this.selectRegistanceArea(); this.addRebellionPoint(); } return(turnWorkResult); }