Minor fixes, improvements
This commit is contained in:
parent
a0795677c4
commit
fc9eaa0779
3 changed files with 30 additions and 11 deletions
|
@ -4,12 +4,12 @@ import java.util.ArrayDeque;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Hashtable;
|
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.PriorityQueue;
|
import java.util.PriorityQueue;
|
||||||
import java.util.Queue;
|
import java.util.Queue;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
|
||||||
import com.seodisparate.TurnBasedMinecraft.common.networking.PacketBattleInfo;
|
import com.seodisparate.TurnBasedMinecraft.common.networking.PacketBattleInfo;
|
||||||
|
@ -127,9 +127,9 @@ public class Battle
|
||||||
this.battleManager = battleManager;
|
this.battleManager = battleManager;
|
||||||
this.isServer = isServer;
|
this.isServer = isServer;
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.sideA = new Hashtable<Integer, Combatant>();
|
this.sideA = new ConcurrentHashMap<Integer, Combatant>();
|
||||||
this.sideB = new Hashtable<Integer, Combatant>();
|
this.sideB = new ConcurrentHashMap<Integer, Combatant>();
|
||||||
players = new Hashtable<Integer, Combatant>();
|
players = new ConcurrentHashMap<Integer, Combatant>();
|
||||||
turnOrderQueue = new PriorityQueue<Combatant>(new Combatant.CombatantComparator());
|
turnOrderQueue = new PriorityQueue<Combatant>(new Combatant.CombatantComparator());
|
||||||
sideAEntryQueue = new ArrayDeque<Combatant>();
|
sideAEntryQueue = new ArrayDeque<Combatant>();
|
||||||
sideBEntryQueue = new ArrayDeque<Combatant>();
|
sideBEntryQueue = new ArrayDeque<Combatant>();
|
||||||
|
@ -528,7 +528,13 @@ public class Battle
|
||||||
|
|
||||||
public int getSize()
|
public int getSize()
|
||||||
{
|
{
|
||||||
return sideA.size() + sideB.size();
|
synchronized(sideAEntryQueue)
|
||||||
|
{
|
||||||
|
synchronized(sideBEntryQueue)
|
||||||
|
{
|
||||||
|
return sideA.size() + sideB.size() + sideAEntryQueue.size() + sideBEntryQueue.size();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void notifyPlayersBattleInfo()
|
protected void notifyPlayersBattleInfo()
|
||||||
|
@ -589,7 +595,7 @@ public class Battle
|
||||||
players.remove(entry.getKey());
|
players.remove(entry.getKey());
|
||||||
removeCombatantPostRemove(entry.getValue());
|
removeCombatantPostRemove(entry.getValue());
|
||||||
didRemove = true;
|
didRemove = true;
|
||||||
String category = new String();
|
String category = null;
|
||||||
if(entry.getValue().entityInfo != null)
|
if(entry.getValue().entityInfo != null)
|
||||||
{
|
{
|
||||||
category = entry.getValue().entityInfo.category;
|
category = entry.getValue().entityInfo.category;
|
||||||
|
@ -610,7 +616,7 @@ public class Battle
|
||||||
players.remove(entry.getKey());
|
players.remove(entry.getKey());
|
||||||
removeCombatantPostRemove(entry.getValue());
|
removeCombatantPostRemove(entry.getValue());
|
||||||
didRemove = true;
|
didRemove = true;
|
||||||
String category = new String();
|
String category = null;
|
||||||
if(entry.getValue().entityInfo != null)
|
if(entry.getValue().entityInfo != null)
|
||||||
{
|
{
|
||||||
category = entry.getValue().entityInfo.category;
|
category = entry.getValue().entityInfo.category;
|
||||||
|
@ -1249,7 +1255,7 @@ public class Battle
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
debugLog = "Actions end";
|
debugLog = "Actions almost end";
|
||||||
for(Combatant c : sideA.values())
|
for(Combatant c : sideA.values())
|
||||||
{
|
{
|
||||||
c.decision = Decision.UNDECIDED;
|
c.decision = Decision.UNDECIDED;
|
||||||
|
@ -1268,15 +1274,18 @@ public class Battle
|
||||||
{
|
{
|
||||||
combatantsChanged = true;
|
combatantsChanged = true;
|
||||||
}
|
}
|
||||||
|
debugLog += ", adding task";
|
||||||
FMLCommonHandler.instance().getMinecraftServerInstance().addScheduledTask(() -> {
|
FMLCommonHandler.instance().getMinecraftServerInstance().addScheduledTask(() -> {
|
||||||
sendMessageToAllPlayers(PacketBattleMessage.MessageType.TURN_END, 0, 0, 0);
|
sendMessageToAllPlayers(PacketBattleMessage.MessageType.TURN_END, 0, 0, 0);
|
||||||
});
|
});
|
||||||
|
debugLog = "Actions end";
|
||||||
break;
|
break;
|
||||||
} // case ACTION
|
} // case ACTION
|
||||||
default:
|
default:
|
||||||
state = State.DECISION;
|
state = State.DECISION;
|
||||||
break;
|
break;
|
||||||
} // switch(state)
|
} // switch(state)
|
||||||
|
debugLog = "Update almost end";
|
||||||
if(combatantsChanged)
|
if(combatantsChanged)
|
||||||
{
|
{
|
||||||
notifyPlayersBattleInfo();
|
notifyPlayersBattleInfo();
|
||||||
|
@ -1291,6 +1300,7 @@ public class Battle
|
||||||
removeCombatant(c);
|
removeCombatant(c);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
debugLog = "Update end";
|
||||||
return battleEnded;
|
return battleEnded;
|
||||||
} // update(final long dt)
|
} // update(final long dt)
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,7 +59,7 @@ public class BattleUpdater implements Runnable
|
||||||
updateThread.start();
|
updateThread.start();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
updateThread.join(3000);
|
updateThread.join(10000);
|
||||||
} catch(InterruptedException e){ /* exception ignored */ }
|
} catch(InterruptedException e){ /* exception ignored */ }
|
||||||
if(!updateRunnable.isFinished())
|
if(!updateRunnable.isFinished())
|
||||||
{
|
{
|
||||||
|
|
|
@ -7,6 +7,7 @@ import com.seodisparate.TurnBasedMinecraft.common.TurnBasedMinecraftMod;
|
||||||
|
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
|
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
|
||||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
|
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
|
||||||
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
|
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
|
||||||
|
@ -75,11 +76,19 @@ public class PacketBattleInfo implements IMessage
|
||||||
TurnBasedMinecraftMod.proxy.getLocalBattle().clearCombatants();
|
TurnBasedMinecraftMod.proxy.getLocalBattle().clearCombatants();
|
||||||
for(Integer id : message.sideA)
|
for(Integer id : message.sideA)
|
||||||
{
|
{
|
||||||
TurnBasedMinecraftMod.proxy.getLocalBattle().addCombatantToSideA(Minecraft.getMinecraft().world.getEntityByID(id));
|
Entity e = Minecraft.getMinecraft().world.getEntityByID(id);
|
||||||
|
if(e != null)
|
||||||
|
{
|
||||||
|
TurnBasedMinecraftMod.proxy.getLocalBattle().addCombatantToSideA(e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
for(Integer id : message.sideB)
|
for(Integer id : message.sideB)
|
||||||
{
|
{
|
||||||
TurnBasedMinecraftMod.proxy.getLocalBattle().addCombatantToSideB(Minecraft.getMinecraft().world.getEntityByID(id));
|
Entity e = Minecraft.getMinecraft().world.getEntityByID(id);
|
||||||
|
if(e != null)
|
||||||
|
{
|
||||||
|
TurnBasedMinecraftMod.proxy.getLocalBattle().addCombatantToSideB(e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
TurnBasedMinecraftMod.proxy.setBattleGuiTime((int)(message.decisionNanos / 1000000000L));
|
TurnBasedMinecraftMod.proxy.setBattleGuiTime((int)(message.decisionNanos / 1000000000L));
|
||||||
TurnBasedMinecraftMod.proxy.setBattleGuiBattleChanged();
|
TurnBasedMinecraftMod.proxy.setBattleGuiBattleChanged();
|
||||||
|
|
Loading…
Reference in a new issue