Skip to content

Commit 2477ce0

Browse files
committed
feat: add basic state implementations for the Duke of Eyes
1 parent d76428b commit 2477ce0

File tree

4 files changed

+35
-37
lines changed

4 files changed

+35
-37
lines changed

src/main/java/tbooop/model/boss/impl/DukeOfEyes/DoEAngered.java

+13-18
Original file line numberDiff line numberDiff line change
@@ -2,35 +2,30 @@
22

33
import tbooop.model.boss.impl.DukeOfEyes.DoESM.State;
44
import tbooop.model.boss.stateMachine.api.AbstractState;
5+
import tbooop.model.enemy.api.ai.MovementAi;
6+
import tbooop.model.enemy.impl.ai.ChasingAi;
7+
import tbooop.model.player.api.Player;
58

69
public class DoEAngered extends AbstractState<DoESM.State> {
710

8-
public DoEAngered(DukeOfEyes dukeOfEyes) {
9-
// TODO Auto-generated constructor stub
10-
}
11+
private DukeOfEyes doe;
12+
private MovementAi ai;
1113

12-
@Override
13-
public void updateState(long deltaTime) {
14-
// TODO Auto-generated method stub
15-
throw new UnsupportedOperationException("Unimplemented method 'updateState'");
14+
public DoEAngered(DukeOfEyes doe, Player p) {
15+
super(doe);
16+
this.doe = doe;
17+
ai = new ChasingAi(p);
1618
}
1719

1820
@Override
19-
public void enterState() {
20-
// TODO Auto-generated method stub
21-
throw new UnsupportedOperationException("Unimplemented method 'enterState'");
22-
}
23-
24-
@Override
25-
public void exitState() {
26-
// TODO Auto-generated method stub
27-
throw new UnsupportedOperationException("Unimplemented method 'exitState'");
21+
public void updateState(long deltaTime) {
22+
var nextPos = ai.newPosition(doe.getPosition(), deltaTime, doe.getVelocity());
23+
doe.setPosition(nextPos);
2824
}
2925

3026
@Override
3127
public State getNextStateKey() {
32-
// TODO Auto-generated method stub
33-
throw new UnsupportedOperationException("Unimplemented method 'getNextStateKey'");
28+
return State.ANGERED;
3429
}
3530

3631
}
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,31 @@
11
package tbooop.model.boss.impl.DukeOfEyes;
22

3+
import tbooop.commons.api.CardinalDirection;
34
import tbooop.model.boss.impl.DukeOfEyes.DoESM.State;
45
import tbooop.model.boss.stateMachine.api.AbstractState;
6+
import tbooop.model.enemy.api.ai.MovementAi;
7+
import tbooop.model.enemy.impl.ai.BouncingAi;
58

69
public class DoERoam extends AbstractState<DoESM.State> {
710

8-
@Override
9-
public void updateState(long deltaTime) {
10-
// TODO Auto-generated method stub
11-
throw new UnsupportedOperationException("Unimplemented method 'updateState'");
12-
}
11+
private MovementAi ai;
12+
private DukeOfEyes doe;
1313

14-
@Override
15-
public void enterState() {
16-
// TODO Auto-generated method stub
17-
throw new UnsupportedOperationException("Unimplemented method 'enterState'");
14+
public DoERoam(DukeOfEyes doe) {
15+
super(doe);
16+
this.doe = doe;
17+
ai = new BouncingAi(CardinalDirection.UP.toP2d(), 1000);
1818
}
1919

2020
@Override
21-
public void exitState() {
22-
// TODO Auto-generated method stub
23-
throw new UnsupportedOperationException("Unimplemented method 'exitState'");
21+
public void updateState(long deltaTime) {
22+
var nextPos = ai.newPosition(doe.getPosition(), deltaTime, doe.getVelocity());
23+
doe.setPosition(nextPos);
2424
}
2525

2626
@Override
2727
public State getNextStateKey() {
28-
// TODO Auto-generated method stub
29-
throw new UnsupportedOperationException("Unimplemented method 'exitState'");
28+
return State.ROAMING;
3029
}
3130

3231
}
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package tbooop.model.boss.impl.DukeOfEyes;
22

33
import tbooop.model.boss.stateMachine.api.AbstractStateMachine;
4+
import tbooop.model.player.api.Player;
5+
46
import java.util.Map;
57

68
public class DoESM extends AbstractStateMachine<DoESM.State> {
@@ -10,8 +12,9 @@ public enum State {
1012
ANGERED;
1113
}
1214

13-
public DoESM(DukeOfEyes dukeOfEyes) {
14-
setStates(Map.of(State.ROAMING, new DoERoam(),
15-
State.ANGERED, new DoEAngered(dukeOfEyes)));
15+
public DoESM(DukeOfEyes doe, Player p) {
16+
super(State.ROAMING);
17+
setStates(Map.of(State.ROAMING, new DoERoam(doe),
18+
State.ANGERED, new DoEAngered(doe, p)));
1619
}
1720
}

src/main/java/tbooop/model/boss/impl/DukeOfEyes/DukeOfEyes.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@
22

33
import tbooop.commons.impl.HealthImpl;
44
import tbooop.model.boss.api.AbstractBoss;
5+
import tbooop.model.player.api.Player;
56

67
public class DukeOfEyes extends AbstractBoss<DoESM.State> {
78

8-
public DukeOfEyes() {
9+
public DukeOfEyes(Player p) {
910
super(new HealthImpl(20), 0.3, 20); // TODO tweak
10-
setStateMachine(new DoESM(this));
11+
setStateMachine(new DoESM(this, p));
1112
}
1213
}

0 commit comments

Comments
 (0)