Tales-of-PKMN/game/battle/battle_debug.gd

53 lines
2.2 KiB
GDScript

class_name BattleDebug
extends Node
#banc d'essai : simule un combat complet IA contre IA et ecrit tout dans la console.
#ajoute ce node a une scene, regle le format dans l'inspecteur, lance la scene.
#utilise des equipes aleatoires (par defaut) : n'abime pas ton equipe de jeu.
@export var run_on_ready : bool = true
@export_range(1, 3) var player_slots : int = 1 #emplacements du joueur
@export_range(1, 5) var enemy_count : int = 1 #nombre d'adversaires (chacun est un participant)
@export_range(1, 3) var enemy_slots_each : int = 1 #emplacements de chaque adversaire
@export_range(1, 6) var team_size : int = 3
@export_range(1, 100) var level : int = 10
@export var use_game_team : bool = false #true : utilise GameData.player_team (qui sera modifiee !)
func _ready() -> void:
if run_on_ready:
await get_tree().create_timer(0.5).timeout
run_test()
func run_test() -> void:
if use_game_team:
GameData.load_data()
var player_team : PokemonTeam = GameData.player_team if use_game_team else _random_team(maxi(team_size, player_slots))
var setup := BattleSetup.new()
setup.add(BattleSetup.player_participant(player_team, player_slots, null, BattleAI.new()))
for i in enemy_count:
var team : PokemonTeam = _random_team(enemy_slots_each + 1)
var participant := BattleParticipant.new("Adversaire %d" % (i + 1), team, 1, BattleAI.new(), enemy_slots_each)
setup.add(participant)
if !setup.is_valid():
push_error("BattleDebug : combat invalide (une equipe n'a aucun pokemon apte)")
return
print("===== Combat : %d contre %d =====" % [player_slots, enemy_count * enemy_slots_each])
var battle := Battle.new(setup, BattlePrintPresenter.new())
var outcome : Battle.Outcome = await battle.run()
print("===== Resultat : %s apres %d tours =====" % [Battle.Outcome.keys()[outcome], battle.turn])
func _random_team(size : int) -> PokemonTeam:
var team := PokemonTeam.new()
var ids : Array = Pokedex.all_ids()
if ids.is_empty():
push_error("BattleDebug : le Pokedex ne contient aucun pokemon")
return team
for i in size:
var species : PokemonData = Pokedex.get_pokemon(ids.pick_random())
if species: team.add_pokemon(PokemonInstance.create(species, level))
return team