# -*- coding: utf-8 -*-
from generator import *

spawn1 = [
        Spawn(floor = 1, id = "normal"),
        Spawn(floor = 1, id = "small"),
        Spawn(floor = 1, id = "yekc_huge"),
    ]
spawn2 = [
        Spawn(floor = 2, id = "tree")
    ]
spawn3 = [
        Spawn(floor = 3, id = "island")
    ]
spawn4 = [
    Spawn(floor=4, id="normal_piro_oh")    
]
spawn = spawn1 + spawn2 + spawn3 + spawn4

enemy1 = [
        Enemy(floor = 1, id = "4_archers", weight = 2),
        Enemy(floor = 1, id = "two_floor", weight = 2),
        Enemy(floor = 1, id = "small", weight = 1),
        Enemy(floor = 1, id = "small_secret", weight = 1),
        Enemy(floor = 1, id = "big_random", weight = 3), # knight tutorial
        Enemy(floor = 1, id = "island", weight = 2),
        Enemy(floor = 1, id = "cave", weight = 2),
        Enemy(floor = 1, id = "winding_cave", weight = 2),
        Enemy(floor = 1, id = "castle_circle", weight = 2), # knight tutorial
        Enemy(floor = 1, id = "hydroangeas_4_arches", weight = 2),
        Enemy(floor = 1, id = "hydroangeas_dolme", weight = 2),
        Enemy(floor = 1, id = "hydroangeas_storage", weight = 2),
        Enemy(floor = 1, id = "min3erminor_end_mysuffering_island", weight = 2), # island
        Enemy(floor = 1, id = "jonloveslegos_mineshaft", weight = 2),
        Enemy(floor = 1, id = "jonloveslegos_mine", weight = 2),
    ]
enemy2 = [
        Enemy(floor = 2, id = "small_corridor"),
        Enemy(floor = 2, id = "bamboo_forest"),
        Enemy(floor = 2, id = "triple_hight"),
        Enemy(floor = 2, id = "assassin_tutorial"),
        Enemy(floor = 2, id = "spier_cave"),
        Enemy(floor = 2, id = "hydroangeas_cave_lake"),
        Enemy(floor = 2, id = "mandragora_garden"),
        Enemy(floor = 2, id = "frog_pond"),
        Enemy(floor = 2, id = "elf_ruin"),
        Enemy(floor = 2, id = "ruin_1"),
        Enemy(floor = 2, id = "labyrinth"),
        Enemy(floor = 2, id = "island_1"),
        Enemy(floor = 2, id = "spider_cave_2"),
        Enemy(floor = 2, id = "all"),
    ]
enemy3 = [
        Enemy(floor = 3, id = "open_cave"),
        Enemy(floor = 3, id = "youknowwho_storage"),
        Enemy(floor = 3, id = "bottled_ship"),
        Enemy(floor = 3, id = "youknowwho_temple"),
        Enemy(floor = 3, id = "hermit_crab_rush"),
        Enemy(floor = 3, id = "ravine"),
        Enemy(floor = 3, id = "coral_reef"),
    ]
enemy4 = [
    Enemy(floor = 4, weight=2, id = "platforms_piro_oh"),
    Enemy(floor = 4, weight=2, id = "small_piro_oh"),
    Enemy(floor = 4, weight=2, id = "guards_piro_oh"),
    Enemy(floor = 4, weight=2, id = "gears_piro_oh"),
    Enemy(floor = 4, weight=1, id = "jails_piro_oh_00"),
    Enemy(floor = 4, weight=1, id = "jails_piro_oh_01"),
    Enemy(floor = 4, weight=2, id = "transport_piro_oh"),
    Enemy(floor = 4, weight=3, id = "laverynth_piro_oh"),
    Enemy(floor = 4, weight=2, id = "circular_pipe_piro_oh"),
    Enemy(floor = 4, weight=2, id = "circular_piro_oh"),
]
enemy = enemy1 + enemy2 + enemy3 + enemy4

trapped1 = [
        Trapped(floor = 1, id = "spike_parkour"),
        Trapped(floor = 1, id = "spike_laberint"),
    ]
trapped2 = [
        Trapped(floor = 2, id = "puffball"),
    ]
trapped3 = [
    Trapped(floor = 3, id = "fire_cave"),
    Trapped(floor = 3, id = "cave_mines"),
    ]
trapped4 = [
    Trapped(floor = 4, id = "electric_slime_piro_oh"),
]
trapped = trapped1 + trapped2 + trapped3 + trapped4

armory1 = [
        Armory(floor = 1, id = "center"),
        Armory(floor = 1, id = "middle_hole"),
    ]
armory2 = [
        Armory(floor = 2, id = "temple"),
    ]
armory3 = [
        Armory(floor = 3, id = "unerwater_cave_temple"),
        Armory(floor = 3, id = "unerwater_cave_loot"),
    ]
armory4 = [
    Armory(floor = 4, id = "acid_break_piro_oh"),
    Armory(floor = 4, id = "gears_piro_oh")
]
armory = armory1 + armory2 + armory3 + armory4

shop1 = [
        Shop(floor = 1, id = "hydroangeas_bar"),
    ]
shop2 = [
        Shop(floor = 2, id = "stump"),
    ]
