UML

---
config:
  theme: forest
---

classDiagram

    GameManager --|> GameObjectList
    class GameManager {
        +int TurnCounter
        +Team CurrentPlayer
        +int IdMatch
        +string RoomId
        +Team Team
        +string Direction
        +static GameManager Instance
        -GameStateText _gameStateText
        -TextGameObject _teamText
        -TextGameObject _turnText
        -TextGameObject _nextDirection
        -int _sideTextX
        -int _teamtextY
        -int _turntextY
        -ConcurrentQueue~Action~ _mainThreadActions
        +AnimatedPlayer nederlandPlayer
        +AnimatedPlayer belgiePlayer
        +ChatBalk chatBalk
        +SendMoveData(int SelectedColumn) void
        +SendChatMessage(string message) void
        +RequestDirectionData() void
        +ShowMessage(string message) void
    }

    ChatBalk --|> TextInput
    class ChatBalk {
        -bool isActive
        -bool HasSubmittedText
        -string LastSubmittedText
        -Grid _grid
        -float _bubbleLifeTime
        -GameObjectList _parent
        -ChatBubble _activeChatBubble
        -Vector2 _belgieBubblePosition
        -Vector2 _nederlandBubblePosition
        -ChatBubble _nederlandChatBubble
        -ChatBubble _belgieChatBubble
        -string placeholderText
        +SetPosition(Vector2 newPosition) void
        +SetGrid(Grid grid) void
        +SetParent(GameObjectList parent) void
        +HandleInput(InputHelper inputHelper) void
        +CreateChatBubble(string message, Team team) void
        +ClearSubmission() void
        +ClearText() void
    }

    chatBubble --|> GameObjectList
    class ChatBubble {
        -TextGameObject messageText
        -SpriteGameObject bubbleBackground
        -bool isRightAligned
        -double timeAlive
        -float lifetime
        -GameObjectList parent
        +SetPosition(Vector2 newPosition) void
        +SetParent(GameObjectList parent) void
        +Update(GameTime gameTime) void
        +WrapText(string text, int maxLineLength) string
        +Message string
    }

Last update: June 4, 2025