Fixing "Armor" to work only in Skirmish phase.
Moving animations to separate JS file. Preventing non-players from conceding the game.
This commit is contained in:
@@ -39,7 +39,8 @@ public class Card1_092 extends AbstractAttachableFPPossession {
|
||||
|
||||
@Override
|
||||
public List<RequiredTriggerAction> getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) {
|
||||
if (PlayConditions.isWounded(effectResult, self.getAttachedTo())) {
|
||||
if (PlayConditions.isWounded(effectResult, self.getAttachedTo())
|
||||
&& game.getGameState().getCurrentPhase() == Phase.SKIRMISH) {
|
||||
RequiredTriggerAction action = new RequiredTriggerAction(self, null, "Apply damage prevention");
|
||||
action.addEffect(new CardAffectsCardEffect(self, self.getAttachedTo()));
|
||||
action.addEffect(
|
||||
|
||||
@@ -167,7 +167,7 @@ public class LotroGameMediator {
|
||||
public void concede(String playerId) {
|
||||
_writeLock.lock();
|
||||
try {
|
||||
if (_lotroGame.getWinnerPlayerId() == null)
|
||||
if (_lotroGame.getWinnerPlayerId() == null && _playersPlaying.contains(playerId))
|
||||
_lotroGame.playerLost(playerId, "Concession");
|
||||
} finally {
|
||||
_writeLock.unlock();
|
||||
|
||||
@@ -128,6 +128,7 @@
|
||||
<script type="text/javascript" src="js/communication.js"></script>
|
||||
<script type="text/javascript" src="js/chat.js"></script>
|
||||
<script type="text/javascript" src="js/gameUi.js"></script>
|
||||
<script type="text/javascript" src="js/gameAnimations.js"></script>
|
||||
<script type="text/javascript" src="js/jCardGroup.js"></script>
|
||||
<script type="text/javascript" src="js/jCards.js"></script>
|
||||
<script type="text/javascript" src="js/logging.js"></script>
|
||||
|
||||
65
gemp-lotr/gemp-lotr-web/src/main/webapp/js/gameAnimations.js
Normal file
65
gemp-lotr/gemp-lotr-web/src/main/webapp/js/gameAnimations.js
Normal file
@@ -0,0 +1,65 @@
|
||||
var GameAnimations = Class.extend({
|
||||
game: null,
|
||||
animationEffectDiv: null,
|
||||
|
||||
|
||||
init: function(gameUI) {
|
||||
this.game = gameUI;
|
||||
|
||||
this.animationEffectDiv = $("<div id='animation'></div>");
|
||||
this.animationEffectDiv.hide();
|
||||
$("#main").append(this.animationEffectDiv);
|
||||
},
|
||||
|
||||
cardAffectsCard: function(element) {
|
||||
var participantId = element.getAttribute("participantId");
|
||||
var blueprintId = element.getAttribute("blueprintId");
|
||||
var targetCardId = element.getAttribute("targetCardId");
|
||||
|
||||
this.animationEffectDiv.queue("anim",
|
||||
function(next) {
|
||||
var targetCard = $(".card:cardId(" + targetCardId + ")");
|
||||
if (targetCard.length > 0) {
|
||||
var card = new Card(blueprintId, "ANIMATION", "anim", participantId);
|
||||
var cardDiv = createCardDiv(card.imageUrl);
|
||||
cardDiv.data("card", card);
|
||||
|
||||
targetCard = targetCard[0];
|
||||
$("#animation").html(cardDiv);
|
||||
$("#animation").show();
|
||||
var targetCardWidth = $(targetCard).width();
|
||||
var targetCardHeight = $(targetCard).height();
|
||||
|
||||
var maxDimension = Math.max(targetCardWidth, targetCardHeight);
|
||||
|
||||
var borderWidth = Math.floor(maxDimension / 30);
|
||||
var endBorderWidth = Math.floor(maxDimension * 2 / 30);
|
||||
$("#animation").css({
|
||||
position: "absolute",
|
||||
left: $(targetCard).position().left,
|
||||
top: $(targetCard).position().top,
|
||||
width: targetCardWidth,
|
||||
height: targetCardHeight,
|
||||
"z-index": 100,
|
||||
opacity: 1});
|
||||
$("#animation").animate(
|
||||
{
|
||||
opacity: 0,
|
||||
left: "-=" + (targetCardWidth / 2),
|
||||
top: "-=" + (targetCardHeight / 2),
|
||||
width: "+=" + targetCardWidth,
|
||||
height: "+=" + targetCardHeight},
|
||||
{
|
||||
duration: 800,
|
||||
easing: "easeInCubic",
|
||||
queue: false,
|
||||
complete: next
|
||||
});
|
||||
}
|
||||
}).queue("anim",
|
||||
function(next) {
|
||||
$("#animation").hide();
|
||||
next();
|
||||
}).dequeue("anim");
|
||||
}
|
||||
});
|
||||
@@ -54,11 +54,14 @@ var GempLotrGameUI = Class.extend({
|
||||
|
||||
tabPane: null,
|
||||
|
||||
animationEffectDiv: null,
|
||||
animations: null,
|
||||
|
||||
init: function(url) {
|
||||
log("ui initialized");
|
||||
var that = this;
|
||||
|
||||
this.animations = new GameAnimations(this);
|
||||
|
||||
this.communication = new GempLotrCommunication("/gemp-lotr/server",
|
||||
function() {
|
||||
that.chatBox.appendMessage("There was a problem communicating with the server, if the game is finished, it has been removed, otherwise you have lost connection to the server.", "warningMessage");
|
||||
@@ -182,9 +185,6 @@ var GempLotrGameUI = Class.extend({
|
||||
that.clickCardFunction(event);
|
||||
});
|
||||
|
||||
this.animationEffectDiv = $("<div id='animation'></div>");
|
||||
this.animationEffectDiv.hide();
|
||||
$("#main").append(this.animationEffectDiv);
|
||||
},
|
||||
|
||||
addBottomLeftTabPane: function() {
|
||||
@@ -517,7 +517,7 @@ var GempLotrGameUI = Class.extend({
|
||||
var gameEvent = gameEvents[i];
|
||||
var eventType = gameEvent.getAttribute("type");
|
||||
if (eventType == "CARD_AFFECTS_CARD") {
|
||||
this.cardAffectsCard(gameEvent);
|
||||
this.animations.cardAffectsCard(gameEvent);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -648,58 +648,6 @@ var GempLotrGameUI = Class.extend({
|
||||
this.chatBox.appendMessage(message, "warningMessage");
|
||||
},
|
||||
|
||||
cardAffectsCard: function(element) {
|
||||
var participantId = element.getAttribute("participantId");
|
||||
var blueprintId = element.getAttribute("blueprintId");
|
||||
var targetCardId = element.getAttribute("targetCardId");
|
||||
|
||||
var card = new Card(blueprintId, "ANIMATION", "anim", participantId);
|
||||
var cardDiv = createCardDiv(card.imageUrl);
|
||||
cardDiv.data("card", card);
|
||||
|
||||
this.animationEffectDiv.queue("anim",
|
||||
function(next) {
|
||||
var targetCard = $(".card:cardId(" + targetCardId + ")");
|
||||
if (targetCard.length > 0) {
|
||||
targetCard = targetCard[0];
|
||||
$("#animation").html(cardDiv);
|
||||
$("#animation").show();
|
||||
var targetCardWidth = $(targetCard).width();
|
||||
var targetCardHeight = $(targetCard).height();
|
||||
|
||||
var maxDimension = Math.max(targetCardWidth, targetCardHeight);
|
||||
|
||||
var borderWidth = Math.floor(maxDimension / 30);
|
||||
var endBorderWidth = Math.floor(maxDimension * 2 / 30);
|
||||
$("#animation").css({
|
||||
position: "absolute",
|
||||
left: $(targetCard).position().left,
|
||||
top: $(targetCard).position().top,
|
||||
width: targetCardWidth,
|
||||
height: targetCardHeight,
|
||||
"z-index": 100,
|
||||
opacity: 1});
|
||||
$("#animation").animate(
|
||||
{
|
||||
opacity: 0,
|
||||
left: "-=" + (targetCardWidth / 2),
|
||||
top: "-=" + (targetCardHeight / 2),
|
||||
width: "+=" + targetCardWidth,
|
||||
height: "+=" + targetCardHeight},
|
||||
{
|
||||
duration: 500,
|
||||
easing: "easeInCubic",
|
||||
queue: false,
|
||||
complete: next
|
||||
});
|
||||
}
|
||||
}).queue("anim",
|
||||
function(next) {
|
||||
$("#animation").hide();
|
||||
next();
|
||||
}).dequeue("anim");
|
||||
},
|
||||
|
||||
startSkirmish: function(element) {
|
||||
var cardId = element.getAttribute("cardId");
|
||||
var opposingCardIds = element.getAttribute("opposingCardIds").split(",");
|
||||
|
||||
Reference in New Issue
Block a user