# Hierarchy For All Packages

Package Hierarchies:

- common,
- game,
- gui,
- gui.constants,
- gui.menu,
- gui.widget,
- network,
- network.client,
- network.protocol,
- network.protocol.packets,
- network.server,
- sudoku,
- sudoku.constraint,
- sudoku.io,
- sudoku.solver,
- sudoku.structure

## Class Hierarchy

- java.lang.Object
  - gui.widget.AnimatedBackground
  - gui.AssetManager
  - sudoku.solver.BacktrackingSolver (implements sudoku.solver.Solver)
  - gui.menu.BaseView
    - gui.menu.ConnexionStatusView
    - gui.menu.EndGameView
    - gui.menu.MainMenu
    - gui.menu.MultiMenu
    - gui.menu.MultiPlayerDokuView
    - gui.menu.MultiPlayerView
    - gui.menu.OptionsMenu
    - gui.menu.SoloMenu
    - gui.menu.SudokuView
  - sudoku.structure.Block
  - sudoku.constraint.BlockConstraint (implements sudoku.constraint.IConstraint)
  - sudoku.structure.Cell
  - network.client.Client
  - gui.ColorGenerator
  - gui.ColorGenerator.Color
  - sudoku.constraint.ColumnConstraint (implements sudoku.constraint.IConstraint)
  - network.Connexion (implements network.protocol.PacketVisitor)
    - network.client.ClientConnexion
    - network.server.ServerConnexion
  - sudoku.io.ConsoleInterface
  - common.ConsumerSignal<T>
  - sudoku.structure.Coordinate
  - sudoku.constraint.DiagonalConstraint (implements sudoku.constraint.IConstraint)
  - gui.constants.Fonts
  - game.Game
  - sudoku.solver.HintHelper
  - sudoku.solver.HumanSolver (implements sudoku.solver.Solver)
  - gui.constants.Images
  - network.server.KeepAliveHandler
  - gui.widget.LeaderboardRenderer
  - sudoku.constraint.LineConstraint (implements sudoku.constraint.IConstraint)
  - sudoku.Main
  - sudoku.solver.MixedSolver (implements sudoku.solver.Solver)
  - sudoku.structure.MultiDoku
  - gui.widget.MultiPlayerCompleteProgress
  - gui.constants.Options
  - network.protocol.Packet (implements java.io.Serializable)
    - network.protocol.packets.ChangeCellPacket
    - network.protocol.packets.ConnexionInfoPacket
    - network.protocol.packets.DisconnectPacket
    - network.protocol.packets.EndGamePacket
    - network.protocol.packets.KeepAlivePacket
    - network.protocol.packets.LoginPacket
    - network.protocol.packets.PlayerJoinPacket
    - network.protocol.packets.PlayerLeavePacket
    - network.protocol.packets.StartGamePacket
    - network.protocol.packets.UpdatePlayerScorePacket
  - game.Player (implements java.io.Serializable)
  - sudoku.solver.RandomSolver (implements sudoku.solver.Solver)
  - gui.RenderableMultidoku
  - network.server.Server
  - common.Signal
  - gui.widget.SmoothProgressBar
  - sudoku.solver.SolverStep
  - gui.menu.StateMachine
  - sudoku.structure.StateManager
  - sudoku.solver.StupidSolver (implements sudoku.solver.Solver)
  - sudoku.structure.Sudoku
  - sudoku.structure.SudokuFactory
  - sudoku.io.SudokuPrinter
  - gui.widget.SudokuRenderer
  - gui.widget.SudokuSelector
  - sudoku.io.SudokuSerializer
  - sudoku.SudokuSerializerTest
  - java.lang.Thread (implements java.lang.Runnable)
    - network.ConnexionThread
    - network.server.ServerAcceptThread
    - network.server.ServerLogicThread
  - gui.widget.TimerRenderer
  - imgui.app.Window
    - imgui.app.Application
      - gui.Main

## Interface Hierarchy

- sudoku.constraint.IConstraint
- network.protocol.PacketVisitor
- sudoku.solver.Solver

## Enum Class Hierarchy

- java.lang.Object
  - java.lang.Enum<E> (implements java.lang.Comparable<T>, java.lang.constant.Constable, java.io.Serializable)
    - sudoku.constraint.Constraint
    - sudoku.structure.Difficulty
    - game.Game.GameState
    - network.protocol.Packets
    - gui.constants.SudokuType
    - gui.constants.Symbols

## Record Class Hierarchy

- java.lang.Object
  - java.lang.Record
    - sudoku.solver.HintHelper.Hint