This commit is contained in:
Blake Grotewold
2016-03-19 15:00:32 -04:00
3 changed files with 130 additions and 28 deletions
+2 -2
View File
@@ -568,7 +568,7 @@ body.noMask #description {
} }
#lootButtons:before { #lootButtons:before {
content: "take:"; content: attr(data-legend);
position: absolute; position: absolute;
top: -25px; top: -25px;
left: 0px; left: 0px;
@@ -586,7 +586,7 @@ body.noMask #description {
} }
#dropMenu:before { #dropMenu:before {
content: "drop:"; content: attr(data-legend);
border-bottom: 1px solid black; border-bottom: 1px solid black;
display: block; display: block;
margin-bottom: 5px; margin-bottom: 5px;
+3
View File
@@ -70,6 +70,9 @@ var Button = {
var cd = btn.data("cooldown"); var cd = btn.data("cooldown");
var id = 'cooldown.'+ btn.attr('id'); var id = 'cooldown.'+ btn.attr('id');
if(cd > 0) { if(cd > 0) {
if(typeof option == 'number') {
cd = option;
}
// param "start" takes value from cooldown time if not specified // param "start" takes value from cooldown time if not specified
var start, left; var start, left;
switch(option){ switch(option){
+125 -26
View File
@@ -72,11 +72,24 @@ var Events = {
startCombat: function(scene) { startCombat: function(scene) {
Engine.event('game event', 'combat'); Engine.event('game event', 'combat');
Events.won = false; Events.fought = false;
var desc = $('#description', Events.eventPanel()); var desc = $('#description', Events.eventPanel());
$('<div>').text(scene.notification).appendTo(desc); $('<div>').text(scene.notification).appendTo(desc);
// Draw pause button
var pauseBox = $('<div>').attr('id', 'pauseButton').appendTo(desc);
var pause = new Button.Button({
id: 'pause',
text: '',
cooldown: Events._PAUSE_COOLDOWN,
click: Events.togglePause
}).appendTo(pauseBox);
$('<span>').addClass('text').insertBefore(pause.children('.cooldown'));
$('<div>').addClass('clear').appendTo(pauseBox);
Events.setPause(pause, 'set');
Events.removePause(pause, 'set');
var fightBox = $('<div>').attr('id', 'fight').appendTo(desc); var fightBox = $('<div>').attr('id', 'fight').appendTo(desc);
// Draw the wanderer // Draw the wanderer
Events.createFighterDiv('@', World.health, World.getMaxHealth()).attr('id', 'wanderer').appendTo(fightBox); Events.createFighterDiv('@', World.health, World.getMaxHealth()).attr('id', 'wanderer').appendTo(fightBox);
@@ -122,7 +135,87 @@ var Events = {
Events.setHeal(healBtns); Events.setHeal(healBtns);
// Set up the enemy attack timer // Set up the enemy attack timer
Events._enemyAttackTimer = Engine.setTimeout(Events.enemyAttack, scene.attackDelay * 1000); Events._enemyAttackTimer = Engine.setInterval(Events.enemyAttack, scene.attackDelay * 1000);
},
setPause: function(btn, state){
if(!btn) {
btn = $('#pause');
}
var event = btn.closest('#event');
var string, log;
if(state == 'set') {
string = 'start.';
log = 'loaded';
} else {
string = 'resume.';
log = 'paused';
}
btn.children('.text').first().text( _(string) )
Events.paused = (state == 'auto') ? 'auto' : true;
event.addClass('paused');
Button.clearCooldown(btn);
$('#buttons').find('.button').each(function(i){
if($(this).data('onCooldown')){
$(this).children('.cooldown').stop(true,false);
}
});
Engine.log('fight '+ log +'.');
},
removePause: function(btn, state){
if(!btn) {
btn = $('#pause');
}
var event = btn.closest('#event');
var log, time, target;
if(state == 'auto' && Events.paused != 'auto') {
return;
}
switch(state){
case 'set':
Button.cooldown(btn, Events._LEAVE_COOLDOWN);
log = 'started';
time = Events._LEAVE_COOLDOWN * 1000;
target = $();
break;
case 'end':
Button.setDisabled(btn, true);
log = 'ended';
time = Events._FIGHT_SPEED;
target = $();
break;
case 'auto':
Button.cooldown(btn);
default:
log = 'resumed';
time = Events._PAUSE_COOLDOWN * 1000;
target = $('#buttons').find('.button');
break;
}
Engine.setTimeout(function(){
btn.children('.text').first().text( _('pause.') );
Events.paused = false;
event.removeClass('paused');
target.each(function(i){
if($(this).data('onCooldown')){
Button.cooldown($(this), 'pause');
}
});
Engine.log('Event '+ log);
}, time);
},
togglePause: function(btn, auto){
if(!btn) {
btn = $('#pause');
}
if((auto) && (document.hasFocus() == !Events.paused)) {
return;
}
var f = (Events.paused) ? Events.removePause : Events.setPause;
var state = (auto) ? 'auto' : false;
f(btn, state);
}, },
createEatMeatButton: function(cooldown) { createEatMeatButton: function(cooldown) {
@@ -403,6 +496,7 @@ var Events = {
}, },
enemyAttack: function() { enemyAttack: function() {
Events.togglePause($('#pause'),'auto');
var scene = Events.activeEvent().scenes[Events.activeScene]; var scene = Events.activeEvent().scenes[Events.activeScene];
@@ -426,15 +520,20 @@ var Events = {
}); });
} }
Events._enemyAttackTimer = Engine.setTimeout(Events.enemyAttack, scene.attackDelay * 1000); endFight: function() {
Events.fought = true;
clearTimeout(Events._enemyAttackTimer);
Events.removePause($('#pause'), 'end');
}, },
winFight: function() { winFight: function() {
Events.won = true; Engine.setTimeout(function() {
clearTimeout(Events._enemyAttackTimer); if(Events.fought) {
$('#enemy').animate({opacity: 0}, 300, 'linear', function() { return;
Engine.setTimeout(function() { }
try { Events.endFight();
$('#enemy').animate({opacity: 0}, 300, 'linear', function() {
Engine.setTimeout(function() {
var scene = Events.activeEvent().scenes[Events.activeScene]; var scene = Events.activeEvent().scenes[Events.activeScene];
var leaveBtn = false; var leaveBtn = false;
var desc = $('#description', Events.eventPanel()); var desc = $('#description', Events.eventPanel());
@@ -475,11 +574,15 @@ var Events = {
$('<div>').addClass('clear').appendTo(exitBtns); $('<div>').addClass('clear').appendTo(exitBtns);
Events.allowLeave(takeETbtn, leaveBtn); Events.allowLeave(takeETbtn, leaveBtn);
} catch(e) { }, 1000, true);
// It is possible to die and win if the timing is perfect. Just let it fail. });
} }, Events._FIGHT_SPEED);
}, 1000, true); },
});
loseFight: function(){
Events.endFight();
Events.endEvent();
World.die();
}, },
drawDrop:function(btn) { drawDrop:function(btn) {
@@ -590,7 +693,9 @@ var Events = {
}, },
setTakeAll: function(lootButtons){ setTakeAll: function(lootButtons){
var lootButtons = lootButtons || $('#lootButtons'); if(!lootButtons) {
lootButtons = $('#lootButtons');
}
var canTakeSomething = false; var canTakeSomething = false;
var free = Path.getFreeSpace(); var free = Path.getFreeSpace();
var takeETbutton = lootButtons.find('#loot_takeEverything'); var takeETbutton = lootButtons.find('#loot_takeEverything');
@@ -614,11 +719,7 @@ var Events = {
takeAll.children('span').first().text(_('all')); takeAll.children('span').first().text(_('all'));
} }
}); });
if(canTakeSomething){ Button.setDisabled(takeETbutton, !canTakeSomething);
takeETbutton.removeClass('disabled');
} else {
takeETbutton.addClass('disabled');
}
takeETbutton.data('canTakeEverything', (free >= 0) ? true : false); takeETbutton.data('canTakeEverything', (free >= 0) ? true : false);
return takeETbutton; return takeETbutton;
}, },
@@ -633,18 +734,16 @@ var Events = {
}, },
canLeave: function(btn){ canLeave: function(btn){
var basetext = _('take everything'); var basetext = (btn.data('canTakeEverything')) ? _('take everything') : _('take all you can');
var textbox = btn.children('span'); var textbox = btn.children('span');
var takeAndLeave = (btn.data('leaveBtn')) ? btn.data('canTakeEverything') : false; var takeAndLeave = (btn.data('leaveBtn')) ? btn.data('canTakeEverything') : false;
var text = _(basetext);
if(takeAndLeave){ if(takeAndLeave){
var verb = btn.data('leaveBtn').text() || _('leave');
textbox.text( basetext + _(' and ') + verb);
btn.data('canLeave', true);
Button.cooldown(btn); Button.cooldown(btn);
} else { text += _(' and ') + btn.data('leaveBtn').text();
textbox.text( basetext );
btn.data('canLeave', false)
} }
textbox.text( text );
btn.data('canLeave', takeAndLeave);
}, },
dropStuff: function(e) { dropStuff: function(e) {