public void Battle(BattleManager manager, Team playerTeam) { bool continuer = true; while (continuer) { Region region = _regionalMap.CurrentArea; ColorString introString = new ColorString($"You have entered the {region.AreaId} region"); if (!string.IsNullOrWhiteSpace(region.RegionIntro?.GetFullString())) { introString = region.RegionIntro; } _output.WriteLine(introString); BattleEndStatus battleEndStatus = BattleThroughRegion(region, manager, playerTeam); if (battleEndStatus != BattleEndStatus.Victory) { continuer = false; } else { region = _regionalMap.Advance(_decisionManager, playerTeam); if (region == null) { continuer = false; } } } }
private BattleEndStatus BattleThroughRegion(Region region, BattleManager manager, Team playerTeam) { bool continuer = true; BattleEndStatus battleEndStatus = BattleEndStatus.None; foreach (HumanFighter fighter in playerTeam.Fighters.OfType <HumanFighter>()) { foreach (BattleMove regionMove in region.MovesUnlockedUponEnteringRegion) { fighter.AddMove(regionMove); } } AreaMap <SubRegion, WorldSubRegion> subRegionalMap = _mapManager.GetSubRegionalMap(region.AreaId, region.SubRegions); while (continuer) { SubRegion subRegion = subRegionalMap.CurrentArea; subRegion.Fooed += PleaseDeleteMeIAmTerribleCode; _playerTeam = playerTeam; ColorString introString = new ColorString($"You have entered the {subRegion.AreaId} sub region"); if (!string.IsNullOrWhiteSpace(subRegion.RegionIntro?.GetFullString())) { introString = subRegion.RegionIntro; } _output.WriteLine(introString); battleEndStatus = BattleThroughSubRegion(subRegion, manager, playerTeam); if (battleEndStatus != BattleEndStatus.Victory) { continuer = false; subRegion.Fooed += PleaseDeleteMeIAmTerribleCode; } else { List <HumanFighter> fighters = playerTeam.GetHumanFighters().ToList(); subRegion.ExecuteCutscene(_input, _output, fighters[0], fighters[1]); subRegion.Fooed += PleaseDeleteMeIAmTerribleCode; subRegion = subRegionalMap.Advance(_decisionManager, playerTeam); if (subRegion == null) { continuer = false; } } } return(battleEndStatus); }