예제 #1
0
    public void TimeFlow()
    {
        gc.timeS++;
        PlayMainPanel.Instance.UpdateTimeBar();
        if (gc.timeS >= 10)
        {
            PlayMainPanel.Instance.UpdateMonthDayHour();

            if (BuildingPanel.Instance.isShow)
            {
                if (gc.buildingDic[BuildingPanel.Instance.nowCheckingBuildingID].isOpen)
                {
                    if (BuildingPanel.Instance.IsShowOutputInfoPart)
                    {
                        BuildingPanel.Instance.UpdateOutputInfoPart(gc.buildingDic[BuildingPanel.Instance.nowCheckingBuildingID]);
                    }
                }
            }
            if (DistrictMapPanel.Instance.isShow)
            {
                DistrictMapPanel.Instance.ChangeSkyColor();
            }

            gc.timeHour++; gc.timeS = 0;
        }
        if (gc.timeHour >= 24)
        {
            gc.timeDay++;
            if (gc.timeDay > 30)
            {
                gc.timeMonth++;
                if (gc.timeMonth > 12)
                {
                    gc.timeYear++;
                    gc.timeMonth = 1;
                }
                gc.timeDay = 1;
                PlayMainPanel.Instance.UpdateYearSeason();
                gc.CreateSalesRecord(gc.timeYear, gc.timeMonth);
                gc.CreateCustomerRecord(gc.timeYear, gc.timeMonth);
                gc.DistrictBuildingExpenseAll();
                gc.DistrictCreateFiscalAll();
                gc.PayHeroSalary();
            }

            gc.timeHour = 0;
            gc.timeWeek++;
            if (gc.timeWeek > 7)
            {
                gc.timeWeek = 1;

                gc.DistrictGetTaxPeopleAll();
                gc.DistrictPeopleFoodExpenseAll();
            }
        }



        gc.standardTime++;
        if (gc.executeEventList.Count > 0)
        {
            if (gc.standardTime >= gc.executeEventList[0].endTime)
            {
                short districtID;
                int   buildingID;
                bool  isSuccess;
                switch (gc.executeEventList[0].type)
                {
                case ExecuteEventType.ProduceResource:
                    //Debug.Log("  gc.standardTime=" + gc.standardTime + "   资源生产" + (StuffType)gc.executeEventList[0].value[2]+"*"+ gc.executeEventList[0].value[3]);
                    districtID = (short)gc.executeEventList[0].value[0][0];
                    buildingID = gc.executeEventList[0].value[1][0];
                    List <StuffType> stuffTypes = new List <StuffType>();
                    List <int>       values     = new List <int>();
                    for (int i = 0; i < gc.executeEventList[0].value[2].Count; i++)
                    {
                        stuffTypes.Add((StuffType)gc.executeEventList[0].value[2][i]);
                        values.Add(gc.executeEventList[0].value[3][i]);
                    }

                    isSuccess = gc.DistrictResourceAdd(districtID, buildingID, stuffTypes, values);

                    gc.ExecuteEventDelete(0);
                    if (isSuccess)
                    {
                        gc.CreateProduceResourceEvent(buildingID);
                    }
                    else
                    {
                        gc.buildingDic[buildingID].isOpen = false;
                    }
                    break;

                case ExecuteEventType.ProduceItem:
                    // Debug.Log("  gc.standardTime=" + gc.standardTime + "   制作模板" + gc.executeEventList[0].value[2]);
                    districtID = (short)gc.executeEventList[0].value[0][0];
                    buildingID = gc.executeEventList[0].value[1][0];

                    gc.DistrictItemOrSkillAdd(districtID, buildingID);
                    gc.ExecuteEventDelete(0);
                    gc.CreateProduceItemEvent(buildingID);

                    break;

                case ExecuteEventType.Build:

                    buildingID = gc.executeEventList[0].value[1][0];
                    gc.BuildDone((short)buildingID);
                    gc.ExecuteEventDelete(0);

                    break;

                case ExecuteEventType.BuildingUpgrade:
                    buildingID = gc.executeEventList[0].value[1][0];
                    gc.BuildingUpgradeDone((short)buildingID);
                    gc.ExecuteEventDelete(0);

                    break;

                case ExecuteEventType.Adventure:
                    byte teamID = (byte)gc.executeEventList[0].value[0][0];

                    /*事件*/
                    gc.ExecuteEventDelete(0);
                    gc.AdventureEventHappen(teamID);


                    break;

                case ExecuteEventType.BuildingSale:

                    buildingID = gc.executeEventList[0].value[1][0];

                    gc.BuildingSale(buildingID);
                    gc.ExecuteEventDelete(0);
                    gc.CreateBuildingSaleEvent(buildingID);
                    break;

                case ExecuteEventType.TechnologyResearch:

                    int technologyID = gc.executeEventList[0].value[1][0];

                    gc.TechnologyResearchDone(technologyID);
                    gc.ExecuteEventDelete(0);
                    break;

                default: break;
                }
            }
        }
    }