@startuml ' Split into 2 pages namespace DIKUArcade { namespace Entities { class Entity { } } namespace Graphics{ } namespace Math { } namespace Timers { } namespace EventBus { interface IGameEventProcessor {} } namespace State { interface IGameState {} } } package SpaceTaxi_1 { class Game { } class Program { } } namespace SpaceTaxi_1.Entities { class Player implements DIKUArcade.EventBus.IGameEventProcessor { +Entity Entity +DynamicShape PlayerDynamicShape +ApplyGravity() +LandPlayer() +Move() } class Customer extends DIKUArcade.Entities.Entity { +CustomerData customerData +FlipDirection() +MoveAroundPlatform() +MoveTowardsPlayer() +PickUp() +DropOff() +ShouldDespawn() } class Platform extends DIKUArcade.Entities.Entity { +char PlatformChar } } namespace SpaceTaxi_1.Graphics { class GameUI implements DIKUArcade.EventBus.IGameEventProcessor { } } namespace SpaceTaxi_1.LevelLoading { class LevelCreator { +CreateLevel() } class Level { +Dictionary ImageDictionary +List Platforms +List Customers +Obstacles +List PlatformNamesText +AnimationContainer explosions +Player Player +InitializeLevel() +EndGame() } class LevelController <<Singleton>>{ {static} GetInstance() +GetLevelNames() +GetLevelFileNames() +SwitchLevel() +NextLevel() } class Reader { +String Name +List Platforms +Char[,] MapData +Dictionary LegendData +List CustomerData +ReadFile() } class CustomerData { +String Name +Int SpawnTime +Char StartPlatform +Char EndPlatform +Bool IsNextLevel +Int DropOffTime +Int PointsForDelivery +(Float,Float) SpawnPosition } Level o-- SpaceTaxi_1.Entities.Customer note on link #white: Since the customer can be moved between levels LevelCreator .right.> Reader Level ..|> LevelCreator } namespace SpaceTaxi_1.Utilities { class EventBus <<Singleton>>{ -GameEventBus eventBus {static} GetBus() } class Utils { +GetLevelFilePath() +CreateStrideFromFilename() } } namespace SpaceTaxi_1.States { class ChooseLevel implements DIKUArcade.State.IGameState{ } class GameOver implements DIKUArcade.State.IGameState { } class GamePaused implements DIKUArcade.State.IGameState { } class GameRunning implements DIKUArcade.State.IGameState { +SetLevel() } class MainMenu implements DIKUArcade.State.IGameState { } enum GameStateType { GameRunning, GamePaused, MainMenu, ChooseLevel, GameOver } class StateTransformer { {static} TransformStringToState() {static} TransformStateToString() } class StateMachine implements DIKUArcade.EventBus.IGameEventProcessor { +IGameState ActiveState +SwitchState() } StateMachine o--- "1" DIKUArcade.State.IGameState StateMachine -- StateTransformer GameRunning *-- "0..1" SpaceTaxi_1.LevelLoading.Level ChooseLevel ..> SpaceTaxi_1.LevelLoading.LevelController StateTransformer .right.> GameStateType } @enduml
Decode URL
Submit
amiga
aws-orange
black-knight
bluegray
blueprint
cerulean-outline
cerulean
crt-amber
crt-green
cyborg-outline
cyborg
hacker
lightgray
mars
materia-outline
materia
metal
mimeograph
minty
plain
reddress-darkblue
reddress-darkgreen
reddress-darkorange
reddress-darkred
reddress-lightblue
reddress-lightgreen
reddress-lightorange
reddress-lightred
sandstone
silver
sketchy-outline
sketchy
spacelab
spacelab-white
superhero-outline
superhero
toy
united
vibrant
Pure Javascript
PNG
SVG
ASCII Art