shop3 = [
        Shop(floor = 3, id = "fishing_hut"),
    ]
shop4 = [
        Shop(floor = 4, id = "workroom_piro_oh"),
]
shop = shop1 + shop2 + shop3 + shop4

boss1 = [
        Boss(floor = 1, id = "troll_leader", weight = 2),
        Boss(floor = 1, id = "zeldia_king"),
        Boss(floor = 1, id = "yekc_zeldia_king"),
        Boss(floor = 1, id = "mega_slime", weight = 2),
    ]
boss2 = [
        Boss(floor = 2, id = "spider_queen"),
        Boss(floor = 2, id = "frog_king"),
        Boss(floor = 2, id = "druid"),
    ]
boss3 = [
        Boss(floor = 3, id ="pirate_king"),
        Boss(floor = 3, id ="drowned_diver"),
    ]
boss4 = [
    Boss(floor = 4, id ="piro_oh"),
    Boss(floor = 4, id ="twisted_mechanic_piro_oh"),
    Boss(floor = 4, id ="mechanical_monstrosity_piro_oh"),
]
boss = boss1 + boss2 + boss3 + boss4

challenge1 = [
        Challenge(floor = 1, id = "tmp"),
    ]
challenge2 = [
        Challenge(floor = 2, id = "tmp"),
    ]
challenge3 = [
        Challenge(floor = 3, id = "tmp"),
    ]
challenge4 = []
challenge = challenge1 + challenge2 + challenge3 + challenge4

wall1 = [
        Wall(floor = 1, id = "00", type = 'castle', weight = 2),
        Wall(floor = 1, id = "01", type = 'castle'),
        Wall(floor = 1, id = "02", type = 'castle'),
        Wall(floor = 1, id = "00", type = 'cave', weight = 2),
        Wall(floor = 1, id = "01", type = 'cave'),
        Wall(floor = 1, id = "02", type = 'cave'),
    ]
wall2 = [
        Wall(floor = 2, id = "00", type = 'forest'),
        Wall(floor = 2, id = "01", type = 'forest'),
        Wall(floor = 2, id = "01", type = 'jungle')
    ]
wall3 = [
        Wall(floor = 3, id = "00", type = 'sandstone', weight = 2),
        Wall(floor = 3, id = "01", type = 'sandstone'),
        Wall(floor = 3, id = "02", type = 'sandstone'),
        Wall(floor = 3, id = "00", type = 'sky'),
        Wall(floor = 3, id = "00", type = 'prismarine'),
        Wall(floor = 3, id = "01", type = 'prismarine'),
        Wall(floor = 3, id = "00", type = 'oak_plank'),
        Wall(floor = 3, id = "00", type = 'water'),
    ]
wall4 = [
        Wall(floor = 4, id = "00", type = 'spruce_plank'),
        Wall(floor = 4, id = "00", type = 'floor_4'),
]
wall = wall1 + wall2 + wall3 + wall4




generator = Generator(spawn + enemy + trapped + armory + boss + wall + shop)
generator.make()

print('\n {:8s} | {:6s}  {:6s}  {:6s}  {:9s}  {:6s}  {:6s}  {:6s} | {:6s} (no walls)'.format('', 'Spawn', 'Enemy', 'Trap', 'Armory', 'Shop', 'Boss', 'Wall', 'Total'))
print(' --------------------------------------------------------------------------------------')
print(' {:8s} | {:^6d}  {:^6d}  {:^6d}  {:^9d}  {:^6d}  {:^6d}  {:^6d} | {:<6d}'.format('Floor 1', len(spawn1), len(enemy1), len(trapped1), len(armory1), len(shop1), len(boss1), len(wall1), len(spawn1+enemy1+trapped1+armory1+shop1+boss1)))
print(' {:8s} | {:^6d}  {:^6d}  {:^6d}  {:^9d}  {:^6d}  {:^6d}  {:^6d} | {:<6d}'.format('Floor 2', len(spawn2), len(enemy2), len(trapped2), len(armory2), len(shop2), len(boss2), len(wall2), len(spawn2+enemy2+trapped2+armory2+shop2+boss2)))
print(' {:8s} | {:^6d}  {:^6d}  {:^6d}  {:^9d}  {:^6d}  {:^6d}  {:^6d} | {:<6d}'.format('Floor 3', len(spawn3), len(enemy3), len(trapped3), len(armory3), len(shop3), len(boss3), len(wall3), len(spawn3+enemy3+trapped3+armory3+shop3+boss3)))
print(' {:8s} | {:^6d}  {:^6d}  {:^6d}  {:^9d}  {:^6d}  {:^6d}  {:^6d} | {:<6d}'.format('Floor 4', len(spawn4), len(enemy4), len(trapped4), len(armory4), len(shop4), len(boss4), len(wall4), len(spawn4+enemy4+trapped4+armory4+shop4+boss4)))
print(' --------------------------------------------------------------------------------------')
print(' {:8s} | {:^6d}  {:^6d}  {:^6d}  {:^9d}  {:^6d}  {:^6d}  {:^6d} | {:<6d}'.format('Total', len(spawn), len(enemy), len(trapped), len(armory), len(shop), len(boss), len(wall), len(spawn+enemy+trapped+armory+shop+boss)))

input("\n\nPress ENTER to end.")
