示例#1
0
        public override void handleTypedMessage(GameState.ShouldChange m)
        {
            // handle setup between the states
            switch (m.state)
            {
            case GameState.State.EarlyGame1: {
                gm.resources = new Resources(faculty: 2, alumni: 0, students: 1, wealth: 10); //IMPORANT: ALUNI is 0 FOR A REASON DONT CHANGE IT DUMMY

                gm.state = GameState.State.EarlyGame1;                                        //Set early game state, now disable all features not available in the early game

                //Initial upgrades that are available
                gm.upgradeList = new List <UpgradeBase>();
                UpgradeHireFaculty upgradeFaculty = new UpgradeHireFaculty(0);
                gm.AddUpgradable(upgradeFaculty); //Add Hire Administrators upgrade

                //Initial List of special students
                gm.specialStudentList = new List <SpecialStudent>();
                gm.specialStudentRNG  = new RNGSpecialStudent();

                //initial purchasable agreements
                gm.agreements = new HighSchoolAgreement[3];
                gm.BuyHSA1.gameObject.SetActive(false);
                gm.BuyHSA2.gameObject.SetActive(false);
                gm.BuyHSA3.gameObject.SetActive(false);

                //Start timer thresholds
                gm.eventThreshold     = Random.Range(2, 10);
                gm.agreementThreshold = Random.Range(15, 30);

                //starting dialogue
                gm.eventController.DoEvent(new Event("'YoU cOuLd ToTaLlY mAkE a BeTtEr UnIvErSiTy ThE sYsTeM iS bRoKeN', maybe you shouldn't have listened to that guy", Event.Type.Narrative));
            } break;

            case GameState.State.EarlyGame2: {
                gm.eventController.DoEvent(new Event("You've heard a rumor that some High Schools will take a bribe to push students to your school...", Event.Type.Narrative));
                gm.playing = !gm.playing;

                //Add the first agreement
                gm.resources.agreements.Add(new HighSchoolAgreement("Init HS", 15, 4, 0));

                //run generation function for HSA
                string[] name = RandomAgreements.instance.ChooseName(3);
                for (int i = 0; i < 3; i++)
                {
                    gm.agreements[i] = RandomAgreements.instance.generateAgreement(name[i]);
                }

                gm.agreementThreshold = Random.Range(4, 18); //use this to change time between new agreements
                gm.agreementTicker    = 0;

                //enable every window if they were purchased before
                gm.BuyHSA1.gameObject.SetActive(true);
                gm.BuyHSA2.gameObject.SetActive(true);
                gm.BuyHSA3.gameObject.SetActive(true);
            } break;

            case GameState.State.EarlyGame3: break;             // no-op

            case GameState.State.EarlyGame4: {
                //Add the Buy Campus and Buy License Upgrades
                UpgradeCampus campusUpgrade = new UpgradeCampus();
                gm.AddUpgradable(campusUpgrade);

                UpgradeLicense licenseUpgrade = new UpgradeLicense();
                gm.AddUpgradable(licenseUpgrade);

                gm.eventController.DoEvent(new Event("Students care about happiness and renown. Who knew? Maybe we need to start changing our policies to keep growing", Event.Type.Narrative));
                gm.playing = !gm.playing;

                UpgradeAdministrator upgradeAdmin = new UpgradeAdministrator();
                gm.AddUpgradable(upgradeAdmin); //Add Hire Administrators upgrade
            } break;

            case GameState.State.MidGame: {
                gm.eventController.DoEvent(new Event("A University is a business, and business is good...", Event.Type.Narrative));

                //disable early game features
                //buyMenu.options.RemoveAt(0); //remove HSA Buy Option

                //Create sliders and attach them to their content panel
                GameObject sliderCreation = Instantiate(gm.salarySliderPrefab, gm.sliderContentPanel);
                gm.salarySlider = sliderCreation.GetComponent <Slider>();
                GameObject sliderCreation2 = Instantiate(gm.facultyRatioSliderPrefab, gm.sliderContentPanel);
                gm.facultyRatioSlider = sliderCreation2.GetComponent <Slider>();
                gm.eventController.DoEvent(new Event("NEW POLICIES: Student-Faculty decides how many students a faculty can handle. Faculty Salary determines how much you pay faculty.", Event.Type.Feature));

                gm.facultyRatioSlider.minValue = gm.resources.minFaculty; //Make sure faculty to student ratio can be accomodated for
                gm.facultyRatioSlider.maxValue = gm.resources.maxFaculty;

                //Convert resources to MidGame Resources class
                gm.resources = new ResourcesMidGame(gm.resources);

                MessageBus.main.emit(new GameState.DidChange(from: GameState.State.EarlyGame4, to: GameState.State.MidGame));
            } break;

            case GameState.State.EndGame: throw new System.Exception("Not yet implemented");
            }

            // change the state
            GameState.State old = gm.state;
            gm.state = m.state;
            // Emit a change message so other things can handle it
            MessageBus.main.emit(new GameState.DidChange(from: old, to: gm.state));
        }