Ejemplo n.º 1
0
 private static void simTraining(ref DataPool worldData)
 {
     for (int index = 0; index < worldData.Managers.Count; index++)
     {
         ManagerProtocol.executeWeek(ref worldData, index);
     }
 }
Ejemplo n.º 2
0
    public static void SimWholeTournament(ref DataPool worldData, int townIndex)
    {
        Dictionary <int, List <Vector2Int> > schedule = worldData.getTournamentFromTownIndex(townIndex).getSchedule();
        List <int> managerIndexes = worldData.getTournamentFromTownIndex(townIndex).getManagerIndexes();

        foreach (int round in schedule.Keys)
        {
            foreach (Vector2Int match in schedule[round])
            {
                if (match.x != -1 && match.y != -1)
                {
                    float ovr1 = worldData.Boxers[worldData.Managers[managerIndexes[match.x]].BoxerIndex].getOverall();
                    float ovr2 = worldData.Boxers[worldData.Managers[managerIndexes[match.y]].BoxerIndex].getOverall();

                    float ovr1Chance = (ovr1 / (ovr1 + ovr2)) * 100.0f;

                    float chance = generateRandomInt(0, 100);
                    if (chance < ovr1Chance)
                    {
                        worldData.getTournamentFromTownIndex(townIndex).getTournamentResults()[managerIndexes[match.x]].Record.addWin(
                            worldData.Managers[managerIndexes[match.y]].BoxerELO);
                        worldData.getTournamentFromTownIndex(townIndex).getTournamentResults()[managerIndexes[match.y]].Record.addLoss(
                            worldData.Managers[managerIndexes[match.x]].BoxerELO);
                    }
                    else
                    {
                        worldData.getTournamentFromTownIndex(townIndex).getTournamentResults()[managerIndexes[match.x]].Record.addLoss(
                            worldData.Managers[managerIndexes[match.y]].BoxerELO);
                        worldData.getTournamentFromTownIndex(townIndex).getTournamentResults()[managerIndexes[match.y]].Record.addWin(
                            worldData.Managers[managerIndexes[match.x]].BoxerELO);
                    }
                }
            }
        }

        worldData.getTournamentFromTownIndex(townIndex).rankResults();
        managerIndexes = worldData.getTournamentFromTownIndex(townIndex).getManagerIndexes();

        foreach (int index in worldData.getTournamentFromTownIndex(townIndex).getTournamentResults().Keys)
        {
            ManagerProtocol.completeTournament(ref worldData, index, worldData.getTournamentFromTownIndex(townIndex).getTournamentResults()[index]);
        }
    }
Ejemplo n.º 3
0
    void Start()
    {
        worldData = new DataPool();

        WorldBuilderProtocol.createWorld(ref worldData, 220, 220);

        Manager manager = new Manager("Capn", "AT", 0, 155.0f, BoxerClass.Type.Bullseye);

        worldData.Managers.Add(manager);

        List <Boxer> boxers = WorldBuilderProtocol.generateBoxerRecruits(ref worldData, manager.TownIndex, 0);

        int   bIndex = 0;
        float max    = 0.0f;

        for (int i = 0; i < boxers.Count; i++)
        {
            float boxerEval = EvaluationProtocol.evaluateBoxer(boxers [i], worldData.Managers [0].Preference);

            Debug.Log(boxerEval);
            boxers [i].logBoxerStats();

            if (boxerEval > max)
            {
                max    = boxerEval;
                bIndex = i;
            }
        }

        worldData.Boxers.Add(boxers [bIndex]);
        manager.recruitBoxer(worldData.Boxers.Count - 1);

        for (int i = 0; i < 5; i++)
        {
            Debug.Log("Year " + (i + 1));
            for (int j = 0; j < 48; j++)
            {
                ManagerProtocol.executeWeek(ref worldData, 0);
                worldData.Boxers [manager.BoxerIndex].logBoxerStats();
            }
        }
    }
