# casonanim/projectanchor architecture

> Architecture diagram of the GitHub repository casonanim/projectanchor, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-09). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/casonanim/projectanchor
- Repository: https://github.com/casonanim/projectanchor

## Overview

This is a small Java card-battle prototype. Its visible workflow starts in Main, which builds and displays a board, creates the human player, then starts BattleManager; the manager creates a CPU player and invokes the human turn. Players build and draw from card-instance decks, while the board stores cards in slots and resolves attacks. The excerpts show only a partial game loop: human placement and CPU turns are empty. UIHelper and UDim2 are present, but no use of them is shown. Edges reflect only relationships visible in the excerpts; no README documentation was provided.

Main entry points: [`src/InstanceCard.java`](https://github.com/casonanim/projectanchor/blob/main/src/InstanceCard.java) (Card instance), [`src/Player.java`](https://github.com/casonanim/projectanchor/blob/main/src/Player.java) (Player base), [`src/Board.java`](https://github.com/casonanim/projectanchor/blob/main/src/Board.java) (Battle board), [`src/Slot.java`](https://github.com/casonanim/projectanchor/blob/main/src/Slot.java) (Board slot)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Game startup"]
  node_main["Main<br/>[Main.java]"]
  node_battle["Battle manager<br/>[BattleManager.java]"]
end

subgraph group_gameplay["Turns and board"]
  node_user["Human player<br/>[User.java]"]
  node_cpu["CPU player<br/>[PlayerCPU.java]"]
  node_player["Player base<br/>[Player.java]"]
  node_board["Battle board<br/>[Board.java]"]
  node_slot["Board slot<br/>[Slot.java]"]
end

subgraph group_cards["Cards and decks"]
  node_instance["Card instance<br/>[InstanceCard.java]"]
  node_deck["Deck builder<br/>[Deck.java]"]
  node_card["Card definition<br/>[Card.java]"]
  node_originals["Card catalog<br/>[CardOriginal.java]"]
end

subgraph group_utilities["UI utilities"]
  node_uihelper["Layout helper<br/>[UIHelper.java]"]
  node_udim["UDim2<br/>[UDim2.java]"]
end

node_main -->|"creates and displays"| node_board
node_main -->|"creates"| node_user
node_main -->|"starts"| node_battle
node_battle -->|"creates"| node_cpu
node_battle -->|"invokes turn"| node_player
node_user -->|"extends; draws and shows"| node_player
node_cpu -->|"extends"| node_player
node_player -->|"builds deck"| node_deck
node_player -->|"stores and draws"| node_instance
node_deck -->|"creates instances"| node_instance
node_deck -->|"uses starter cards"| node_originals
node_originals -->|"defines cards"| node_card
node_instance -->|"reads attributes"| node_card
node_board -->|"creates and reads"| node_slot
node_board -->|"attacks with"| node_instance
node_board -->|"resolves attacks on"| node_slot
node_slot -->|"stores and returns"| node_instance
node_instance -->|"targets attack"| node_slot

click node_main "https://github.com/casonanim/projectanchor/blob/main/src/Main.java"
click node_battle "https://github.com/casonanim/projectanchor/blob/main/src/BattleManager.java"
click node_user "https://github.com/casonanim/projectanchor/blob/main/src/User.java"
click node_cpu "https://github.com/casonanim/projectanchor/blob/main/src/PlayerCPU.java"
click node_player "https://github.com/casonanim/projectanchor/blob/main/src/Player.java"
click node_board "https://github.com/casonanim/projectanchor/blob/main/src/Board.java"
click node_slot "https://github.com/casonanim/projectanchor/blob/main/src/Slot.java"
click node_instance "https://github.com/casonanim/projectanchor/blob/main/src/InstanceCard.java"
click node_deck "https://github.com/casonanim/projectanchor/blob/main/src/Deck.java"
click node_card "https://github.com/casonanim/projectanchor/blob/main/src/Card.java"
click node_originals "https://github.com/casonanim/projectanchor/blob/main/src/CardOriginal.java"
click node_uihelper "https://github.com/casonanim/projectanchor/blob/main/src/UIHelper.java"
click node_udim "https://github.com/casonanim/projectanchor/blob/main/src/UDim2.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_main,node_battle toneBlue
class node_user,node_cpu,node_player,node_board,node_slot toneAmber
class node_instance,node_deck,node_card,node_originals toneMint
class node_uihelper,node_udim toneRose
```

## Components

### Game startup

- [Main](https://github.com/casonanim/projectanchor/blob/main/src/Main.java): `src/Main.java`
- [Battle manager](https://github.com/casonanim/projectanchor/blob/main/src/BattleManager.java): `src/BattleManager.java`

### Turns and board

- [Human player](https://github.com/casonanim/projectanchor/blob/main/src/User.java): `src/User.java`
- [CPU player](https://github.com/casonanim/projectanchor/blob/main/src/PlayerCPU.java): `src/PlayerCPU.java`
- [Player base](https://github.com/casonanim/projectanchor/blob/main/src/Player.java): `src/Player.java`
- [Battle board](https://github.com/casonanim/projectanchor/blob/main/src/Board.java): `src/Board.java`
- [Board slot](https://github.com/casonanim/projectanchor/blob/main/src/Slot.java): `src/Slot.java`

### Cards and decks

- [Card instance](https://github.com/casonanim/projectanchor/blob/main/src/InstanceCard.java): `src/InstanceCard.java`
- [Deck builder](https://github.com/casonanim/projectanchor/blob/main/src/Deck.java): `src/Deck.java`
- [Card definition](https://github.com/casonanim/projectanchor/blob/main/src/Card.java): `src/Card.java`
- [Card catalog](https://github.com/casonanim/projectanchor/blob/main/src/CardOriginal.java): `src/CardOriginal.java`

### UI utilities

- [Layout helper](https://github.com/casonanim/projectanchor/blob/main/src/UIHelper.java): `src/UIHelper.java`
- [UDim2](https://github.com/casonanim/projectanchor/blob/main/src/UDim2.java): `src/UDim2.java`

## Connections

- Main → Battle board: creates and displays (evidence: `src/Main.java`)
- Main → Human player: creates (evidence: `src/Main.java`)
- Main → Battle manager: starts (evidence: `src/Main.java`)
- Battle manager → CPU player: creates (evidence: `src/BattleManager.java`)
- Battle manager → Player base: invokes turn (evidence: `src/BattleManager.java`)
- Human player → Player base: extends; draws and shows (evidence: `src/User.java`)
- CPU player → Player base: extends (evidence: `src/PlayerCPU.java`)
- Player base → Deck builder: builds deck (evidence: `src/Player.java`)
- Player base → Card instance: stores and draws (evidence: `src/Player.java`)
- Deck builder → Card instance: creates instances (evidence: `src/Deck.java`)
- Deck builder → Card catalog: uses starter cards (evidence: `src/Deck.java`)
- Card catalog → Card definition: defines cards (evidence: `src/CardOriginal.java`)
- Card instance → Card definition: reads attributes (evidence: `src/InstanceCard.java`)
- Battle board → Board slot: creates and reads (evidence: `src/Board.java`)
- Battle board → Card instance: attacks with (evidence: `src/Board.java`)
- Battle board → Board slot: resolves attacks on (evidence: `src/Board.java`)
- Board slot → Card instance: stores and returns (evidence: `src/Slot.java`)
- Card instance → Board slot: targets attack (evidence: `src/InstanceCard.java`)
