Acutally fix duplicate ".. entered battle" message bug.
Fix potential crash bug.
This commit is contained in:
Stephen Seo 2018-10-18 14:47:40 +09:00
parent 967fed3164
commit 00961768b3
2 changed files with 61 additions and 18 deletions

View file

@ -1,6 +1,7 @@
package com.seodisparate.TurnBasedMinecraft.client; package com.seodisparate.TurnBasedMinecraft.client;
import java.io.IOException; import java.io.IOException;
import java.util.ConcurrentModificationException;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
@ -165,6 +166,8 @@ public class BattleGui extends GuiScreen
case ATTACK_TARGET: case ATTACK_TARGET:
info = "Who will you attack?"; info = "Who will you attack?";
int y = 30; int y = 30;
try
{
for(Map.Entry<Integer, Combatant> e : TurnBasedMinecraftMod.proxy.getLocalBattle().getSideAEntrySet()) for(Map.Entry<Integer, Combatant> e : TurnBasedMinecraftMod.proxy.getLocalBattle().getSideAEntrySet())
{ {
if(e.getValue().entity != null) if(e.getValue().entity != null)
@ -177,7 +180,13 @@ public class BattleGui extends GuiScreen
} }
y += 20; y += 20;
} }
} catch (ConcurrentModificationException e)
{
// ignored
}
y = 30; y = 30;
try
{
for(Map.Entry<Integer, Combatant> e : TurnBasedMinecraftMod.proxy.getLocalBattle().getSideBEntrySet()) for(Map.Entry<Integer, Combatant> e : TurnBasedMinecraftMod.proxy.getLocalBattle().getSideBEntrySet())
{ {
if(e.getValue().entity != null) if(e.getValue().entity != null)
@ -190,7 +199,11 @@ public class BattleGui extends GuiScreen
} }
y += 20; y += 20;
} }
buttonList.add(new GuiButton(ButtonAction.CANCEL.getValue(), width/2 - 40, height - 120, 80, 20, "Cancel")); } catch (ConcurrentModificationException e)
{
// ignored
}
buttonList.add(new GuiButton(ButtonAction.CANCEL.getValue(), width/2 - 30, height - 120, 60, 20, "Cancel"));
break; break;
case ITEM_ACTION: case ITEM_ACTION:
info = "What will you do with an item?"; info = "What will you do with an item?";

View file

@ -256,11 +256,41 @@ public class Battle
public boolean hasCombatant(int entityID) public boolean hasCombatant(int entityID)
{ {
synchronized(sideAEntryQueue)
{
for(Combatant c : sideAEntryQueue)
{
if(c.entity.getEntityId() == entityID)
{
return true;
}
}
}
synchronized(sideBEntryQueue)
{
for(Combatant c : sideBEntryQueue)
{
if(c.entity.getEntityId() == entityID)
{
return true;
}
}
}
return sideA.containsKey(entityID) || sideB.containsKey(entityID); return sideA.containsKey(entityID) || sideB.containsKey(entityID);
} }
public boolean hasCombatantInSideA(int entityID) public boolean hasCombatantInSideA(int entityID)
{ {
synchronized(sideAEntryQueue)
{
for(Combatant c : sideAEntryQueue)
{
if(c.entity.getEntityId() == entityID)
{
return true;
}
}
}
return sideA.containsKey(entityID); return sideA.containsKey(entityID);
} }
@ -775,7 +805,7 @@ public class Battle
{ {
turnOrderQueue.add(c); turnOrderQueue.add(c);
} }
update(0); return update(0);
} }
else else
{ {