Ejemplo n.º 4
0
    private static void createManagerBasedOnTown(ref DataPool worldData, int townIndex, int regionIndex)
    {
        for (int j = 0; j < 2; j++)
        {
            List <BoxerClass.Type> typeList = BoxerClass.getTypeList();

            Manager manager = new Manager(
                worldData.generateFirstName(), worldData.generateLastName(), townIndex, generateRandomInt(145, 225), typeList[generateRandomInt(0, typeList.Count - 1)]);
            manager.Record.setELO(getEloFromRegion(worldData.Towns[townIndex].RegionLevel));
            manager.setupHomebase(ref worldData, true);
            worldData.Managers.Add(manager);

            List <Boxer> boxers = WorldBuilderProtocol.generateBoxerRecruits(ref worldData, manager.TownIndex, manager.Record.ELO);

            int   bIndex = 0;
            float max    = 0.0f;

            for (int i = 0; i < boxers.Count; i++)
            {
                float boxerEval = EvaluationProtocol.evaluateBoxer(boxers[i], worldData.Managers[worldData.Managers.Count - 1].Preference);

                if (boxerEval > max)
                {
                    max    = boxerEval;
                    bIndex = i;
                }
            }

            TournamentProtocol.Level boxerLevel = (TournamentProtocol.Level)generateRandomInt(0, (int)worldData.Towns[townIndex].RegionLevel);

            worldData.Boxers.Add(boxers[bIndex]);
            manager.recruitBoxer(worldData.Boxers.Count - 1);
            ManagerProtocol.updateELO(ref worldData, worldData.Managers.Count - 1);
            manager.upgradeFacilities(ref worldData);
            manager.setRank(boxerLevel);
            ageAndDevelop(ref worldData, worldData.Boxers.Count - 1, boxerLevel);

            worldData.Regions[regionIndex].addManager(worldData.Managers.Count - 1);
        }
    }
Ejemplo n.º 5
0
    private void weeklyTest()
    {
        thisWeeksTournaments = new List <int>();

        int index = 0;

        foreach (Town town in worldData.Towns)
        {
            if (town.Tournament.TournamentDate.sameWeek(worldData.Calendar.GetCalendarDate()))
            {
                thisWeeksTournaments.Add(index);
            }
            index++;
        }

        if ((worldData.Calendar.getWeekOfYear() - 1) % 8 == 0)
        {
            foreach (Capitol c in worldData.Capitols)
            {
                foreach (TournamentProtocol.Level level in c.Quarterlies.Keys)
                {
                    List <int> recruits = recruit(level, c.Location, true);

                    for (int i = 0; i < recruits.Count; i++)
                    {
                        if (c.Quarterlies[level].spaceLeft())
                        {
                            c.Quarterlies[level].addContestant(recruits[i]);
                            worldData.Managers[recruits[i]].attendTournament();
                        }
                    }
                }
            }
        }

        foreach (int tIndex in thisWeeksTournaments)
        {
            List <int> recruits = recruit(worldData.Towns[tIndex].Tournament.Level, worldData.Towns[tIndex].Location, false);

            for (int i = 0; i < recruits.Count; i++)
            {
                if (worldData.Towns[tIndex].Tournament.spaceLeft())
                {
                    worldData.Towns[tIndex].Tournament.addContestant(recruits[i]);
                    worldData.Managers[recruits[i]].attendTournament();
                }
                else
                {
                    worldData.Managers[recruits[i]].bumpTournamentPriority();
                }
            }
        }

        for (int i = 0; i < worldData.Managers.Count; i++)
        {
            ManagerProtocol.executeWeek(ref worldData, i);
        }

        if ((worldData.Calendar.getWeekOfYear() - 1) % 8 == 0)
        {
            foreach (Capitol c in worldData.Capitols)
            {
                foreach (TournamentProtocol.Level level in c.Quarterlies.Keys)
                {
                    if (c.Quarterlies[level].Attendees > 2)
                    {
                        //Debug.Log(c.Location.ToString() + " - " + c.Quarterlies[level].getDetails());
                        c.Quarterlies[level].scheduleTournament();
                        //c.Quarterlies[level].SimWholeTournament(ref worldData);
                        //c.Quarterlies[level].logResults(ref worldData);
                    }
                    else
                    {
                        //c.Quarterlies[level].cancelTournament(ref worldData);
                    }

                    c.Quarterlies[level].refreshTournament(true);
                }
            }
            //worldData.updateBoxerDistribution();
            //distribution();
        }

        foreach (int tIndex in thisWeeksTournaments)
        {
            if (worldData.Towns[tIndex].Tournament.Attendees > 2)
            {
                //Debug.Log(worldData.Towns[tIndex].Location.ToString() + " - " + worldData.Towns[tIndex].Tournament.getDetails());
                worldData.Towns[tIndex].Tournament.scheduleTournament();
                //worldData.Towns[tIndex].Tournament.SimWholeTournament(ref worldData);
            }
            else
            {
                //worldData.Towns[tIndex].Tournament.cancelTournament(ref worldData);
            }

            worldData.Towns[tIndex].Tournament.refreshTournament(false);
        }
    }
