fix: more code is apparently better
This commit is contained in:
@ -104,7 +104,7 @@ public class EntityManager {
|
||||
*/
|
||||
public Entity findEntity(EntityID id) {
|
||||
for(Entity entity: entities) {
|
||||
if(entity.id == id) {
|
||||
if(entity.id.equals(id)) {
|
||||
return entity;
|
||||
}
|
||||
}
|
||||
@ -119,7 +119,7 @@ public class EntityManager {
|
||||
public ArrayList<Entity> findByPosition(IntVector2 pos) {
|
||||
ArrayList<Entity> found = new ArrayList<>();
|
||||
for(Entity entity: entities) {
|
||||
if(entity.getPosition() == pos) {
|
||||
if(entity.getPosition().equals(pos)) {
|
||||
found.add(entity);
|
||||
}
|
||||
}
|
||||
@ -133,7 +133,7 @@ public class EntityManager {
|
||||
*/
|
||||
public boolean blocksVision(IntVector2 pos) {
|
||||
for(Entity entity: entities) {
|
||||
if(entity.getPosition() == pos && entity.blocksVision()) {
|
||||
if(entity.getPosition().equals(pos) && entity.blocksVision()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -147,7 +147,7 @@ public class EntityManager {
|
||||
*/
|
||||
public boolean blocksMovement(IntVector2 pos) {
|
||||
for(Entity entity: entities) {
|
||||
if(entity.getPosition() == pos && entity.blocksMovement()) {
|
||||
if(entity.getPosition().equals(pos) && entity.blocksMovement()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -582,7 +582,7 @@ class GameLogic {
|
||||
|
||||
int selected = characters.get(i);
|
||||
|
||||
EntityID id = new EntityID(i < p1 ? EntityType.P1 : EntityType.P2, selected);
|
||||
EntityID id = new EntityID(i < p1 ? EntityType.P1 : EntityType.P2, i % p1);
|
||||
result.add(new EventBuilder(EventType.SpawnEntityEvent)
|
||||
.withEntity(new Character(
|
||||
id, position,
|
||||
@ -693,7 +693,7 @@ class GameLogic {
|
||||
Collections.shuffle(state.turnOrder);
|
||||
|
||||
for (EntityID id: state.turnOrder) {
|
||||
if(revived.contains(id) || ((Character)state.entities.findEntity(id)).hp.getValue() > 0){
|
||||
if(id.type == EntityType.NPC || revived.contains(id) || ((Character)state.entities.findEntity(id)).hp.getValue() > 0){
|
||||
state.activeCharacter = id;
|
||||
break;
|
||||
}
|
||||
@ -717,8 +717,10 @@ class GameLogic {
|
||||
public static ArrayList<Event> handleGoose(GameState state) {
|
||||
ArrayList<Event> result = new ArrayList<>();
|
||||
|
||||
StoneType[] available = state.unvomitedStones.toArray(new StoneType[0]);
|
||||
StoneType stone = available[rand.nextInt(available.length)];
|
||||
ArrayList<StoneType> inventory = new ArrayList<>(state.unvomitedStones);
|
||||
int picked = rand.nextInt(inventory.size());
|
||||
StoneType stone = inventory.get(picked);
|
||||
inventory.remove(picked);
|
||||
state.unvomitedStones.remove(stone);
|
||||
|
||||
ArrayList<IntVector2> free = new ArrayList<>();
|
||||
@ -734,7 +736,7 @@ class GameLogic {
|
||||
|
||||
EntityID goose = new EntityID(EntityType.NPC, 0);
|
||||
result.add(new EventBuilder(EventType.SpawnEntityEvent)
|
||||
.withEntity(new NPC(goose, position))
|
||||
.withEntity(new NPC(goose, position, inventory))
|
||||
.buildEntityEvent());
|
||||
result.add(new EventBuilder(EventType.SpawnEntityEvent)
|
||||
.withEntity(new InfinityStone(new EntityID(EntityType.InfinityStones, stone.getID()), position, stone))
|
||||
@ -829,7 +831,7 @@ class GameLogic {
|
||||
|
||||
EntityID thanos = new EntityID(EntityType.NPC, 2);
|
||||
result.add(new EventBuilder(EventType.SpawnEntityEvent)
|
||||
.withEntity(new Character(thanos, position, "Thanos", 1, maxMP, 0, 0, 0, 0))
|
||||
.withEntity(new NPC(thanos, position, maxMP))
|
||||
.buildEntityEvent());
|
||||
|
||||
state.turnOrder.add(thanos);
|
||||
@ -842,10 +844,10 @@ class GameLogic {
|
||||
* @param state The game state to work on
|
||||
* @return The list of resulting {@link Event}s
|
||||
*/
|
||||
public static ArrayList<Event> handleThanos(GameState state, Character thanos) {
|
||||
public static ArrayList<Event> handleThanos(GameState state, NPC thanos) {
|
||||
ArrayList<Event> result = new ArrayList<>();
|
||||
|
||||
//TODO: implement thanos ai
|
||||
|
||||
|
||||
return result;
|
||||
}
|
||||
@ -860,13 +862,31 @@ class GameLogic {
|
||||
|
||||
state.turnNumber++;
|
||||
|
||||
Character activeCharacter = (Character)state.entities.findEntity(state.activeCharacter);
|
||||
boolean isThanos = state.activeCharacter.type == EntityType.NPC && state.activeCharacter.id == 2;
|
||||
if(state.activeCharacter.type == EntityType.NPC && state.activeCharacter.id == 2) {
|
||||
NPC thanos = (NPC)state.entities.findEntity(state.activeCharacter);
|
||||
|
||||
if(isThanos && state.roundNumber > state.partyConfig.maxRounds + 1) {
|
||||
activeCharacter.mp.setMax(activeCharacter.mp.getMax() + 1);//TODO: use event for this...
|
||||
if(state.roundNumber > state.partyConfig.maxRounds + 1) {
|
||||
thanos.mp.setMax(thanos.mp.getMax() + 1);//TODO: use event for this...
|
||||
}
|
||||
|
||||
if(thanos.mp.getValue() != thanos.mp.getMax()) {
|
||||
result.add(new EventBuilder(EventType.ConsumedMPEvent)
|
||||
.withTargetEntity(state.activeCharacter)
|
||||
.withTargetField(thanos.getPosition())
|
||||
.withAmount(thanos.mp.getValue() - thanos.mp.getMax())
|
||||
.buildGameEvent());
|
||||
}
|
||||
result.add(new EventBuilder(EventType.TurnEvent)
|
||||
.withTurnCount(state.turnOrder.size())
|
||||
.withNextCharacter(state.activeCharacter)
|
||||
.buildGameEvent());
|
||||
result.addAll(handleThanos(state, thanos));
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
Character activeCharacter = (Character)state.entities.findEntity(state.activeCharacter);
|
||||
|
||||
if(activeCharacter.ap.getValue() != activeCharacter.ap.getMax()) {
|
||||
result.add(new EventBuilder(EventType.ConsumedAPEvent)
|
||||
.withTargetEntity(state.activeCharacter)
|
||||
@ -886,10 +906,6 @@ class GameLogic {
|
||||
.withNextCharacter(state.activeCharacter)
|
||||
.buildGameEvent());
|
||||
|
||||
if(isThanos) {
|
||||
result.addAll(handleThanos(state, activeCharacter));
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user