From: Kimmo R. <ki...@us...> - 2010-08-01 13:11:36
|
Update of /cvsroot/arianne/stendhal/src/games/stendhal/client/gui/j2d/entity In directory sfp-cvsdas-4.v30.ch3.sourceforge.com:/tmp/cvs-serv30955/src/games/stendhal/client/gui/j2d/entity Modified Files: Chest2DView.java Corpse2DView.java Door2DView.java Entity2DView.java Pet2DView.java Player2DView.java Portal2DView.java RPEntity2DView.java Sheep2DView.java Sign2DView.java User2DView.java Log Message: threading fixes Index: Portal2DView.java =================================================================== RCS file: /cvsroot/arianne/stendhal/src/games/stendhal/client/gui/j2d/entity/Portal2DView.java,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** Portal2DView.java 27 Apr 2010 18:29:45 -0000 1.17 --- Portal2DView.java 1 Aug 2010 13:11:28 -0000 1.18 *************** *** 34,38 **** @Override protected void buildActions(final List<String> list) { ! if (!((Portal) entity).isHidden()) { list.add(ActionType.USE.getRepresentation()); --- 34,39 ---- @Override protected void buildActions(final List<String> list) { ! Portal portal = (Portal) entity; ! if ((portal != null) && !portal.isHidden()) { list.add(ActionType.USE.getRepresentation()); Index: Chest2DView.java =================================================================== RCS file: /cvsroot/arianne/stendhal/src/games/stendhal/client/gui/j2d/entity/Chest2DView.java,v retrieving revision 1.24 retrieving revision 1.25 diff -C2 -d -r1.24 -r1.25 *** Chest2DView.java 29 Mar 2010 21:28:08 -0000 1.24 --- Chest2DView.java 1 Aug 2010 13:11:27 -0000 1.25 *************** *** 121,125 **** super.buildActions(list); ! if (((Chest) entity).isOpen()) { list.add(ActionType.INSPECT.getRepresentation()); list.add(ActionType.CLOSE.getRepresentation()); --- 121,126 ---- super.buildActions(list); ! Chest chest = (Chest) entity; ! if (chest != null && chest.isOpen()) { list.add(ActionType.INSPECT.getRepresentation()); list.add(ActionType.CLOSE.getRepresentation()); Index: User2DView.java =================================================================== RCS file: /cvsroot/arianne/stendhal/src/games/stendhal/client/gui/j2d/entity/User2DView.java,v retrieving revision 1.25 retrieving revision 1.26 diff -C2 -d -r1.25 -r1.26 *** User2DView.java 3 Jul 2010 09:43:45 -0000 1.25 --- User2DView.java 1 Aug 2010 13:11:28 -0000 1.26 *************** *** 59,68 **** // list.add(ActionType.JOIN_GUILD.getRepresentation()); ! if (((User) entity).hasSheep()) { ! list.add(ActionType.LEAVE_SHEEP.getRepresentation()); ! } ! if (((User) entity).hasPet()) { ! list.add(ActionType.LEAVE_PET.getRepresentation()); } } --- 59,71 ---- // list.add(ActionType.JOIN_GUILD.getRepresentation()); ! User user = (User) entity; ! if (user != null) { ! if (user.hasSheep()) { ! list.add(ActionType.LEAVE_SHEEP.getRepresentation()); ! } ! if (user.hasPet()) { ! list.add(ActionType.LEAVE_PET.getRepresentation()); ! } } } Index: RPEntity2DView.java =================================================================== RCS file: /cvsroot/arianne/stendhal/src/games/stendhal/client/gui/j2d/entity/RPEntity2DView.java,v retrieving revision 1.55 retrieving revision 1.56 diff -C2 -d -r1.55 -r1.56 *** RPEntity2DView.java 21 Jul 2010 20:13:58 -0000 1.55 --- RPEntity2DView.java 1 Aug 2010 13:11:28 -0000 1.56 *************** *** 322,326 **** final int by = y - 3; ! final float hpRatio = ((RPEntity) entity).getHPRatio(); final float r = Math.min((1.0f - hpRatio) * 2.0f, 1.0f); --- 322,331 ---- final int by = y - 3; ! RPEntity rpentity = (RPEntity) entity; ! if (rpentity == null) { ! return; ! } ! ! final float hpRatio = rpentity.getHPRatio(); final float r = Math.min((1.0f - hpRatio) * 2.0f, 1.0f); *************** *** 391,396 **** protected void drawIdeas(final Graphics2D g2d, final int x, final int y, final int height) { ! if (((RPEntity) entity).isEating()) { ! if (((RPEntity) entity).isChoking()) { chokingSprite.draw(g2d, x, y + height - 2 * ICON_OFFSET); } else { --- 396,406 ---- protected void drawIdeas(final Graphics2D g2d, final int x, final int y, final int height) { ! RPEntity rpentity = (RPEntity) entity; ! if (rpentity == null) { ! return; ! } ! ! if (rpentity.isEating()) { ! if (rpentity.isChoking()) { chokingSprite.draw(g2d, x, y + height - 2 * ICON_OFFSET); } else { *************** *** 399,403 **** } ! if (((RPEntity) entity).isPoisoned()) { poisonedSprite.draw(g2d, x - ICON_OFFSET, y + height - 2 * ICON_OFFSET); } --- 409,413 ---- } ! if (rpentity.isPoisoned()) { poisonedSprite.draw(g2d, x - ICON_OFFSET, y + height - 2 * ICON_OFFSET); } *************** *** 422,426 **** protected void drawCombat(final Graphics2D g2d, final int x, final int y, final int width, final int height) { ! Rectangle2D wrect = entity.getArea(); final Rectangle srect = new Rectangle((int) (wrect.getX() * IGameScreen.SIZE_UNIT_PIXELS), (int) (wrect.getY() * IGameScreen.SIZE_UNIT_PIXELS), --- 432,441 ---- protected void drawCombat(final Graphics2D g2d, final int x, final int y, final int width, final int height) { ! RPEntity rpentity = (RPEntity) entity; ! if (rpentity == null) { ! return; ! } ! ! Rectangle2D wrect = rpentity.getArea(); final Rectangle srect = new Rectangle((int) (wrect.getX() * IGameScreen.SIZE_UNIT_PIXELS), (int) (wrect.getY() * IGameScreen.SIZE_UNIT_PIXELS), *************** *** 430,434 **** final double DIVISOR = 1.414213562; // sqrt(2) - RPEntity rpentity = (RPEntity) entity; if (rpentity.isBeingAttacked()) { // Draw red box around --- 445,448 ---- *************** *** 457,466 **** drawAttack(g2d, x, y, width, height); ! if (((RPEntity) entity).isDefending()) { // Draw bottom right combat icon final int sx = srect.x + srect.width - ICON_OFFSET; final int sy = y + height - 2 * ICON_OFFSET; ! switch (((RPEntity) entity).getResolution()) { case BLOCKED: blockedSprite.draw(g2d, sx, sy); --- 471,480 ---- drawAttack(g2d, x, y, width, height); ! if (rpentity.isDefending()) { // Draw bottom right combat icon final int sx = srect.x + srect.width - ICON_OFFSET; final int sy = y + height - 2 * ICON_OFFSET; ! switch (rpentity.getResolution()) { case BLOCKED: blockedSprite.draw(g2d, sx, sy); *************** *** 492,496 **** RPEntity rpentity = (RPEntity) entity; ! if (rpentity.isAttacking() && rpentity.getShownDamageType() != null) { if (frameBladeStrike < NUM_ATTACK_FRAMES) { RPEntity target = rpentity.getAttackTarget(); --- 506,510 ---- RPEntity rpentity = (RPEntity) entity; ! if ((rpentity != null) && rpentity.isAttacking() && rpentity.getShownDamageType() != null) { if (frameBladeStrike < NUM_ATTACK_FRAMES) { RPEntity target = rpentity.getAttackTarget(); *************** *** 499,505 **** // of concept arrow drawing. Should be specified in the // attack event itself ! final Rectangle2D area = entity.getArea(); ! area.setRect(entity.getX() - 0.25, entity.getY() - 0.25, entity.getWidth() ! + 2 * 0.25, entity.getHeight() + 2 * 0.25); if (area.intersects(target.getArea())) { --- 513,519 ---- // of concept arrow drawing. Should be specified in the // attack event itself ! final Rectangle2D area = rpentity.getArea(); ! area.setRect(rpentity.getX() - 0.25, rpentity.getY() - 0.25, rpentity.getWidth() ! + 2 * 0.25, rpentity.getHeight() + 2 * 0.25); if (area.intersects(target.getArea())) { *************** *** 689,693 **** super.buildActions(list); ! if (((RPEntity) entity).isAttackedBy(User.get())) { list.add(ActionType.STOP_ATTACK.getRepresentation()); } else { --- 703,708 ---- super.buildActions(list); ! RPEntity rpentity = (RPEntity) entity; ! if ((rpentity != null) && rpentity.isAttackedBy(User.get())) { list.add(ActionType.STOP_ATTACK.getRepresentation()); } else { Index: Door2DView.java =================================================================== RCS file: /cvsroot/arianne/stendhal/src/games/stendhal/client/gui/j2d/entity/Door2DView.java,v retrieving revision 1.26 retrieving revision 1.27 diff -C2 -d -r1.26 -r1.27 *** Door2DView.java 27 Apr 2010 18:29:45 -0000 1.26 --- Door2DView.java 1 Aug 2010 13:11:27 -0000 1.27 *************** *** 126,130 **** super.buildActions(list); ! if (((Door) entity).isOpen()) { list.add(ActionType.CLOSE.getRepresentation()); } else { --- 126,131 ---- super.buildActions(list); ! Door door = (Door) entity; ! if (door != null && door.isOpen()) { list.add(ActionType.CLOSE.getRepresentation()); } else { Index: Entity2DView.java =================================================================== RCS file: /cvsroot/arianne/stendhal/src/games/stendhal/client/gui/j2d/entity/Entity2DView.java,v retrieving revision 1.44 retrieving revision 1.45 diff -C2 -d -r1.44 -r1.45 *** Entity2DView.java 19 Jun 2010 14:08:39 -0000 1.44 --- Entity2DView.java 1 Aug 2010 13:11:28 -0000 1.45 *************** *** 262,266 **** g2d.setColor(Color.green); ! g2d.draw(entity.getArea()); } } --- 262,270 ---- g2d.setColor(Color.green); ! // Another thread can remove entity ! IEntity tmp = entity; ! if (tmp != null) { ! g2d.draw(tmp.getArea()); ! } } } *************** *** 713,716 **** --- 717,721 ---- */ public void onAction(final ActionType at) { + IEntity entity = this.entity; // return prematurely if view has already been released if (entity == null) { Index: Sheep2DView.java =================================================================== RCS file: /cvsroot/arianne/stendhal/src/games/stendhal/client/gui/j2d/entity/Sheep2DView.java,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** Sheep2DView.java 24 Apr 2010 15:51:25 -0000 1.14 --- Sheep2DView.java 1 Aug 2010 13:11:28 -0000 1.15 *************** *** 54,64 **** protected void buildActions(final List<String> list) { super.buildActions(list); ! if (!User.isNull()) { ! if (!User.get().hasSheep()) { ! list.add(ActionType.OWN.getRepresentation()); ! } else if (User.get().getSheepID() == ((Sheep) entity).getID() ! .getObjectID()) { ! list.add(ActionType.LEAVE_SHEEP.getRepresentation()); ! } } } --- 54,64 ---- protected void buildActions(final List<String> list) { super.buildActions(list); ! User user = User.get(); ! Sheep sheep = (Sheep) entity; ! if ((user != null) && !user.hasSheep()) { ! list.add(ActionType.OWN.getRepresentation()); ! } else if ((sheep != null) && (user.getSheepID() == sheep.getID() ! .getObjectID())) { ! list.add(ActionType.LEAVE_SHEEP.getRepresentation()); } } Index: Corpse2DView.java =================================================================== RCS file: /cvsroot/arianne/stendhal/src/games/stendhal/client/gui/j2d/entity/Corpse2DView.java,v retrieving revision 1.30 retrieving revision 1.31 diff -C2 -d -r1.30 -r1.31 *** Corpse2DView.java 29 Mar 2010 21:28:08 -0000 1.30 --- Corpse2DView.java 1 Aug 2010 13:11:27 -0000 1.31 *************** *** 223,227 **** @Override public StendhalCursor getCursor() { ! if (((Corpse) entity).getContent().iterator().hasNext()) { return StendhalCursor.BAG; } else { --- 223,228 ---- @Override public StendhalCursor getCursor() { ! Corpse corpse = (Corpse) entity; ! if ((corpse != null) && corpse.getContent().iterator().hasNext()) { return StendhalCursor.BAG; } else { Index: Player2DView.java =================================================================== RCS file: /cvsroot/arianne/stendhal/src/games/stendhal/client/gui/j2d/entity/Player2DView.java,v retrieving revision 1.37 retrieving revision 1.38 diff -C2 -d -r1.37 -r1.38 *** Player2DView.java 4 Jul 2010 14:56:25 -0000 1.37 --- Player2DView.java 1 Aug 2010 13:11:28 -0000 1.38 *************** *** 113,117 **** protected AlphaComposite getComposite() { // Check for ghostmode to avoid ignored ghostmode admins becoming visible ! if (User.isIgnoring(entity.getName()) && !((RPEntity) entity).isGhostMode()) { return AlphaComposite.DstOut; } --- 113,118 ---- protected AlphaComposite getComposite() { // Check for ghostmode to avoid ignored ghostmode admins becoming visible ! RPEntity rpentity = (RPEntity) entity; ! if ((rpentity != null) && User.isIgnoring(rpentity.getName()) && !rpentity.isGhostMode()) { return AlphaComposite.DstOut; } *************** *** 150,162 **** @Override protected void buildActions(final List<String> list) { ! if (!((RPEntity) entity).isGhostMode()) { super.buildActions(list); ! boolean hasBuddy = User.hasBuddy(entity.getName()); if (!hasBuddy) { list.add(ActionType.ADD_BUDDY.getRepresentation()); } ! if (User.isIgnoring(entity.getName())) { list.add(ActionType.UNIGNORE.getRepresentation()); } else if (!hasBuddy) { --- 151,164 ---- @Override protected void buildActions(final List<String> list) { ! RPEntity player = (RPEntity) entity; ! if ((player != null) && !player.isGhostMode()) { super.buildActions(list); ! boolean hasBuddy = User.hasBuddy(player.getName()); if (!hasBuddy) { list.add(ActionType.ADD_BUDDY.getRepresentation()); } ! if (User.isIgnoring(player.getName())) { list.add(ActionType.UNIGNORE.getRepresentation()); } else if (!hasBuddy) { *************** *** 164,168 **** } } - } --- 166,169 ---- *************** *** 175,179 **** @Override protected void draw(final Graphics2D g2d, final int x, final int y, final int width, final int height) { ! boolean newIgnoreStatus = User.isIgnoring(entity.getName()); if (newIgnoreStatus != ignored) { visibilityChanged = true; --- 176,185 ---- @Override protected void draw(final Graphics2D g2d, final int x, final int y, final int width, final int height) { ! Player player = (Player) entity; ! if (player == null) { ! return; ! } ! ! boolean newIgnoreStatus = User.isIgnoring(player.getName()); if (newIgnoreStatus != ignored) { visibilityChanged = true; *************** *** 184,197 **** super.draw(g2d, x, y, width, height); ! if (((Player) entity).isAway()) { awaySprite.draw(g2d, x + (width * 3 / 4), y - 10); } ! if (((Player) entity).isGrumpy()) { grumpySprite.draw(g2d, x - (width * 1 / 6), y - 6); } ! if (((Player) entity).isBadBoy()) { skullSprite.draw(g2d, x , y); } - } --- 190,202 ---- super.draw(g2d, x, y, width, height); ! if (player.isAway()) { awaySprite.draw(g2d, x + (width * 3 / 4), y - 10); } ! if (player.isGrumpy()) { grumpySprite.draw(g2d, x - (width * 1 / 6), y - 6); } ! if (player.isBadBoy()) { skullSprite.draw(g2d, x , y); } } Index: Pet2DView.java =================================================================== RCS file: /cvsroot/arianne/stendhal/src/games/stendhal/client/gui/j2d/entity/Pet2DView.java,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** Pet2DView.java 14 May 2010 20:41:06 -0000 1.16 --- Pet2DView.java 1 Aug 2010 13:11:28 -0000 1.17 *************** *** 54,65 **** protected void buildActions(final List<String> list) { super.buildActions(list); ! if (!User.isNull()) { ! if (!User.get().hasPet()) { ! list.add(ActionType.OWN.getRepresentation()); ! } else if (User.get().getPetID() == ((Pet) entity).getID() ! .getObjectID()) { ! list.add(ActionType.LEAVE_PET.getRepresentation()); ! } ! } } --- 54,63 ---- protected void buildActions(final List<String> list) { super.buildActions(list); ! User user = User.get(); ! Pet pet = (Pet) entity; ! if ((user != null) && user.hasPet()) { ! list.add(ActionType.OWN.getRepresentation()); ! } else if ((pet != null) && (user.getPetID() == pet.getID().getObjectID())) { ! list.add(ActionType.LEAVE_PET.getRepresentation()); } } Index: Sign2DView.java =================================================================== RCS file: /cvsroot/arianne/stendhal/src/games/stendhal/client/gui/j2d/entity/Sign2DView.java,v retrieving revision 1.26 retrieving revision 1.27 diff -C2 -d -r1.26 -r1.27 *** Sign2DView.java 14 May 2010 20:41:06 -0000 1.26 --- Sign2DView.java 1 Aug 2010 13:11:28 -0000 1.27 *************** *** 143,147 **** */ private ActionType getActionType() { ! String action = ((Sign) entity).getAction(); if (action == null) { return ActionType.LOOK; --- 143,154 ---- */ private ActionType getActionType() { ! Sign sign = (Sign) entity; ! if (sign == null) { ! // The user switched maps, but we still need a reasonable return ! // value ! return ActionType.LOOK; ! } ! ! String action = sign.getAction(); if (action == null) { return ActionType.LOOK; |