Skip to content

Commit c914662

Browse files
authored
Merge pull request #203 from UQcsse3200/Tower-Sprint4
Frozen Mammoth Skull (Ice Tower) — Freeze Behaviour & Upgrades
2 parents 567209b + 6b49836 commit c914662

File tree

26 files changed

+1525
-270
lines changed

26 files changed

+1525
-270
lines changed

TowersEntity_UML.md

Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
```plantuml
2+
@startuml
3+
class TowerComponent {
4+
- type : String
5+
- width : int
6+
- height : int
7+
- selectedPurchaseCurrency : CurrencyType
8+
- headEntity : Entity
9+
- headRenderer : RotatingAnimationRenderComponent
10+
- active : boolean
11+
- selected : boolean
12+
+ getType()
13+
+ getWidth()
14+
+ getHeight()
15+
+ setSelectedPurchaseCurrency(CurrencyType)
16+
+ getSelectedPurchaseCurrency()
17+
+ setActive(boolean)
18+
+ isActive()
19+
+ isSelected()
20+
+ setSelected(boolean)
21+
+ getHeadEntity()
22+
+ hasHead()
23+
+ canAffordWithSelectedCurrency(CurrencyManagerComponent)
24+
+ update()
25+
}
26+
27+
class TowerStatsComponent {
28+
- health : int
29+
- damage : float
30+
- range : float
31+
- attackCooldown : float
32+
- projectileSpeed : float
33+
- projectileLife : float
34+
- projectileTexture : String
35+
- level_A : int
36+
- level_B : int
37+
+ getHealth()
38+
+ setHealth(int)
39+
+ getDamage()
40+
+ setDamage(float)
41+
+ getRange()
42+
+ setRange(float)
43+
+ getAttackCooldown()
44+
+ setAttackCooldown(float)
45+
+ getProjectileSpeed()
46+
+ setProjectileSpeed(float)
47+
+ getProjectileLife()
48+
+ setProjectileLife(float)
49+
+ getProjectileTexture()
50+
+ setProjectileTexture(String)
51+
+ incrementLevel_A()
52+
+ incrementLevel_B()
53+
+ updateAttackTimer(float)
54+
+ canAttack()
55+
}
56+
57+
class TowerCostComponent {
58+
- costMap : Map<CurrencyType, Integer>
59+
+ getCostMap()
60+
+ getCostForCurrency(CurrencyType)
61+
}
62+
63+
class CurrencyGeneratorComponent {
64+
- currencyType : CurrencyType
65+
- currencyAmount : int
66+
- generationInterval : float
67+
+ update()
68+
+ generateCurrency()
69+
+ getCurrencyType()
70+
+ setCurrencyType(CurrencyType)
71+
+ getCurrencyAmount()
72+
+ setCurrencyAmount(int)
73+
+ getGenerationInterval()
74+
+ setGenerationInterval(float)
75+
}
76+
77+
class StatsBoostComponent {
78+
- appliedMultiplier : Map<Entity, Float>
79+
+ update()
80+
+ dispose()
81+
}
82+
83+
class OrbitComponent {
84+
- target : Entity
85+
- radius : float
86+
- speed : float
87+
- angle : float
88+
+ create()
89+
+ update()
90+
+ setRadius(float)
91+
+ getRadius()
92+
}
93+
94+
class BeamAttackComponent {
95+
- range : float
96+
- damage : float
97+
- cooldown : float
98+
- target : Entity
99+
+ update()
100+
+ setTarget(Entity)
101+
+ clearTarget()
102+
+ draw(SpriteBatch)
103+
+ dispose()
104+
}
105+
106+
class ChainLightningComponent {
107+
- range : float
108+
- chainRange : float
109+
- damage : float
110+
- maxChains : int
111+
- cooldown : float
112+
+ update()
113+
+ draw(SpriteBatch)
114+
+ dispose()
115+
}
116+
117+
TowerComponent "1" o-- "1" TowerStatsComponent
118+
TowerComponent "1" o-- "1" TowerCostComponent
119+
TowerComponent "1" o-- "0..1" CurrencyGeneratorComponent
120+
TowerComponent "1" o-- "0..1" StatsBoostComponent
121+
TowerComponent "1" o-- "0..1" OrbitComponent
122+
TowerComponent "1" o-- "0..1" BeamAttackComponent
123+
TowerComponent "1" o-- "0..1" ChainLightningComponent
124+
125+
Entity <|-- TowerComponent
126+
Entity <|-- BeamAttackComponent
127+
Entity <|-- ChainLightningComponent
128+
Entity <|-- OrbitComponent
129+
Entity <|-- StatsBoostComponent
130+
Entity <|-- CurrencyGeneratorComponent
131+
132+
@enduml
133+
```
134+

source/core/assets/configs/tower.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
"damage": 15,
2828
"range": 2.0,
2929
"cooldown": 2,
30-
"metalScrapCost": 1000,
30+
"metalScrapCost": 750,
3131
"titaniumCoreCost": 0,
3232
"neurochipCost": 0,
3333
"projectileSpeed": 2,
@@ -60,7 +60,7 @@
6060
"base": {
6161
"level_A": 1,
6262
"level_B": 1,
63-
"damage": 5,
63+
"damage": 2.5,
6464
"range": 3.0,
6565
"cooldown": 1.0,
6666
"metalScrapCost": 0,
@@ -97,7 +97,7 @@
9797
"level_A": 1,
9898
"level_B": 1,
9999
"damage": 0,
100-
"range": 3.0,
100+
"range": 1.5,
101101
"cooldown": 0,
102102
"metalScrapCost": 0,
103103
"titaniumCoreCost": 150,
@@ -116,7 +116,7 @@
116116
"level_B": 1,
117117
"damage": 0,
118118
"range": 0,
119-
"cooldown": 10.0,
119+
"cooldown": 0,
120120
"metalScrapCost": 0,
121121
"titaniumCoreCost": 200,
122122
"neurochipCost": 0,
@@ -151,13 +151,13 @@
151151
"level_A": 1,
152152
"level_B": 1,
153153
"damage": 22,
154-
"range": 4.0,
154+
"range": 1.5,
155155
"cooldown": 1.3,
156156
"metalScrapCost": 0,
157157
"titaniumCoreCost": 300,
158158
"neurochipCost": 0,
159159
"projectileSpeed": 6.0,
160-
"projectileLife": 2,
160+
"projectileLife": 1,
161161
"projectileTexture": "images/towers/projectile animations/icecube.png",
162162
"image": "images/towers/mammoth/frozenmamoothskull.png"
163163
}
-2.23 KB
Loading
-1.99 KB
Loading
-2.31 KB
Loading
-1.57 KB
Loading
-2.99 KB
Loading
-6.58 KB
Loading
-1.86 KB
Loading
-244 Bytes
Loading

0 commit comments

Comments
 (0)