mirror of https://github.com/FreeCol/freecol.git
More unnecessary casts to ServerPlayer.
This commit is contained in:
parent
abd39cd6b4
commit
7e762bc703
|
@ -198,7 +198,7 @@ public class DebugUtils {
|
|||
transform(sSpec.getFoundingFathers(), noFatherPred, mapper,
|
||||
Comparator.naturalOrder()));
|
||||
if (father != null) {
|
||||
server.getInGameController().addFoundingFather((ServerPlayer)sPlayer, father);
|
||||
server.getInGameController().addFoundingFather(sPlayer, father);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -633,6 +633,16 @@ public class Player extends FreeColGameObject implements Nameable {
|
|||
throw new RuntimeException("setConnection called on Player: " + this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Send a change set across the connection.
|
||||
*
|
||||
* @param cs The {@code ChangeSet} to send.
|
||||
* @return True if the message was sent.
|
||||
*/
|
||||
public boolean send(ChangeSet cs) {
|
||||
throw new RuntimeException("send called on Player: " + this);
|
||||
}
|
||||
|
||||
|
||||
// Error wrangling
|
||||
|
||||
|
|
|
@ -149,7 +149,7 @@ public class FirstContactMessage extends AttributeMessage {
|
|||
|
||||
// Proceed to contact.
|
||||
return igc(freeColServer)
|
||||
.nativeFirstContact(serverPlayer, (ServerPlayer)otherPlayer,
|
||||
.nativeFirstContact(serverPlayer, otherPlayer,
|
||||
getTile(game), getResult());
|
||||
}
|
||||
|
||||
|
|
|
@ -146,7 +146,7 @@ public class InciteMessage extends AttributeMessage {
|
|||
|
||||
// Valid, proceed to incite.
|
||||
return igc(freeColServer)
|
||||
.incite(serverPlayer, unit, is, (ServerPlayer)enemy, gold);
|
||||
.incite(serverPlayer, unit, is, enemy, gold);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -611,11 +611,10 @@ public final class FreeColServer {
|
|||
public void endGame() {
|
||||
changeServerState(ServerState.END_GAME);
|
||||
for (Player p : getGame().getLiveEuropeanPlayerList()) {
|
||||
ServerPlayer sp = (ServerPlayer)p;
|
||||
if (sp.isAdmin()) continue;
|
||||
sp.send(new ChangeSet()
|
||||
.add(See.only(sp),
|
||||
new LogoutMessage(sp, LogoutReason.QUIT)));
|
||||
if (p.isAdmin()) continue;
|
||||
p.send(new ChangeSet()
|
||||
.add(See.only(p),
|
||||
new LogoutMessage(p, LogoutReason.QUIT)));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -665,11 +664,15 @@ public final class FreeColServer {
|
|||
/**
|
||||
* Remove a player connection.
|
||||
*
|
||||
* @param serverPlayer The {@code ServerPlayer} to disconnect.
|
||||
* @param player The {@code Player} to disconnect.
|
||||
*/
|
||||
public void removePlayerConnection(ServerPlayer serverPlayer) {
|
||||
getServer().removeConnection(serverPlayer.getConnection());
|
||||
serverPlayer.disconnect();
|
||||
public void removePlayerConnection(Player player) {
|
||||
Connection conn = player.getConnection();
|
||||
if (conn != null) {
|
||||
getServer().removeConnection(conn);
|
||||
conn.close();
|
||||
player.setConnection(null);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -738,10 +741,10 @@ public final class FreeColServer {
|
|||
final Game game = buildGame();
|
||||
for (Player player : transform(game.getLivePlayers(),
|
||||
p -> !p.isAI())) {
|
||||
((ServerPlayer)player).invalidateCanSeeTiles();
|
||||
player.invalidateCanSeeTiles();
|
||||
ChangeSet cs = new ChangeSet();
|
||||
cs.add(See.only(player), game);
|
||||
((ServerPlayer)player).send(cs);
|
||||
player.send(cs);
|
||||
}
|
||||
break;
|
||||
case LOAD_GAME: // Do nothing, game has been sent.
|
||||
|
@ -753,7 +756,7 @@ public final class FreeColServer {
|
|||
}
|
||||
|
||||
changeServerState(ServerState.IN_GAME);
|
||||
sendToAll(TrivialMessage.startGameMessage, (ServerPlayer)null);
|
||||
sendToAll(TrivialMessage.startGameMessage, (Player)null);
|
||||
updateMetaServer();
|
||||
}
|
||||
|
||||
|
@ -771,11 +774,10 @@ public final class FreeColServer {
|
|||
* Send a message to all connections.
|
||||
*
|
||||
* @param msg The {@code Message} to send.
|
||||
* @param serverPlayer An optional {@code ServerPlayer} to omit.
|
||||
* @param player An optional {@code Player} to omit.
|
||||
*/
|
||||
public void sendToAll(Message msg, ServerPlayer serverPlayer) {
|
||||
sendToAll(msg, (serverPlayer == null) ? null
|
||||
: serverPlayer.getConnection());
|
||||
public void sendToAll(Message msg, Player player) {
|
||||
sendToAll(msg, (player == null) ? null : player.getConnection());
|
||||
}
|
||||
|
||||
|
||||
|
@ -1326,10 +1328,12 @@ public final class FreeColServer {
|
|||
* @return A suitable record.
|
||||
*/
|
||||
private ServerInfo getServerInfo() {
|
||||
int slots = count(getGame().getLiveEuropeanPlayers(),
|
||||
p -> !p.isREF() && ((ServerPlayer)p).isAI() && !p.isConnected());
|
||||
int players = count(getGame().getLivePlayers(),
|
||||
p -> !((ServerPlayer)p).isAI() && p.isConnected());
|
||||
final Predicate<Player> absentAI
|
||||
= p -> !p.isREF() && p.isAI() && !p.isConnected();
|
||||
final Predicate<Player> liveHuman
|
||||
= p -> !p.isAI() && p.isConnected();
|
||||
int slots = count(getGame().getLiveEuropeanPlayers(), absentAI);
|
||||
int players = count(getGame().getLiveEuropeanPlayers(), liveHuman);
|
||||
return new ServerInfo(getName(),
|
||||
null, -1, // Missing these at this point
|
||||
slots, players,
|
||||
|
|
|
@ -1476,17 +1476,17 @@ public class EuropeanAIPlayer extends MissionAIPlayer {
|
|||
* @param lb A {@code LogBuilder} to log to.
|
||||
*/
|
||||
private void determineStances(LogBuilder lb) {
|
||||
final ServerPlayer serverPlayer = (ServerPlayer)getPlayer();
|
||||
final Player player = getPlayer();
|
||||
lb.mark();
|
||||
|
||||
for (Player p : getGame().getLivePlayerList(serverPlayer)) {
|
||||
for (Player p : getGame().getLivePlayerList(player)) {
|
||||
Stance newStance = determineStance(p);
|
||||
if (newStance != serverPlayer.getStance(p)) {
|
||||
if (newStance != player.getStance(p)) {
|
||||
if (newStance == Stance.WAR && peaceHolds(p)) {
|
||||
; // Peace treaty holds for now
|
||||
} else {
|
||||
getAIMain().getFreeColServer().getInGameController()
|
||||
.changeStance(serverPlayer, newStance, p, true);
|
||||
.changeStance(player, newStance, p, true);
|
||||
lb.add(" ", p.getDebugName(), "->", newStance, ", ");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -247,16 +247,14 @@ public final class InGameController extends Controller {
|
|||
* Public version of csAddFoundingFather so it can be used in the
|
||||
* test code and DebugMenu.
|
||||
*
|
||||
* @param serverPlayer The {@code ServerPlayer} who gains a father.
|
||||
* @param player The {@code Player} who gains a father.
|
||||
* @param father The {@code FoundingFather} to add.
|
||||
*/
|
||||
public void addFoundingFather(ServerPlayer serverPlayer,
|
||||
FoundingFather father) {
|
||||
public void addFoundingFather(Player player, FoundingFather father) {
|
||||
ChangeSet cs = new ChangeSet();
|
||||
serverPlayer.csAddFoundingFather(father, random, cs);
|
||||
cs.addAttribute(See.only(serverPlayer), "flush",
|
||||
Boolean.TRUE.toString());
|
||||
getGame().sendTo(serverPlayer, cs);
|
||||
((ServerPlayer)player).csAddFoundingFather(father, random, cs);
|
||||
cs.addAttribute(See.only(player), "flush", Boolean.TRUE.toString());
|
||||
getGame().sendTo(player, cs);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -288,7 +286,7 @@ public final class InGameController extends Controller {
|
|||
final Player owner = colony.getOwner();
|
||||
colony.csChangeOwner(serverPlayer, false, cs);//-vis(serverPlayer,owner)
|
||||
serverPlayer.invalidateCanSeeTiles();//+vis(serverPlayer)
|
||||
((ServerPlayer)owner).invalidateCanSeeTiles();//+vis(owner)
|
||||
owner.invalidateCanSeeTiles();//+vis(owner)
|
||||
getGame().sendToAll(cs);
|
||||
}
|
||||
|
||||
|
@ -568,11 +566,11 @@ public final class InGameController extends Controller {
|
|||
* hence the special handling.
|
||||
*
|
||||
* @param serverPlayer The REF {@code ServerPlayer} that is granting.
|
||||
* @param independent The newly independent {@code ServerPlayer}.
|
||||
* @param independent The newly independent {@code Player}.
|
||||
* @param cs A {@code ChangeSet} to update.
|
||||
*/
|
||||
private void csGiveIndependence(ServerPlayer serverPlayer,
|
||||
ServerPlayer independent, ChangeSet cs) {
|
||||
Player independent, ChangeSet cs) {
|
||||
serverPlayer.csChangeStance(Stance.PEACE, independent, true, cs);
|
||||
independent.changePlayerType(PlayerType.INDEPENDENT);
|
||||
Game game = getGame();
|
||||
|
@ -635,7 +633,8 @@ public final class InGameController extends Controller {
|
|||
cs.add(See.only(independent), independent);
|
||||
|
||||
// Reveal the map on independence.
|
||||
cs.add(See.only(independent), independent.exploreMap(true));
|
||||
cs.add(See.only(independent),
|
||||
((ServerPlayer)independent).exploreMap(true));
|
||||
}
|
||||
|
||||
private StringTemplate unitTemplate(String base, List<Unit> units) {
|
||||
|
@ -2108,7 +2107,7 @@ public final class InGameController extends Controller {
|
|||
switch (current.checkForDeath()) {
|
||||
case IS_DEFEATED:
|
||||
for (Player p : current.getRebels()) {
|
||||
csGiveIndependence(current, (ServerPlayer)p, cs);
|
||||
csGiveIndependence(current, p, cs);
|
||||
}
|
||||
// Fall through
|
||||
case IS_DEAD:
|
||||
|
@ -2467,12 +2466,12 @@ public final class InGameController extends Controller {
|
|||
* @param serverPlayer The {@code ServerPlayer} that is inciting.
|
||||
* @param unit The missionary {@code Unit} inciting.
|
||||
* @param is The {@code IndianSettlement} to incite.
|
||||
* @param enemy The {@code ServerPlayer} to be incited against.
|
||||
* @param enemy The {@code Player} to be incited against.
|
||||
* @param gold The amount of gold in the bribe.
|
||||
* @return A {@code ChangeSet} encapsulating this action.
|
||||
*/
|
||||
public ChangeSet incite(ServerPlayer serverPlayer, Unit unit,
|
||||
IndianSettlement is, ServerPlayer enemy, int gold) {
|
||||
IndianSettlement is, Player enemy, int gold) {
|
||||
ChangeSet cs = new ChangeSet();
|
||||
|
||||
Tile tile = is.getTile();
|
||||
|
@ -2481,10 +2480,9 @@ public final class InGameController extends Controller {
|
|||
cs.add(See.only(serverPlayer), tile);
|
||||
|
||||
// How much gold will be needed?
|
||||
ServerPlayer enemyPlayer = enemy;
|
||||
Player nativePlayer = is.getOwner();
|
||||
int payingValue = nativePlayer.getTension(serverPlayer).getValue();
|
||||
int targetValue = nativePlayer.getTension(enemyPlayer).getValue();
|
||||
int targetValue = nativePlayer.getTension(enemy).getValue();
|
||||
int goldToPay = (payingValue > targetValue) ? 10000 : 5000;
|
||||
goldToPay += 20 * (payingValue - targetValue);
|
||||
goldToPay = Math.max(goldToPay, 650);
|
||||
|
@ -2499,7 +2497,7 @@ public final class InGameController extends Controller {
|
|||
"missionarySettlement.inciteGoldFail",
|
||||
serverPlayer, is)
|
||||
.addStringTemplate("%player%",
|
||||
enemyPlayer.getNationLabel())
|
||||
enemy.getNationLabel())
|
||||
.addAmount("%amount%", goldToPay));
|
||||
unit.setMovesLeft(0);
|
||||
cs.addPartial(See.only(serverPlayer), unit,
|
||||
|
@ -2508,9 +2506,9 @@ public final class InGameController extends Controller {
|
|||
// Success. Raise the tension for the native player with respect
|
||||
// to the European player. Let resulting stance changes happen
|
||||
// naturally in the AI player turn/s.
|
||||
((ServerPlayer)nativePlayer).csModifyTension(enemyPlayer,
|
||||
((ServerPlayer)nativePlayer).csModifyTension(enemy,
|
||||
Tension.WAR_MODIFIER, cs);//+til
|
||||
enemyPlayer.csModifyTension(serverPlayer,
|
||||
((ServerPlayer)enemy).csModifyTension(serverPlayer,
|
||||
Tension.TENSION_ADD_WAR_INCITER, cs);//+til
|
||||
serverPlayer.modifyGold(-gold);
|
||||
nativePlayer.modifyGold(gold);
|
||||
|
@ -2959,13 +2957,13 @@ public final class InGameController extends Controller {
|
|||
* benefit.
|
||||
*
|
||||
* @param serverPlayer The {@code ServerPlayer} making contact.
|
||||
* @param other The native {@code ServerPlayer} to contact.
|
||||
* @param other The native {@code Player} to contact.
|
||||
* @param tile A {@code Tile} on offer at first landing.
|
||||
* @param result Whether the initial peace treaty was accepted.
|
||||
* @return A {@code ChangeSet} encapsulating this action.
|
||||
*/
|
||||
public ChangeSet nativeFirstContact(ServerPlayer serverPlayer,
|
||||
ServerPlayer other, Tile tile,
|
||||
Player other, Tile tile,
|
||||
boolean result) {
|
||||
ChangeSet cs = new ChangeSet();
|
||||
DiplomacySession session = null;
|
||||
|
@ -2989,9 +2987,9 @@ public final class InGameController extends Controller {
|
|||
} else {
|
||||
// Consider not accepting the treaty to be an insult and
|
||||
// ban missions.
|
||||
other.csModifyTension(serverPlayer,
|
||||
((ServerPlayer)other).csModifyTension(serverPlayer,
|
||||
Tension.TENSION_ADD_MAJOR, cs);//+til
|
||||
other.addMissionBan(serverPlayer);
|
||||
((ServerPlayer)other).addMissionBan(serverPlayer);
|
||||
}
|
||||
if (session != null) session.complete(result, cs);
|
||||
getGame().sendToOthers(serverPlayer, cs);
|
||||
|
|
|
@ -203,12 +203,12 @@ public class ServerGame extends Game implements TurnTaker {
|
|||
*/
|
||||
public boolean sendTo(Player player, ChangeSet cs) {
|
||||
try {
|
||||
return ((ServerPlayer)player).send(cs);
|
||||
return player.send(cs);
|
||||
} catch (Exception e) {
|
||||
// Catch all manner of exceptions here to localize failure to
|
||||
// just one player. Nothing is expected, but the entire output
|
||||
// side of serialization is potentially exercised here, so it is
|
||||
// a good place to find new fails.
|
||||
// Catch all manner of exceptions here to localize failure
|
||||
// to just one player. Nothing is *expected*, but the
|
||||
// entire output side of serialization is potentially
|
||||
// exercised here, so it is a good place to find new fails.
|
||||
logger.log(Level.WARNING, "sendTo(" + player.getId()
|
||||
+ "," + cs + ") failed", e);
|
||||
}
|
||||
|
@ -448,7 +448,7 @@ public class ServerGame extends Game implements TurnTaker {
|
|||
lb.add(" ", unit.getId());
|
||||
if (unit.isOnCarrier()) {
|
||||
; // Allow carrier to handle
|
||||
} else if (!((ServerPlayer)weakAI).csChangeOwner(unit, strongAI, //-vis(both)
|
||||
} else if (!weakest.csChangeOwner(unit, strongAI, //-vis(both)
|
||||
UnitChangeType.CAPTURE, null, cs)) {
|
||||
logger.warning("Owner change failed for " + unit);
|
||||
} else {
|
||||
|
@ -481,7 +481,7 @@ public class ServerGame extends Game implements TurnTaker {
|
|||
tiles.removeAll(updated);
|
||||
cs.add(See.perhaps(), tiles);
|
||||
|
||||
((ServerPlayer)weakAI).csWithdraw(cs, //+vis(weakest)
|
||||
weakest.csWithdraw(cs, //+vis(weakest)
|
||||
new ModelMessage(ModelMessage.MessageType.FOREIGN_DIPLOMACY,
|
||||
"model.game.spanishSuccession", strongAI)
|
||||
.addStringTemplate("%loserNation%", loser)
|
||||
|
|
|
@ -387,7 +387,7 @@ public class ServerIndianSettlement extends IndianSettlement
|
|||
((ServerUnit)old).csRemove(See.only(oldOwner),
|
||||
null, cs);//-vis(oldOwner)
|
||||
cs.add(See.only(oldOwner), tile);
|
||||
((ServerPlayer)oldOwner).invalidateCanSeeTiles();//+vis(oldOwner)
|
||||
oldOwner.invalidateCanSeeTiles();//+vis(oldOwner)
|
||||
}
|
||||
|
||||
if (missionary != null) {
|
||||
|
|
|
@ -273,9 +273,7 @@ public class ServerPlayer extends Player implements TurnTaker {
|
|||
// Fully implement Connection routines and use them for comms
|
||||
|
||||
/**
|
||||
* Gets the connection of this player.
|
||||
*
|
||||
* @return The {@code Connection}.
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public final Connection getConnection() {
|
||||
|
@ -283,9 +281,7 @@ public class ServerPlayer extends Player implements TurnTaker {
|
|||
}
|
||||
|
||||
/**
|
||||
* Sets the connection of this player.
|
||||
*
|
||||
* @param connection The {@code Connection}.
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public final void setConnection(Connection connection) {
|
||||
|
@ -293,20 +289,9 @@ public class ServerPlayer extends Player implements TurnTaker {
|
|||
}
|
||||
|
||||
/**
|
||||
* Disconnect this player.
|
||||
*/
|
||||
public void disconnect() {
|
||||
if (this.connection != null) this.connection.close();
|
||||
setConnection(null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Send a change set to this player.
|
||||
*
|
||||
* @param cs The {@code ChangeSet} to send.
|
||||
* @return True if the message was sent.
|
||||
* @exception FreeColException
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public boolean send(ChangeSet cs) {
|
||||
if (!isConnected()) return false;
|
||||
try {
|
||||
|
@ -318,6 +303,9 @@ public class ServerPlayer extends Player implements TurnTaker {
|
|||
return true;
|
||||
}
|
||||
|
||||
|
||||
// Extra server side routines
|
||||
|
||||
/**
|
||||
* Update the current father.
|
||||
*
|
||||
|
@ -3112,7 +3100,7 @@ outer: for (Effect effect : effects) {
|
|||
: repair;
|
||||
ship.damageShip(shipLoc);//-vis(player)
|
||||
cs.add(See.only(owner), (FreeColGameObject)shipLoc);
|
||||
((ServerPlayer)owner).invalidateCanSeeTiles();//+vis(player)
|
||||
owner.invalidateCanSeeTiles();//+vis(player)
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -193,12 +193,12 @@ public class ColonyTest extends FreeColTestCase {
|
|||
game.setMap(getTestMap(true));
|
||||
|
||||
Colony colony = getStandardColony(5);
|
||||
ServerPlayer serverPlayer = (ServerPlayer)colony.getOwner();
|
||||
Player player = colony.getOwner();
|
||||
|
||||
assertEquals(0, countParties(colony));
|
||||
colony.addModifier(serverPlayer.makeTeaPartyModifier());
|
||||
colony.addModifier(((ServerPlayer)player).makeTeaPartyModifier());
|
||||
assertEquals(1, countParties(colony));
|
||||
Modifier m = serverPlayer.makeTeaPartyModifier();
|
||||
Modifier m = ((ServerPlayer)player).makeTeaPartyModifier();
|
||||
m.setFirstTurn(new Turn(game.getTurn().getNumber() + 1));
|
||||
colony.addModifier(m);
|
||||
assertEquals(2, countParties(colony));
|
||||
|
|
|
@ -1862,7 +1862,7 @@ public class InGameControllerTest extends FreeColTestCase {
|
|||
event.setValue("model.building.printingPress");
|
||||
events.add(event);
|
||||
father.setEvents(events);
|
||||
igc.addFoundingFather((ServerPlayer)colony.getOwner(), father);
|
||||
igc.addFoundingFather(colony.getOwner(), father);
|
||||
|
||||
assertTrue(colony.getBuilding(press) != null);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue