forked from jasonchung1/Delta
-
Notifications
You must be signed in to change notification settings - Fork 0
/
specifications.txt
131 lines (114 loc) · 4.9 KB
/
specifications.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
Initialization notes
Player
- starts in center of screen
- set health/num lives
- set stats: health, speed, defense/shields, etc
- set score to zero
Asteroid
- each class of Asteroid is responsible for setting its own default variables in its constructor.
define new classes or extend existing ones to change default values.
example:
constructor() {
let speedRange = new Point(1, 5); //set speed range
this.speed = speedRange.rand(); //choose a random value in the above range.
}
GameObject //base class for player, asteroid, etc
-boolean isActive //flag
-int points; //number of points to add to score if this obj is destroyed.
-Transform transform
-Array<EventListener> eventListeners
-EventPublisher publisher
+void update() // stup method, override for behaviour
+void render() // stub method, override for behaviour
+void publishEvent(Event e) //publish event to current event queue on current game state
+boolean getIsActive() //return isActive
+void deactivate() //set isActive flag to false
+void addEventListener(eventListener) //add an eventListener to this object's eventListeners array
+Array<EventLIstener> getEventListeners()
+Point getLocation()
+void destroy() //set as inactive and spawn particles, add to score
Player extends GameObject
-int health/lives left
-Array<Projectile> projectiles
+move(x, y)
+rotate(float radians)
+Projectile shoot() //add new projectile to the list of projectiles
+void update() //update player
+void render() //render player
+void takeDamage(int damage) //damage player
+int getHealth()
+Array<Projectile> getProjectiles() //used by collision checker?
+setToAsteroidMode() //set movement restrictions
+setToScrollerMode() //set movement restrictions
Projectile extends GameObject
-int damage //damage this projectile inflicts on an asteroid or enemy
-Point velocity, acceleration
+constructor(size, speed, damage, etc)
+void update()
+void render() //render projectile/missile sprite
//ProjectileSystem extends GameObjectSystem //owns and updates an array of Projectiles
-Array<Projectile> projectiles
+void update()
+void render()
+Array<Projectile> getProjectiles
+addProjectile(Projectile p)
+void removeInactive() //remove inactive or destroyed asteroids from the array.
Asteroid extends GameObject
-int health, size
-float speed
+constructor(health, size, speed, damage, etc)
+void update()
+void render() //render asteroid sprite
+void takeDamage(damage);
+getIsActive(); //override: flag for determining if this asteroid should be removed (ie destroyed, out of bounds)
AsteroidSystem extends GameObjectSystem //owns and updates an array of asteroids
-Array<Asteroid> asteroids
+void update()
+void render()
+Array<Asteroid> getAsteroids
+addAsteroid(Asteroid a)
+void removeInactive() //remove inactive or destroyed asteroids from the array.
Enemy extends GameObject
-Point target //point to shoot at
-Point moveTarget //direction to move towards?
+void update();
+void render();
+void takeDamage(damage);
+Projectile shoot();
+getIsActive(); //override: flag for determining if this asteroid should be removed (ie destroyed, out of bounds)
GameObjectSystem extends System //A system that updates and renders an array of game objects, and removes inactive ones.
-Array<GameObject> gameObjects
+addObject(GameObject o)
+addObjects(Array<GameObject> objs)
+getObjects()
+update()
+render()
+getLength() //return number of GameObjects in the array
LevelSystem // Class that updates and manages Levels. Each level contains data for spawning asteroids & enemies.
-int score
-Callback<Array<Level>> levelPresetsSupplier //supplier that supplies an array of predefined levels
-GameObjectSystem playerSystem, enemySystem, bossSystem
-Array<Level> levels
-Level currentLevel
-int levelCount
-Array<System> systems
-EventListener<EventFilter.DESTROY> destroyListener
+constructor(levelPresetsSupplier, playerSystem, enemySystem, bossSystem)
+void update()
+void render()
+void checkNextLevelCondition() // Check if game should proceed to next level
+boolean isScoreReached() // return true if player's score has reached the level's target score.
+boolean isLevelCleared() // Return true if there are no active asteroids or enemies left.
+void goToNextLevel() // Proceed to the next level.
+void addToScore()
+void setPlayerMovement() //set player movement mode
//sample collision system
CollisionSystem // checks for collisions & handles them. gets objects from systems
+constructor(playerSystem, asteroidSystem, enemySystem)
//needs access to arrays of asteroids/projectiles
//check for collisions
+void checkProjectiles_Asteroids(Array<Projectile> projectiles, Array<Asteroid> asteroids)
+void checkPlayer_Asteroids(Player player, Array<Asteroid> asteroids);
//handle a collision
+void handleProjectiles_Asteroids(Projectile projectile, Asteroid asteroid)
+void handlePlayer_Asteroids(Player player, Asteroid asteroid);