Ejemplo n.º 6
0
    public static void simWholeQualifier(ref DataPool worldData, int capitolIndex, Level rank)
    {
        Dictionary <int, List <Vector2Int> > schedule = worldData.getTournamentFromCapitolIndex(capitolIndex, rank).getSchedule();
        List <int> managerIndexes = worldData.getTournamentFromCapitolIndex(capitolIndex, rank).getManagerIndexes();

        foreach (int round in schedule.Keys)
        {
            foreach (Vector2Int match in schedule[round])
            {
                if (match.x != -1 && match.y != -1)
                {
                    float ovr1 = worldData.Boxers[worldData.Managers[managerIndexes[match.x]].BoxerIndex].getOverall();
                    float ovr2 = worldData.Boxers[worldData.Managers[managerIndexes[match.y]].BoxerIndex].getOverall();

                    float ovr1Chance = (ovr1 / (ovr1 + ovr2)) * 100.0f;

                    float chance = generateRandomInt(0, 100);
                    if (chance < ovr1Chance)
                    {
                        worldData.getTournamentFromCapitolIndex(capitolIndex, rank).getTournamentResults()[managerIndexes[match.x]].Record.addWin(
                            worldData.Managers[managerIndexes[match.y]].BoxerELO);
                        worldData.getTournamentFromCapitolIndex(capitolIndex, rank).getTournamentResults()[managerIndexes[match.y]].Record.addLoss(
                            worldData.Managers[managerIndexes[match.x]].BoxerELO);
                    }
                    else
                    {
                        worldData.getTournamentFromCapitolIndex(capitolIndex, rank).getTournamentResults()[managerIndexes[match.x]].Record.addLoss(
                            worldData.Managers[managerIndexes[match.y]].BoxerELO);
                        worldData.getTournamentFromCapitolIndex(capitolIndex, rank).getTournamentResults()[managerIndexes[match.y]].Record.addWin(
                            worldData.Managers[managerIndexes[match.x]].BoxerELO);
                    }
                }
            }
        }

        worldData.getTournamentFromCapitolIndex(capitolIndex, rank).rankResults();
        managerIndexes = worldData.getTournamentFromCapitolIndex(capitolIndex, rank).getManagerIndexes();

        worldData.getTournamentFromCapitolIndex(capitolIndex, rank).getTournamentResults()[managerIndexes[0]].wonQuarterly();
        Level level = worldData.getTournamentFromCapitolIndex(capitolIndex, rank).Level;

        float boxerPercentage = (float)worldData.Distribution[rank] / worldData.Managers.Count;

        if (boxerPercentage > 0.1f)
        {
            worldData.getTournamentFromCapitolIndex(capitolIndex, rank).getTournamentResults()[managerIndexes[1]].wonQuarterly();

            if (boxerPercentage > 0.2f && managerIndexes.Count > 2)
            {
                worldData.getTournamentFromCapitolIndex(capitolIndex, rank).getTournamentResults()[managerIndexes[2]].wonQuarterly();

                if (boxerPercentage > 0.3f && managerIndexes.Count > 3)
                {
                    //worldData.getTournamentFromCapitolIndex(capitolIndex, rank).getTournamentResults()[managerIndexes[3]].wonQuarterly();

                    if (boxerPercentage > 0.4f && managerIndexes.Count > 4)
                    {
                        //worldData.getTournamentFromCapitolIndex(capitolIndex, rank).getTournamentResults()[managerIndexes[4]].wonQuarterly();

                        if (boxerPercentage > 0.5f && managerIndexes.Count > 5)
                        {
                            //worldData.getTournamentFromCapitolIndex(capitolIndex, rank).getTournamentResults()[managerIndexes[5]].wonQuarterly();
                        }
                    }
                }
            }
        }

        foreach (int index in worldData.getTournamentFromCapitolIndex(capitolIndex, rank).getTournamentResults().Keys)
        {
            ManagerProtocol.completeTournament(ref worldData, index, worldData.getTournamentFromCapitolIndex(capitolIndex, rank).getTournamentResults()[index]);
        }
    }