mirror of
https://github.com/boudji-ludwig-pett/cnam-geometry-dash.git
synced 2025-02-17 12:28:10 +01:00
docs(class-diagram): complete class diagram (#35)
Co-authored-by: Djelal Boudji <dboudji@unistra.fr>
This commit is contained in:
parent
af64c2e0f4
commit
51404e5cc6
@ -5,89 +5,107 @@ skinparam classAttributeIconSize 0
|
||||
skinparam classFontStyle Bold
|
||||
hide enum methods
|
||||
|
||||
class Player {
|
||||
{field} + JUMP_FORCE: Double {readOnly}
|
||||
{field} + SPEED: Double {readOnly}
|
||||
{field} + SPEED: Double {readOnly}
|
||||
class GameManager {
|
||||
- score: int
|
||||
- isPaused: Boolean
|
||||
+ StartGame()
|
||||
+ RestartLevel()
|
||||
+ PauseGame()
|
||||
+ ResumeGame()
|
||||
+ UpdateScore(points: int)
|
||||
}
|
||||
|
||||
{method} + jump()
|
||||
{method} + isJumping(): boolean
|
||||
{method} + OnCollisionEnter2D(collision : Collision2D)
|
||||
{method} + OnCollisionExit2D(collision : Collision2D)
|
||||
class Level {
|
||||
- name: String
|
||||
- musicPath: String
|
||||
+ StartLevel()
|
||||
+ EndLevel()
|
||||
+ CheckCompletion(): Boolean
|
||||
}
|
||||
|
||||
abstract class LevelElement {
|
||||
{field} + x: Integer
|
||||
{field} + y: Integer
|
||||
{method} + getImagePath(): String {abstract}
|
||||
- x: Float
|
||||
- y: Float
|
||||
}
|
||||
|
||||
class Obstacle extends LevelElement {
|
||||
|
||||
abstract class Obstacle extends LevelElement {
|
||||
+ TriggerEffect(player: Player)
|
||||
}
|
||||
|
||||
class Platform extends Obstacle {
|
||||
|
||||
class Platform extends LevelElement {
|
||||
}
|
||||
|
||||
class Spike extends Obstacle {
|
||||
|
||||
+ TriggerEffect(player: Player)
|
||||
}
|
||||
|
||||
class Portal extends LevelElement {
|
||||
- destination: Vector2
|
||||
- type: PortalType
|
||||
+ Teleport(player: Player)
|
||||
}
|
||||
|
||||
enum PortalType {
|
||||
Normal, Gravity, Speed
|
||||
}
|
||||
|
||||
class Bumper extends LevelElement {
|
||||
|
||||
- bounceForce: Float
|
||||
+ Bounce(player: Player)
|
||||
}
|
||||
|
||||
class LevelEnd extends LevelElement {
|
||||
|
||||
+ TriggerEndGame()
|
||||
}
|
||||
|
||||
abstract class Level {
|
||||
{field} + jsonPath: String
|
||||
{field} + name: String
|
||||
{field} + musicPath: String
|
||||
{field} + progression: Integer
|
||||
|
||||
{field} + totalJumps: Integer
|
||||
{field} + totalAttempts: Integer
|
||||
{field} + killedCount: Integer
|
||||
|
||||
{method} + placeElements()
|
||||
{method} + placeElement(levelElement: LevelElement) {static}
|
||||
class Collectible extends LevelElement {
|
||||
- points: int
|
||||
+ Collect(player: Player)
|
||||
}
|
||||
|
||||
class LevelStats extends Stats {
|
||||
|
||||
class Player {
|
||||
- JUMP_FORCE: static const Float = 26.6581
|
||||
- SPEED: static const Float = 8.6
|
||||
- rigidBody: Rigidbody2D
|
||||
- isColliding: Boolean
|
||||
- isGrounded: Boolean
|
||||
- gravityScale: Float
|
||||
+ Jump()
|
||||
+ IsJumping(): Boolean
|
||||
+ OnCollisionEnter2D(collision: Collision2D)
|
||||
+ OnCollisionExit2D(collision: Collision2D)
|
||||
+ ChangeGravity()
|
||||
+ Die()
|
||||
+ Respawn()
|
||||
+ CollectItem(item: Collectible)
|
||||
}
|
||||
|
||||
class LevelFactory {
|
||||
{method} + createLevel(jsonPath): Level
|
||||
class LevelLoader {
|
||||
+ LoadLevel(jsonPath: String): Level
|
||||
+ UnloadLevel(level: Level)
|
||||
}
|
||||
|
||||
class Game {
|
||||
class LevelParser {
|
||||
+ ParseJSON(jsonData: String): Level
|
||||
}
|
||||
|
||||
Level *--> "- *\nLevelElements" LevelElement : <<Owns>>
|
||||
Game *--> "- *\nlevels" Level : <<Owns>>
|
||||
Game *--> "- 1\nlevels" LevelFactory : <<Owns>>
|
||||
|
||||
' {
|
||||
' "name": "Back on Track",
|
||||
' "music"
|
||||
' "elements": [
|
||||
' {
|
||||
' "type": "Spike",
|
||||
' "position": {
|
||||
' "x": 0,
|
||||
' "y": 0
|
||||
' },
|
||||
' }
|
||||
' ]
|
||||
' }
|
||||
class MusicManager {
|
||||
- currentTrack: String
|
||||
- volume: Float
|
||||
+ PlayMusic(musicPath: String)
|
||||
+ StopMusic()
|
||||
+ SetVolume(level: Float)
|
||||
}
|
||||
|
||||
GameManager *--> Level : <<Manages>>
|
||||
GameManager --> LevelLoader : <<Uses>>
|
||||
LevelLoader --> LevelParser : <<Uses>>
|
||||
Level *--> LevelElement : <<Contains>>
|
||||
GameManager *--> Player : <<Owns>>
|
||||
GameManager --> MusicManager : <<Controls>>
|
||||
Player --> LevelEnd : <<Triggers>>
|
||||
Player --> Portal : <<Interacts>>
|
||||
Player --> Collectible : <<Collects>>
|
||||
Obstacle --> Player : <<Affects>>
|
||||
|
||||
@enduml
|
||||
|
Loading…
x
Reference in New Issue
Block a user