示例#1
0
        public void Start(Game.GameVersion version, int numCitizenThreads)
        {
            loadBuildings(version);
            initializeCitizens(version);
            day = 1;
            CreateCitizenThreads(numCitizenThreads);

            // Need to add multithreading for buildings
            townReady = true;
            timer.Start();
        }
示例#2
0
        private void loadBuildings(Game.GameVersion version)
        {
            switch (version)
            {
            case Game.GameVersion.ReleaseLoad:
                HashSet <Building> buildings = FileManagerSystem.LoadBuildings(this);
                for (int i = 0; i < buildings.Count; i++)
                {
                    if (buildings.ElementAt(i).ID.Contains("recreational"))
                    {
                        recreational.Add(buildings.ElementAt(i));     // Have to pass the reference to the object
                    }
                    else if (buildings.ElementAt(i).ID.Contains("residential"))
                    {
                        residential.Add(buildings.ElementAt(i));
                    }
                }
                break;

            case Game.GameVersion.ReleaseNew:
                int numRecreational = 8;
                int numShops        = 17;
                int numHospitals    = 4;
                int numResidentials = 9;

                string id;
                for (int i = 0; i < numRecreational; i++)
                {
                    id = "recreational" + i;
                    Building b = new Building(id, Game.BASE_BUILDING_EXPOSURE_FACTOR + 5, 5000, 0, 0);
                    recreational.Add(b);
                }

                for (int i = 0; i < numShops; i++)
                {
                    id = "shop" + i;
                    Supermarket s = new Supermarket(id, Game.BASE_BUILDING_EXPOSURE_FACTOR, 100, 0, 20);
                    essentials.Add(s);
                }

                for (int i = 0; i < numHospitals; i++)
                {
                    id = "hospital" + i;
                    Hospital h = new Hospital(id, Game.BASE_BUILDING_EXPOSURE_FACTOR - 10, 5000, 0, 20, false);
                    emergency.Add(h);
                }

                for (int i = 0; i < numResidentials; i++)
                {
                    id = "residential" + i;
                    Building b = new Building(id, 0, 5000, 0, 3);
                    residential.Add(b);
                }
                break;

            case Game.GameVersion.Debug:
                Random r = new Random();

                Building    b1 = new Building("firstRes", 0, 35, 5000, 3);
                Hospital    h1 = new Hospital("firstHos", 35, 5000, 0, 30, false);
                Supermarket s1 = new Supermarket("firstSupwe", 35, 5000, 0, 20);
                Building    b2 = new Building("firstRec", 35, 35, 5000, 0);
                residential.Add(b1);
                emergency.Add(h1);
                essentials.Add(s1);
                recreational.Add(b2);
                for (int i = 0; i < 10; i++)
                {
                    int    buildingGenerator = r.Next(0, 3);
                    string buildingID        = "building" + 0;
                    if (buildingGenerator == 0)
                    {
                        Building b = new Building(buildingID, 35, 5000, 0, 0);
                        recreational.Add(b);
                    }
                    else if (buildingGenerator == 1)
                    {
                        Supermarket s = new Supermarket(buildingID, 35, 5000, 0, 20);
                        essentials.Add(s);
                    }
                    else if (buildingGenerator == 2)
                    {
                        Hospital h = new Hospital(buildingID, 35, 5000, 0, 30, false);
                        emergency.Add(h);
                    }
                    else if (buildingGenerator == 3)
                    {
                        Building b = new Building(buildingID, 0, 200, 0, 3);
                        residential.Add(b);
                    }
                }
                break;
            }
        }
示例#3
0
        private void initializeCitizens(Game.GameVersion version)
        {
            switch (version)
            {
            case Game.GameVersion.Debug:
                // Method that generates test citizens
                Random r = new Random();

                Stopwatch s = Stopwatch.StartNew();
                for (int i = 0; i < CITIZEN_START_COUNT_DEBUG; i++)     // Test citizens added to CitizenWorkerThread class
                {
                    int buildingType = r.Next(3);
                    CitizenWorkerThread.citizens.Add(new Citizen());
                    switch (buildingType)
                    {
                    case 0:
                        int recNum = r.Next(recreational.Count - 1);
                        CitizenWorkerThread.citizens[i].loadPreviousTask(1, 6, 13, 1, 1, 0, recreational[recNum]);
                        break;

                    case 1:
                        int essNum = r.Next(essentials.Count - 1);
                        CitizenWorkerThread.citizens[i].loadPreviousTask(1, 6, 13, 1, 1, 0, essentials[essNum]);
                        break;

                    case 2:
                        int emerNum = r.Next(emergency.Count - 1);
                        CitizenWorkerThread.citizens[i].loadPreviousTask(1, 6, 13, 1, 1, 0, emergency[emerNum]);
                        break;

                    case 3:
                        int resNum = r.Next(residential.Count - 1);
                        CitizenWorkerThread.citizens[i].loadPreviousTask(1, 6, 13, 1, 1, 0, residential[resNum]);
                        break;
                    }
                }
                int infected = r.Next(CITIZEN_START_COUNT - 1);
                CitizenWorkerThread.citizens[infected].rollHealthEvent(100);
                for (int i = 0; i < CITIZEN_START_COUNT_DEBUG; i++)
                {
                    CitizenWorkerThread.citizens[i].initiateTask();
                }
                s.Stop();
                break;

            // Case where we're loading an old save
            case Game.GameVersion.ReleaseLoad:
                Collection <Citizen> citizens = FileManagerSystem.LoadCitizens(this);
                if (citizens == null)
                {
                    Debug.Log("This game is trash. A town manager without any civilians? HAH! Get me out");
                    Application.Quit();
                    return;
                }
                CitizenWorkerThread.citizens = citizens;
                for (int i = 0; i < CITIZEN_START_COUNT; i++)
                {
                    CitizenWorkerThread.citizens[i].initiateTask();
                }
                break;

            // Case where we're creating a new save
            case Game.GameVersion.ReleaseNew:
                for (int i = 0; i < CITIZEN_START_COUNT; i++)
                {
                    CitizenWorkerThread.citizens.Add(new Citizen());    // Citizen is generated here. Need to figure out how to generate the citizen's tasks though
                }
                Random random = new Random();
                for (int i = 0; i < 25; i++)
                {
                    int infectedNew = random.Next(CitizenCount - 1);
                    CitizenWorkerThread.citizens[infectedNew].rollHealthEvent(100);
                }

                for (int i = 0; i < CITIZEN_START_COUNT; i++)
                {
                    CitizenWorkerThread.citizens[i].initiateTask();
                }
                break;
            }
        }