Fixed: DisconnectedPlayer and ReconnectPlayer apply with minimodel not initialized, disconnection countdown when the game is ended. Fixed: the player is now removed from order if it was added before.
This commit is contained in:
@@ -4,6 +4,7 @@ import java.util.Collection;
|
|||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A {@link LinkedHashMap} with a configurable size limit and an associated action.
|
* A {@link LinkedHashMap} with a configurable size limit and an associated action.
|
||||||
@@ -15,7 +16,7 @@ import java.util.Set;
|
|||||||
*/
|
*/
|
||||||
public class LimitedMap<K, V> implements Map<K, V> {
|
public class LimitedMap<K, V> implements Map<K, V> {
|
||||||
|
|
||||||
private final LinkedHashMap<K, V> map = new LinkedHashMap<>();
|
private final ConcurrentHashMap<K, V> map = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The maximum number of elements allowed in the map before the action is triggered.
|
* The maximum number of elements allowed in the map before the action is triggered.
|
||||||
|
|||||||
@@ -70,7 +70,9 @@ public abstract class OrderLogicCard implements Serializable {
|
|||||||
playerList=new ArrayList<>();
|
playerList=new ArrayList<>();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
playerList.removeIf(x->player.getUserName().equals(x.player.getUserName()));
|
||||||
playerList.add(new OrderPlayer(player,false));
|
playerList.add(new OrderPlayer(player,false));
|
||||||
|
players.removeIf(x->player.getUserName().equals(x.getUserName()));
|
||||||
players.add(player);
|
players.add(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -35,10 +35,13 @@ public class DisconnectedPlayer extends NetworkEvent implements Serializable{
|
|||||||
public boolean apply(MiniModel miniModel){
|
public boolean apply(MiniModel miniModel){
|
||||||
if(isError)
|
if(isError)
|
||||||
return false;
|
return false;
|
||||||
miniModel.setPlayer(player);
|
if(miniModel!=null)
|
||||||
miniModel.setOrderLogicCard(orderLogicCard);
|
{
|
||||||
miniModel.setCurrentState(currentState);
|
miniModel.setPlayer(player);
|
||||||
miniModel.setSlotPlayerMap(slotPlayerMap);
|
miniModel.setOrderLogicCard(orderLogicCard);
|
||||||
|
miniModel.setCurrentState(currentState);
|
||||||
|
miniModel.setSlotPlayerMap(slotPlayerMap);
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -33,10 +33,12 @@ public class ReconnectPlayer extends NetworkEvent implements Serializable{
|
|||||||
public boolean apply(MiniModel miniModel){
|
public boolean apply(MiniModel miniModel){
|
||||||
if(isError)
|
if(isError)
|
||||||
return false;
|
return false;
|
||||||
miniModel.setPlayer(player);
|
if(miniModel!=null) {
|
||||||
miniModel.setOrderLogicCard(orderLogicCard);
|
miniModel.setPlayer(player);
|
||||||
miniModel.setCurrentState(currentState);
|
miniModel.setOrderLogicCard(orderLogicCard);
|
||||||
miniModel.setSlotPlayerMap(slotPlayerMap);
|
miniModel.setCurrentState(currentState);
|
||||||
|
miniModel.setSlotPlayerMap(slotPlayerMap);
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -156,7 +156,7 @@ public class ServerLauncher {
|
|||||||
System.out.println("\n!!! Save failed !!!\n");
|
System.out.println("\n!!! Save failed !!!\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (event.getEventType().equals(EventType.DISCONNECTED_PLAYER) && playerList.values().stream().filter(x -> x).count() == 1) {
|
if (event.getEventType().equals(EventType.DISCONNECTED_PLAYER) && playerList.values().stream().filter(x -> x).count() == 1&& game.getCurrentState().getGameStage() != GameStages.ENDED) {
|
||||||
if (disconnectionTimer != null && !disconnectionTimer.isDone()) {
|
if (disconnectionTimer != null && !disconnectionTimer.isDone()) {
|
||||||
disconnectionTimer.cancel(false);
|
disconnectionTimer.cancel(false);
|
||||||
}
|
}
|
||||||
@@ -277,7 +277,7 @@ public class ServerLauncher {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
catch(RemoteException e){
|
catch(RemoteException e){
|
||||||
throw new RuntimeException(e);
|
//throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user