@startuml
'https://plantuml.com/class-diagram

!pragma layout smetana


skinparam backgroundColor gray

class main {
}

class Player {
    - int HP
    - int damage
    - int gold
    - String playerName
    - Storage storage
}

class Monsters {
    - int hitPoints
    - int damage
    - String monsterName
}

class BattleSystem {
    - int turn

    - attack();
    - heal();
    - viewStorage();
    - useItem();
    - escapeBattle();
}

class GameController{

}

class Storage {
    - ArrayList<Item> playerItems

    + loadPlayerItemsFromFileToArrayList()
    + addItemToPlayerItemList()
    + removeItemFromPlayerItemList()
}

class Levels {
    - ArrayList<Fields> fields

    + addFieldsToArrayList();
}

class Item {
    - String itemName;
    - int id;
    - String rarity;
    + ArrayList<Item> itemTypes;

    - createItem(String selectRandomItemRarity, String selectRandomItemType);
    - String selectRandomItemRarity();
    - String selectRandomItemType();
    - loadItemsFromDBToArrayList();
}

class LootChest {
    - getRandomItem();
    - getRandomGold();
}

abstract class Fields {
    - String fieldName;
    - Item item;

    - doFunction();
}

class weaponSmith{
}

class MonsterBattle {

    - startBattle();
}

class ItemShop {


    - buyItem();
}

class Options {

    - viewPlayerStats();
    - saveData();
    - viewStorage();
    - restToHeal();
}

interface IO {
    - saveGameData();
    - saveTeamData();
    - saveTournamentData();

}

class FileIO {
    - readGameData(String path);
    - readTeamData(String path);
    - readTournamentData(String path);
}

main *-- GameController
GameController *-- Player
GameController *-- Levels
GameController *-- Options
Player *-- Storage
Storage o-- Item
Levels *-- Fields
Fields <|-- ItemShop
Fields <|-- LootChest
Fields <|-- weaponSmith
Fields <|-- MonsterBattle
GameController *-- FileIO
MonsterBattle *-- Monsters
MonsterBattle *-- BattleSystem

FileIO <|-- IO
'Spørg om pilen fra IO vender rigtigt'

Fields *-- Item

@enduml