-
Notifications
You must be signed in to change notification settings - Fork 0
/
Stats.java
82 lines (69 loc) · 1.84 KB
/
Stats.java
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
/*
* Copyright 2017 Billy Brown
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
// Size determines movement speed
enum Size {
//SIZE SPEED RADIUS
SMALL (2.5f, 10),
MEDIUM (3, 16),
LARGE (5, 24);
// Speed in game units
public final float speed;
// Actors are represented as circles
public final float radius;
private Size(final float speed, final float radius) {
this.speed = speed;
this.radius = radius;
}
}
// A race has a size and some base stats
enum Race {
//RACE SIZE STR DEX CON
HUMAN (Size.MEDIUM, new Stats( 1, 1, 1)),
DWARF (Size.SMALL, new Stats( 2, -1, 2)),
ELF (Size.MEDIUM, new Stats( 0, 3, 1)),
GOBLIN (Size.SMALL, new Stats(-1, 1, 0)),
ORC (Size.MEDIUM, new Stats( 1, 0, 1)),
WARG (Size.MEDIUM, new Stats( 0, 2, 0)),
URUK (Size.MEDIUM, new Stats( 2, 1, 1)),
TROLL (Size.LARGE, new Stats( 4, -3, 4));
// A race has a size
public final Size size;
// And some base stats
public final Stats base;
private Race(final Size size, final Stats base) {
this.size = size;
this.base = base;
}
}
class Stats {
private int STR; // Strength
private int DEX; // Dexterity
private int CON; // Constitution
public Stats(final int STR, final int DEX, final int CON) {
this.STR = STR;
this.DEX = DEX;
this.CON = CON;
}
public Stats(final Race race) {
STR = race.base.STR();
DEX = race.base.DEX();
CON = race.base.CON();
}
public int STR() {
return STR;
}
public int DEX() {
return DEX;
}
public int CON() {
return CON;
}
@Override
public String toString() {
return "STR: " + STR() + " DEX: " + DEX() + " CON: " + CON;
}
}