import json
import random

# Load data from uploaded files
with open('json/movesOUT.json', 'r') as moves_file:
    moves_data = json.load(moves_file)

with open('json/pokemon.json', 'r') as pokemon_file:
    pokemon_data = json.load(pokemon_file)

with open('json/trainers.json', 'r') as trainers_file:
    trainers_data = json.load(trainers_file)

# Generate relationships

# TRAINED_BY: Assign random trainers to Pokémon
trained_by_relationships = [
    {"pokemon": pokemon["name"], "trainer": random.choice(trainers_data)["name"]}
    for pokemon in pokemon_data
]

# USES_MOVE: Assign two random moves of the same type to each Pokémon
uses_move_relationships = []
for pokemon in pokemon_data:
    compatible_moves = [move["name"] for move in moves_data if move["type"].lower() == pokemon["type"].lower()]
    selected_moves = random.sample(compatible_moves, min(2, len(compatible_moves)))
    for move in selected_moves:
        uses_move_relationships.append({"pokemon": pokemon["name"], "move": move})

# DEFEATED: Create random unique pairs of trainers for battles
trainers_list = [trainer["name"] for trainer in trainers_data]
defeated_relationships = []
while len(defeated_relationships) < len(trainers_list) // 2:
    trainer1, trainer2 = random.sample(trainers_list, 2)
    if {"winner": trainer1, "loser": trainer2} not in defeated_relationships and \
       {"winner": trainer2, "loser": trainer1} not in defeated_relationships:
        defeated_relationships.append({"winner": trainer1, "loser": trainer2})

# Combine all relationships into a single dataset
final_relationships = {
    "TRAINED_BY": trained_by_relationships,
    "USES_MOVE": uses_move_relationships,
    "DEFEATED": defeated_relationships
}

# Save the final relationships to a JSON file
output_file = 'final_relationships.json'
with open(output_file, 'w', encoding='utf-8') as file:
    json.dump(final_relationships, file, indent=4)

print(f"Relationships saved to {output_file}")
