private static float getEloFromRegion(TournamentProtocol.Level rank) { if (rank.Equals(TournamentProtocol.Level.E)) { return((float)generateRandomInt(1, 375)); } else if (rank.Equals(TournamentProtocol.Level.D)) { return((float)generateRandomInt(350, 750)); } else if (rank.Equals(TournamentProtocol.Level.C)) { return((float)generateRandomInt(750, 1125)); } else if (rank.Equals(TournamentProtocol.Level.B)) { return((float)generateRandomInt(1125, 1500)); } else if (rank.Equals(TournamentProtocol.Level.A)) { return((float)generateRandomInt(1500, 1875)); } else if (rank.Equals(TournamentProtocol.Level.S)) { return((float)generateRandomInt(1875, 2250)); } return((float)generateRandomInt(2250, 2450)); }
public Region(JSONObject json) { position = JSONTemplates.ToVector2Int(json.GetField("position")); regionName = json.GetField("name").str; landMass = (int)json.GetField("landmass").i; capitolIndex = (int)json.GetField("capitolindex").i; level = (TournamentProtocol.Level)Enum.Parse(typeof(TournamentProtocol.Level), json.GetField("level").str); distances = new Dictionary <int, int>(); foreach (JSONObject record in json.GetField("distances").list) { distances.Add((int)record.GetField("key").i, (int)record.GetField("value").i); } townIndexes = new List <int>(); foreach (JSONObject record in json.GetField("townindexes").list) { townIndexes.Add((int)record.i); } managerProtocolIndexes = new List <int>(); foreach (JSONObject record in json.GetField("managerindexes").list) { managerProtocolIndexes.Add((int)record.i); } }
private void determineRegionLevel(int regionDistance) { if (regionDistance < 2) { level = TournamentProtocol.Level.E; } else if (regionDistance < 3) { level = TournamentProtocol.Level.D; } else if (regionDistance < 4) { level = TournamentProtocol.Level.C; } else if (regionDistance < 5) { level = TournamentProtocol.Level.B; } else if (regionDistance < 6) { level = TournamentProtocol.Level.A; } else { level = TournamentProtocol.Level.S; } }
public void logBoxerStats(TournamentProtocol.Level boxerLevel) { Debug.Log("Acc " + accuracy + ", End " + endurance + ", Hlt " + health + ", spd " + speed + ", str " + strength + ", ftg " + fatigue + "AccG " + accuracyGrowth + ", EndG " + enduranceGrowth + ", HltG " + healthGrowth + ", SpdG " + speedGrowth + ", StrG " + strengthGrowth + ", Class " + boxerClass.ToString() + ", WR " + WeeksRemaining + ", " + boxerLevel.ToString() + ", W " + record.Wins + " L " + record.Losses ); }
private float getDistanceFromLevel(TournamentProtocol.Level level) { if (level.Equals(TournamentProtocol.Level.S)) { return(1200.0f); } else if (level.Equals(TournamentProtocol.Level.A)) { return(900.0f); } else if (level.Equals(TournamentProtocol.Level.B)) { return(800.0f); } else if (level.Equals(TournamentProtocol.Level.C)) { return(700.0f); } else if (level.Equals(TournamentProtocol.Level.D)) { return(700.0f); } else if (level.Equals(TournamentProtocol.Level.E)) { return(700.0f); } return(1200.0f); }
private static float getPrizeMoney(TournamentProtocol.Level level) { if (level.Equals(TournamentProtocol.Level.E)) { return((float)generateRandomInt(800, 1200)); } else if (level.Equals(TournamentProtocol.Level.D)) { return((float)generateRandomInt(1400, 2000)); } else if (level.Equals(TournamentProtocol.Level.C)) { return((float)generateRandomInt(2200, 3000)); } else if (level.Equals(TournamentProtocol.Level.B)) { return((float)generateRandomInt(3300, 4500)); } else if (level.Equals(TournamentProtocol.Level.A)) { return((float)generateRandomInt(4800, 6500)); } else if (level.Equals(TournamentProtocol.Level.S)) { return((float)generateRandomInt(7000, 11000)); } return((float)generateRandomInt(11500, 14000)); }
private static float getPrimaryStatFromLevel(TournamentProtocol.Level level) { if (level.Equals(TournamentProtocol.Level.S)) { return((float)generateRandomInt(700, 850)); } else if (level.Equals(TournamentProtocol.Level.A)) { return((float)generateRandomInt(600, 750)); } else if (level.Equals(TournamentProtocol.Level.B)) { return((float)generateRandomInt(500, 700)); } else if (level.Equals(TournamentProtocol.Level.C)) { return((float)generateRandomInt(400, 575)); } else if (level.Equals(TournamentProtocol.Level.D)) { return((float)generateRandomInt(300, 400)); } else if (level.Equals(TournamentProtocol.Level.E)) { return((float)generateRandomInt(200, 300)); } return(850.0f); }
private static float getSecondaryStatFromLevel(TournamentProtocol.Level level) { if (level.Equals(TournamentProtocol.Level.S)) { return((float)generateRandomInt(300, 650)); } else if (level.Equals(TournamentProtocol.Level.A)) { return((float)generateRandomInt(250, 600)); } else if (level.Equals(TournamentProtocol.Level.B)) { return((float)generateRandomInt(200, 550)); } else if (level.Equals(TournamentProtocol.Level.C)) { return((float)generateRandomInt(175, 450)); } else if (level.Equals(TournamentProtocol.Level.D)) { return((float)generateRandomInt(125, 300)); } else if (level.Equals(TournamentProtocol.Level.E)) { return((float)generateRandomInt(100, 200)); } return(650.0f); }
private static List <int> getPercentagesForRegion(TournamentProtocol.Level regionLevel) { if (regionLevel.Equals(TournamentProtocol.Level.E)) { return(new List <int>(new int[] { 98, 95, 90, 80, 60 })); } else if (regionLevel.Equals(TournamentProtocol.Level.D)) { return(new List <int>(new int[] { 96, 90, 80, 65, 20 })); } else if (regionLevel.Equals(TournamentProtocol.Level.C)) { return(new List <int>(new int[] { 96, 90, 75, 30, 10 })); } else if (regionLevel.Equals(TournamentProtocol.Level.B)) { return(new List <int>(new int[] { 95, 80, 35, 15, 5 })); } else if (regionLevel.Equals(TournamentProtocol.Level.A)) { return(new List <int>(new int[] { 85, 40, 20, 10, 4 })); } else if (regionLevel.Equals(TournamentProtocol.Level.S)) { return(new List <int>(new int[] { 70, 45, 25, 10, 3 })); } return(new List <int>(new int[] { 98, 95, 90, 80, 60 })); }
private static float getAgeFromLevel(TournamentProtocol.Level level) { if (level.Equals(TournamentProtocol.Level.S)) { return((float)generateRandomInt(50, 88)); } else if (level.Equals(TournamentProtocol.Level.A)) { return((float)generateRandomInt(50, 88)); } else if (level.Equals(TournamentProtocol.Level.B)) { return((float)generateRandomInt(40, 85)); } else if (level.Equals(TournamentProtocol.Level.C)) { return((float)generateRandomInt(35, 85)); } else if (level.Equals(TournamentProtocol.Level.D)) { return((float)generateRandomInt(30, 85)); } else if (level.Equals(TournamentProtocol.Level.E)) { return((float)generateRandomInt(10, 85)); } return(85.0f); }
private static int getDistanceFromLevel(TournamentProtocol.Level level) { if (level.Equals(TournamentProtocol.Level.S)) { return(10); } else if (level.Equals(TournamentProtocol.Level.A)) { return(5); } else if (level.Equals(TournamentProtocol.Level.B)) { return(4); } else if (level.Equals(TournamentProtocol.Level.C)) { return(3); } else if (level.Equals(TournamentProtocol.Level.D)) { return(3); } else if (level.Equals(TournamentProtocol.Level.E)) { return(2); } return(10); }
private static bool addQualifier(ref DataPool worldData, Vector2Int pos, TournamentProtocol.Level level) { List <int> qualifiers = new List <int>(); for (int i = 0; i < worldData.Regions.Count; i++) { if (worldData.Capitols[worldData.Regions[i].CapitolIndex].Quarterlies.ContainsKey(level)) { qualifiers.Add(i); } } bool tooClose = false; foreach (int index in qualifiers) { List <Vector2Int> path = worldData.Dijkstras.shortestPath(pos, worldData.Regions[index].Position); if (path.Count < getSpacing(level)) { tooClose = true; } } if (qualifiers.Count == 0) { return(true); } return(!tooClose); }
private static List <int> recruit(DataPool worldData, TournamentProtocol.Level level, List <int> regionsWithinJurisdiction, bool highestRated) { List <int> potentialRecruits = new List <int>(); foreach (int rIndex in regionsWithinJurisdiction) { foreach (int mIndex in worldData.Regions[rIndex].getRegionsManagerIndexes()) { if (worldData.Managers[mIndex].Rank.Equals(level) && !worldData.Managers[mIndex].isBusy()) { potentialRecruits.Add(mIndex); } } } if (highestRated) { potentialRecruits = potentialRecruits.OrderByDescending(t => EvaluationProtocol.evaluateBoxer(worldData.Boxers[t])).ToList(); } else { potentialRecruits = potentialRecruits.OrderByDescending(t => worldData.Managers[t].Priority).ToList(); } return(potentialRecruits); }
public Town(JSONObject json) { name = json.GetField("name").str; location = JSONTemplates.ToVector2Int(json.GetField("location")); regionLevel = (TournamentProtocol.Level)Enum.Parse(typeof(TournamentProtocol.Level), json.GetField("level").str); tournament = new Tournament(json.GetField("tournament")); }
public static List <int> getBoxersOfRank(ref DataPool worldData, TournamentProtocol.Level level) { List <int> boxerIndexes = new List <int>(); for (int i = 0; i < worldData.Managers.Count; i++) { if (worldData.Managers[i].Rank.Equals(level)) { boxerIndexes.Add(worldData.Managers[i].BoxerIndex); } } return(boxerIndexes); }
private void balanceRank(TournamentProtocol.Level rank) { foreach (Region r in regions) { List <int> managerIndexes = r.getRegionsManagerIndexes().FindAll(index => managers[index].Rank.Equals(rank)).ToList(); managerIndexes = managerIndexes.OrderByDescending(index => EvaluationProtocol.evaluateBoxer(boxers[managers[index].BoxerIndex])).ToList(); if (managerIndexes.Count > 12) { managers[managerIndexes[0]].graduateRank(); } } }
private List <int> recruit(TournamentProtocol.Level level, Vector2Int p1, bool highestRated) { List <int> potentialRecruits = new List <int>(); int index = 0; foreach (Manager m in worldData.Managers) { Vector2Int p2 = worldData.Towns[worldData.Managers[index].TownIndex].Location; float distance = Mathf.Sqrt(Mathf.Pow((p2.x - p1.x), 2) + Mathf.Pow((p2.y - p1.y), 2)); if (level.Equals(TournamentProtocol.Level.S)) { if (m.Rank.Equals(level) && !m.isBusy()) { potentialRecruits.Add(index); } } else { if (distance < getDistanceFromLevel(level) && m.Rank.Equals(level) && !m.isBusy()) { potentialRecruits.Add(index); } } index++; } if (highestRated) { potentialRecruits = potentialRecruits.OrderByDescending(t => EvaluationProtocol.evaluateBoxer(worldData.Boxers[t])).ToList(); } else { potentialRecruits = potentialRecruits.OrderByDescending(t => worldData.Managers[t].Priority).ToList(); } return(potentialRecruits); }
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); } }
private static int getSpacing(TournamentProtocol.Level level) { switch (level) { case TournamentProtocol.Level.E: return(2); case TournamentProtocol.Level.D: return(3); case TournamentProtocol.Level.C: return(generateRandomInt(3, 4)); case TournamentProtocol.Level.B: return(generateRandomInt(3, 4)); case TournamentProtocol.Level.A: return(generateRandomInt(4, 5)); } return(7); }
public Tournament(string name, CalendarDate dt, float topPrize, int size, TournamentProtocol.Level lvl, bool qtr) { managerIndexes = new List <int>(); this.name = name; prizes = new List <float>(); tournamentResults = new Dictionary <int, TournamentResult>(); schedule = new Dictionary <int, List <Vector2Int> >(); date = dt; prizes.Add(topPrize); prizes.Add(topPrize / 2.0f); prizes.Add(topPrize / 4.0f); prizes.Add(0.0f); this.size = size; level = lvl; currentRound = 0; priority = false; quarterly = qtr; }
public static Tournament createTournamentBasedOnRegion(ref DataPool worldData, TournamentProtocol.Level regionLevel, CalendarDate date) { List <int> tournamentPercentages = getPercentagesForRegion(regionLevel); int rng = generateRandomInt(0, 100); TournamentProtocol.Level tournamentLevel = TournamentProtocol.Level.E; if (rng >= tournamentPercentages[0]) { tournamentLevel = TournamentProtocol.Level.S; } else if (rng >= tournamentPercentages[1]) { tournamentLevel = TournamentProtocol.Level.A; } else if (rng >= tournamentPercentages[2]) { tournamentLevel = TournamentProtocol.Level.B; } else if (rng >= tournamentPercentages[3]) { tournamentLevel = TournamentProtocol.Level.C; } else if (rng >= tournamentPercentages[4]) { tournamentLevel = TournamentProtocol.Level.D; } else { tournamentLevel = TournamentProtocol.Level.E; } return(new Tournament(worldData.generateTournamentName() + " Cup", date, getPrizeMoney(tournamentLevel), getRandomTournamentSize((int)tournamentLevel), tournamentLevel, false)); }
public Tournament(JSONObject json) { date = new CalendarDate(json.GetField("date")); name = json.GetField("name").str; size = (int)json.GetField("size").i; currentRound = (int)json.GetField("round").i; priority = json.GetField("priority"); quarterly = json.GetField("quarterly"); level = (TournamentProtocol.Level)Enum.Parse(typeof(TournamentProtocol.Level), json.GetField("level").str); prizes = new List <float>(); foreach (JSONObject p in json.GetField("prizes").list) { prizes.Add(p.f); } managerIndexes = new List <int>(); foreach (JSONObject m in json.GetField("managerindexes").list) { managerIndexes.Add((int)m.i); } tournamentResults = new Dictionary <int, TournamentResult>(); foreach (JSONObject record in json.GetField("results").list) { tournamentResults.Add((int)record.GetField("key").i, new TournamentResult(record.GetField("value"))); } schedule = new Dictionary <int, List <Vector2Int> >(); if (managerIndexes.Count > 2) { scheduleTournament(); } }
public void setRank(TournamentProtocol.Level rank) { currentRanking = rank; }
public Tournament getTournamentFromCapitolIndex(int capitolIndex, TournamentProtocol.Level level) { return(capitols[capitolIndex].Quarterlies[level]); }
private static void ageAndDevelop(ref DataPool worldData, int index, TournamentProtocol.Level level) { float agePercentage = getAgeFromLevel(level); List <EvaluationProtocol.Stats> bestTraits = new List <EvaluationProtocol.Stats>(); List <EvaluationProtocol.Stats> secondaryTraits = new List <EvaluationProtocol.Stats>(); List <EvaluationProtocol.Stats> build = BoxerClass.getBuild(worldData.Boxers[index].BoxerClass); if (build.Contains(EvaluationProtocol.Stats.AccuracyGrowth)) { bestTraits.Add(EvaluationProtocol.Stats.Accuracy); } else { secondaryTraits.Add(EvaluationProtocol.Stats.Accuracy); } if (build.Contains(EvaluationProtocol.Stats.EnduranceGrowth)) { bestTraits.Add(EvaluationProtocol.Stats.Endurance); } else { secondaryTraits.Add(EvaluationProtocol.Stats.Endurance); } if (build.Contains(EvaluationProtocol.Stats.HealthGrowth)) { bestTraits.Add(EvaluationProtocol.Stats.Health); } else { secondaryTraits.Add(EvaluationProtocol.Stats.Health); } if (build.Contains(EvaluationProtocol.Stats.SpeedGrowth)) { bestTraits.Add(EvaluationProtocol.Stats.Speed); } else { secondaryTraits.Add(EvaluationProtocol.Stats.Speed); } if (build.Contains(EvaluationProtocol.Stats.StrengthGrowth)) { bestTraits.Add(EvaluationProtocol.Stats.Strength); } else { secondaryTraits.Add(EvaluationProtocol.Stats.Strength); } foreach (EvaluationProtocol.Stats stat in bestTraits) { float value = getPrimaryStatFromLevel(level) * (agePercentage / 100.0f); value = value < 55.0f ? 55.0f : value; worldData.Boxers[index].modifyStat(stat, Mathf.RoundToInt(value)); } foreach (EvaluationProtocol.Stats stat in secondaryTraits) { float value = getSecondaryStatFromLevel(level) * (agePercentage / 100.0f); value = value < 40.0f ? 40.0f : value; worldData.Boxers[index].modifyStat(stat, Mathf.RoundToInt(value)); } worldData.Boxers[index].cutLife(Mathf.RoundToInt(worldData.Boxers[index].WeeksRemaining * (agePercentage / 100.0f))); }
public void graduateRank() { currentRanking = (TournamentProtocol.Level)(((int)currentRanking) + 1); }
public void setupNode(TournamentProtocol.Level level, int qCount, int tCount) { uiElements[WeekNodeLabel.Rank].SetText(level.ToString()); //uiElements[WeekNodeLabel.QualifierCount].SetText(qCount.ToString()); //uiElements[WeekNodeLabel.TournamentCount].SetText(tCount.ToString()); }
public static Tournament createQuarterlyTournament(TournamentProtocol.Level level, CalendarDate date) { return(new Tournament("Regional " + level.ToString() + " Qualifier", date, getPrizeMoney(level) + 1000.0f, 16, level, true)); }
public Manager(JSONObject json) : base(JSONTemplates.ToVector2Int(json.GetField("age")), json.GetField("firstname").str, json.GetField("lastname").str, (int)json.GetField("townindex").i, (int)json.GetField("weight").i) { preference = (BoxerClass.Type)Enum.Parse(typeof(BoxerClass.Type), json.GetField("preference").str); boxerIndex = (int)json.GetField("boxerindex").i; record = new Record(json.GetField("record")); atSea = json.GetField("atsea").b; atTournament = json.GetField("attournament").b; homebase = new Homebase(json.GetField("homebase")); ship = new Ship(json.GetField("ship")); finance = new FinanceProtocol(json.GetField("finance")); currentBoxerELO = json.GetField("boxerelo").f; currentManagerELO = json.GetField("managerelo").f; tournamentCount = (int)json.GetField("tournamentsattended").i; tournamentPriority = (int)json.GetField("priority").i; currentRanking = (TournamentProtocol.Level)Enum.Parse(typeof(TournamentProtocol.Level), json.GetField("rank").str); trainingRegime = new List <ManagerProtocol.FacilityShortcut>(); foreach (JSONObject r in json.GetField("trainingregime").list) { trainingRegime.Add((ManagerProtocol.FacilityShortcut)Enum.Parse(typeof(ManagerProtocol.FacilityShortcut), r.str)); } archivedBoxerELO = new List <float>(); foreach (JSONObject r in json.GetField("archivedboxerelo").list) { archivedBoxerELO.Add(r.f); } archivedManagerELO = new List <float>(); foreach (JSONObject r in json.GetField("archivedmanagerelo").list) { archivedManagerELO.Add(r.f); } previousOpponents = new List <int>(); foreach (JSONObject r in json.GetField("previousopponents").list) { previousOpponents.Add((int)r.i); } consumables = new List <Consumable>(); foreach (JSONObject r in json.GetField("consumables").list) { consumables.Add(new Consumable(r)); } arms = new List <Arm>(); foreach (JSONObject r in json.GetField("arms").list) { arms.Add(new Arm(r)); } legs = new List <Legs>(); foreach (JSONObject r in json.GetField("legs").list) { legs.Add(new Legs(r)); } implants = new List <Implant>(); foreach (JSONObject r in json.GetField("implants").list) { implants.Add(new Implant(r)); } }
public Town(string name, Vector2Int loc, TournamentProtocol.Level level) { this.name = name; this.location = loc; this.regionLevel = level; }