Martinay / SERisiko

4 stars 0 forks source link

EndFirstUnitPlacement nicht mit allen spielern möglich #78

Closed PCoura closed 10 years ago

PCoura commented 10 years ago

java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at Network.WebSocket.WebSocketHandler.handleApiRequest(WebSocketHandler.java:115) at Network.WebSocket.WebSocketHandler.onMessage(WebSocketHandler.java:78) at org.webbitserver.netty.DecodingHybiFrame$1.go(DecodingHybiFrame.java:54) at org.webbitserver.netty.CatchingRunnable.run(CatchingRunnable.java:13) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.RuntimeException: currentPlayer ID:31852973nicht mehr vorhanden at ServerLogic.Helper.FirstUnitPlacementHelper.ApplyChangesToGame(FirstUnitPlacementHelper.java:54) at ServerLogic.Helper.FirstUnitPlacementHelper.ApplyChangesToGame(FirstUnitPlacementHelper.java:41) at ServerLogic.ServerLogic.EndFirstUnitPlacement(ServerLogic.java:69) at ServerApi.RisikoServer.endFirstUnitPlacement(RisikoServer.java:426) ... 15 more

31852973 disconnected

frogger1993 commented 10 years ago

Wann und wie tritt dieser Fehler auf?

Krypt0n commented 10 years ago

wenn alle geplaced, haben ist aber serverlogic, nicht gamelogic

Martinay commented 10 years ago

hängt daran, dass der Aktuelle Spieler trotz Phasenwechsel nicht geändert wird

Krypt0n commented 10 years ago

wo geht denn der phasenwechsel durch?

Martinay commented 10 years ago

Irgendwie wird 2 mal der Spieler geändert. Kann sein dass das an mir liegt. Debugge gerade durch

Krypt0n commented 10 years ago

mal abgesehen davon würde ich die hascode methode und equasl methode in deiner player klasse überschreiben, z.b. so... ist nur so n tipp, wenn man so hashmaps benutzt unso, sollte mand as allgemein machen, da sich bei listen wenn man z.b. ne neue liste macht die hashcodes der objekte ändern, ist in diesem fall noch nicht zwingend derforderlich, aber empfehlenswert

@Override public int hashCode(){ return ID; }

@Override
public boolean equals(Object obj) {
    if (obj == null) {
        return false;
    }
    if (obj == this) {
        return true;
    }
    if (getClass() != obj.getClass())
    {
        return false;
    }
    final Player p = (Player) obj;
    return (this.getId() == p.getId());
}