1 | package main;
|
---|
2 |
|
---|
3 | import gamegui.Animation;
|
---|
4 | import java.awt.Graphics;
|
---|
5 |
|
---|
6 | public class Model {
|
---|
7 |
|
---|
8 | private Direction dir;
|
---|
9 | private Action action;
|
---|
10 | private Animation[] anims;
|
---|
11 | private boolean death;
|
---|
12 |
|
---|
13 | public Model(boolean death) {
|
---|
14 | if (death) {
|
---|
15 | this.anims = new Animation[13];
|
---|
16 | } else {
|
---|
17 | this.anims = new Animation[12];
|
---|
18 | }
|
---|
19 | this.dir = Direction.North;
|
---|
20 | this.action = Action.Walking;
|
---|
21 | this.death = death;
|
---|
22 | }
|
---|
23 |
|
---|
24 | public Model(Model copy) {
|
---|
25 | this.dir = copy.dir;
|
---|
26 | this.action = copy.action;
|
---|
27 | if (copy.death) {
|
---|
28 | this.anims = new Animation[13];
|
---|
29 | } else {
|
---|
30 | this.anims = new Animation[12];
|
---|
31 | }
|
---|
32 | for (int x = 0; x < this.anims.length; x++) {
|
---|
33 | this.anims[x] = new Animation(copy.anims[x]);
|
---|
34 | }
|
---|
35 | this.death = copy.death;
|
---|
36 | }
|
---|
37 |
|
---|
38 | public boolean hasDeath() {
|
---|
39 | return this.death;
|
---|
40 | }
|
---|
41 |
|
---|
42 | public void addAnimation(Direction dir, Action action, Animation anim) {
|
---|
43 | this.anims[getIndex(dir, action)] = anim;
|
---|
44 | }
|
---|
45 |
|
---|
46 | public void draw(Graphics g, int x, int y) {
|
---|
47 | if (this.anims[getIndex(this.dir, this.action)] != null) {
|
---|
48 | if (this.action == Action.Attacking && this.anims[getIndex(this.dir, this.action)].reachedEnd()) {
|
---|
49 | this.anims[getIndex(this.dir, this.action)].reset();
|
---|
50 | this.action = Action.Standing;
|
---|
51 | }
|
---|
52 | this.anims[getIndex(this.dir, this.action)].draw(g, x, y);
|
---|
53 | }
|
---|
54 | }
|
---|
55 |
|
---|
56 | public int getHeight() {
|
---|
57 | return getAnimation(this.dir, this.action).getHeight();
|
---|
58 | }
|
---|
59 |
|
---|
60 | public int getWidth() {
|
---|
61 | return getAnimation(this.dir, this.action).getWidth();
|
---|
62 | }
|
---|
63 |
|
---|
64 | private int getIndex(Direction dir, Action action) {
|
---|
65 | int pos = 0;
|
---|
66 | switch (action) {
|
---|
67 | case Walking:
|
---|
68 | pos = 4;
|
---|
69 | break;
|
---|
70 | case Standing:
|
---|
71 | pos = 8;
|
---|
72 | break;
|
---|
73 | }
|
---|
74 | switch (dir) {
|
---|
75 | case South:
|
---|
76 | pos++;
|
---|
77 | break;
|
---|
78 | case East:
|
---|
79 | pos += 2;
|
---|
80 | break;
|
---|
81 | case West:
|
---|
82 | pos += 3;
|
---|
83 | break;
|
---|
84 | }
|
---|
85 | if (action == Action.Dying) {
|
---|
86 | pos = 12;
|
---|
87 | }
|
---|
88 | return pos;
|
---|
89 | }
|
---|
90 |
|
---|
91 | public Animation getAnimation(Direction dir, Action action) {
|
---|
92 | return this.anims[getIndex(dir, action)];
|
---|
93 | }
|
---|
94 |
|
---|
95 | public Direction getDirection() {
|
---|
96 | return this.dir;
|
---|
97 | }
|
---|
98 |
|
---|
99 | public Action getAction() {
|
---|
100 | return this.action;
|
---|
101 | }
|
---|
102 |
|
---|
103 | public void setDirection(Direction dir) {
|
---|
104 | this.dir = dir;
|
---|
105 | }
|
---|
106 |
|
---|
107 | public void setAction(Action action) {
|
---|
108 | this.action = action;
|
---|
109 | }
|
---|
110 | }
|
---|