Difference between revisions of "TDD"

From Project Wiki
Jump to navigation Jump to search
Line 29: Line 29:
 
Placing Tiles
 
Placing Tiles
  
== Combat System ==
+
== Game Systems ==
 +
 
 +
=== Game Manager ===
 +
Needs to accessible from everywhere at any time while the Game is running.
 +
 
 +
Keeps track of all persistent data.
 +
 
 +
* Player Party
 +
 
 +
- Characters & Formation
 +
 
 +
- Inventory
 +
 
 +
* General Progress
 +
 
 +
=== Dungeon Manager ===
 +
Needs to be accessible by everything on the Grid during Exploration. (So as long as the Player is in a Dungeon)
 +
 
 +
Keeps track of all dungeon data.
 +
 
 +
* Dungeon Information
 +
 
 +
- Dungeon Name
 +
 
 +
- Anything else a Dungeon needs to know
 +
 
 +
* Handles the Grid System
  
==== Combat Manager ====
+
- Position of everything on the Grid
-> Accessible from Enemies and Player/Abilities
 
  
Needs to hold:
+
- Tick-Based Movement
  
- Player
+
=== Combat Manager ===
 +
Needs to be accessible by all combatants during Combat. (Only as long as combat is happening)
  
- Enemies
+
Keeps track of all combat data.
  
- Turn order
+
* Enemies
 +
* Enemy Formation
  
- Track turns
+
* Turn order
 +
* Any "Field Effects" or similar (if they exist)
  
 
== Item System ==
 
== Item System ==
Line 54: Line 82:
  
 
Equipment, Key Items, etc. are children of "Item"
 
Equipment, Key Items, etc. are children of "Item"
 +
 +
Somewhat similar to https://github.com/sniffle6/Scriptable-Object-Inventory Implementation as reference if stuck.
  
 
=== Item ===
 
=== Item ===
Line 64: Line 94:
 
- Value?
 
- Value?
  
==== Equipment ====
+
==== EquipmentItem ====
 
- Equipment Type
 
- Equipment Type
  
Line 74: Line 104:
 
==== KeyItem ====
 
==== KeyItem ====
 
- ???
 
- ???
 +
== Combat System ==
 +
 +
=== Combat Manager ===
 +
-> Accessible from Enemies and Player/Abilities
 +
 +
Needs to hold:
 +
 +
- Player
 +
 +
- Enemies
 +
 +
- Turn order
 +
 +
- Track turns

Revision as of 10:17, 21 February 2022

Level Editor

2D Gridsystem

Visualize Grid

Visualising the grid using a queue/list of vertLines and horLines which get put on the respectively other side if the grid moves out of sight.

In the Queue/List the first element is the top/left line and the last is the bottom/right element.

Grid Data

The Grid will need to save data of all objects within the Grid, since the 2D Grid will be used for pathfinding calculations, movement, checking for obstacles, etc.

- All viable standing locations

- For every tile:

  • All directions to move to
  • All special actions which are viable (e.g. buttons, keys, etc.)
  • What Entity is on that tile (e.g. Player, Enemies, etc.)

=> Maybe as a big matrix with each element being tile or edge and tiles know they can traverse to the next tile if the element in that direction is empty. So if tile(2,2) wants to go to tile(2,4) it check's edge(2,3) if it's empty or not

Placing Edges

Edges will only be placed in straight lines.

LeftClick on the Grid will place a Edge

Hold LeftClick will place Edges as far as the mouse is dragged in the according direction.

Placing Tiles

Game Systems

Game Manager

Needs to accessible from everywhere at any time while the Game is running.

Keeps track of all persistent data.

  • Player Party

- Characters & Formation

- Inventory

  • General Progress

Dungeon Manager

Needs to be accessible by everything on the Grid during Exploration. (So as long as the Player is in a Dungeon)

Keeps track of all dungeon data.

  • Dungeon Information

- Dungeon Name

- Anything else a Dungeon needs to know

  • Handles the Grid System

- Position of everything on the Grid

- Tick-Based Movement

Combat Manager

Needs to be accessible by all combatants during Combat. (Only as long as combat is happening)

Keeps track of all combat data.

  • Enemies
  • Enemy Formation
  • Turn order
  • Any "Field Effects" or similar (if they exist)

Item System

Items will need to be accessible from everywhere using only an ID.

-> Have them saved in a big Array?

-> Save that Array in a xml?

Every Item is a Scriptable Object.

Equipment, Key Items, etc. are children of "Item"

Somewhat similar to https://github.com/sniffle6/Scriptable-Object-Inventory Implementation as reference if stuck.

Item

- ID

- Icon

- ItemType Enum

- Value?

EquipmentItem

- Equipment Type

- Stats (as Dictionary(str,int) so Armor can have different Stats than Weapons, etc.)

DungeonItem

- ???

KeyItem

- ???

Combat System

Combat Manager

-> Accessible from Enemies and Player/Abilities

Needs to hold:

- Player

- Enemies

- Turn order

- Track turns