Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }