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;
import java.io.IOException;
import java.util.ConcurrentModificationException;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
@ -165,32 +166,44 @@ public class BattleGui extends GuiScreen
case ATTACK_TARGET:
info = "Who will you attack?";
int y = 30;
for(Map.Entry<Integer, Combatant> e : TurnBasedMinecraftMod.proxy.getLocalBattle().getSideAEntrySet())
try
{
if(e.getValue().entity != null)
for(Map.Entry<Integer, Combatant> e : TurnBasedMinecraftMod.proxy.getLocalBattle().getSideAEntrySet())
{
buttonList.add(new EntitySelectionButton(ButtonAction.ATTACK_TARGET.getValue(), width/4 - 60, y, 120, 20, e.getValue().entity.getName(), e.getKey(), true));
if(e.getValue().entity != null)
{
buttonList.add(new EntitySelectionButton(ButtonAction.ATTACK_TARGET.getValue(), width/4 - 60, y, 120, 20, e.getValue().entity.getName(), e.getKey(), true));
}
else
{
buttonList.add(new EntitySelectionButton(ButtonAction.ATTACK_TARGET.getValue(), width/4 - 60, y, 120, 20, "Unknown", e.getKey(), true));
}
y += 20;
}
else
{
buttonList.add(new EntitySelectionButton(ButtonAction.ATTACK_TARGET.getValue(), width/4 - 60, y, 120, 20, "Unknown", e.getKey(), true));
}
y += 20;
} catch (ConcurrentModificationException e)
{
// ignored
}
y = 30;
for(Map.Entry<Integer, Combatant> e : TurnBasedMinecraftMod.proxy.getLocalBattle().getSideBEntrySet())
try
{
if(e.getValue().entity != null)
for(Map.Entry<Integer, Combatant> e : TurnBasedMinecraftMod.proxy.getLocalBattle().getSideBEntrySet())
{
buttonList.add(new EntitySelectionButton(ButtonAction.ATTACK_TARGET.getValue(), width*3/4 - 60, y, 120, 20, e.getValue().entity.getName(), e.getKey(), false));
if(e.getValue().entity != null)
{
buttonList.add(new EntitySelectionButton(ButtonAction.ATTACK_TARGET.getValue(), width*3/4 - 60, y, 120, 20, e.getValue().entity.getName(), e.getKey(), false));
}
else
{
buttonList.add(new EntitySelectionButton(ButtonAction.ATTACK_TARGET.getValue(), width*3/4 - 60, y, 120, 20, "Unknown", e.getKey(), false));
}
y += 20;
}
else
{
buttonList.add(new EntitySelectionButton(ButtonAction.ATTACK_TARGET.getValue(), width*3/4 - 60, y, 120, 20, "Unknown", e.getKey(), false));
}
y += 20;
} catch (ConcurrentModificationException e)
{
// ignored
}
buttonList.add(new GuiButton(ButtonAction.CANCEL.getValue(), width/2 - 40, height - 120, 80, 20, "Cancel"));
buttonList.add(new GuiButton(ButtonAction.CANCEL.getValue(), width/2 - 30, height - 120, 60, 20, "Cancel"));
break;
case ITEM_ACTION:
info = "What will you do with an item?";

View file

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