From 3b3755cda9f40c57a5ce1f31769ccf632a992dee Mon Sep 17 00:00:00 2001 From: Vermilingua Date: Fri, 18 Oct 2013 11:58:33 +1100 Subject: [PATCH] started scoring system, yet to be populated --- css/space.css | 11 +++++ index.html | 3 +- list.TODO | 5 ++ script/engine.js | 1 + script/prestige.js | 105 ++++++++++++++++++++++------------------ script/scoring.js | 54 +++++++++++++++++++++ script/space.js | 48 ++++++++++++++---- script/state_manager.js | 3 +- 8 files changed, 173 insertions(+), 57 deletions(-) create mode 100644 list.TODO create mode 100644 script/scoring.js diff --git a/css/space.css b/css/space.css index e74fa08..dee4179 100644 --- a/css/space.css +++ b/css/space.css @@ -131,4 +131,15 @@ position: absolute; top: 0px; left: 0px; +} + +.centerCont { + padding-top:10%; +} + +.endGame { + font-size:48px; + color:#FFFFFF; + opacity:0; + position:relative; } \ No newline at end of file diff --git a/index.html b/index.html index 0389885..ac8eba3 100644 --- a/index.html +++ b/index.html @@ -34,6 +34,7 @@ + @@ -61,7 +62,7 @@ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) - })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); + })(window,document,'script','http://www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-41314886-1', 'doublespeakgames.com'); ga('send', 'pageview'); diff --git a/list.TODO b/list.TODO new file mode 100644 index 0000000..5df55ae --- /dev/null +++ b/list.TODO @@ -0,0 +1,5 @@ + ☐ fix the NaN issue at the space screen + ☐ persuade michael to get everyone onboard with a big update + ☐ school (never gonna happen) + ☐ about page + ✔ drool over sublime text @done (13-10-31 22:33) \ No newline at end of file diff --git a/script/engine.js b/script/engine.js index 22d021f..9527146 100644 --- a/script/engine.js +++ b/script/engine.js @@ -157,6 +157,7 @@ var Engine = { }, saveGame: function() { + //Score.saveScore(); if(typeof Storage != 'undefined' && localStorage) { if(Engine._saveTimer != null) { clearTimeout(Engine._saveTimer); diff --git a/script/prestige.js b/script/prestige.js index ab6a096..ecb72f2 100644 --- a/script/prestige.js +++ b/script/prestige.js @@ -8,56 +8,64 @@ var Prestige = { this.options = $.extend(this.options, options); }, - save: function() { + saveStores: function(saveBool) { var prevStores = [ //g = goods, w = weapons, a = ammo - Math.floor($SM.get('stores["wood"]') / Prestige.randGen('g')), - Math.floor($SM.get('stores["fur"]') / Prestige.randGen('g')), - Math.floor($SM.get('stores["meat"]') / Prestige.randGen('g')), - Math.floor($SM.get('stores["iron"]') / Prestige.randGen('g')), - Math.floor($SM.get('stores["coal"]') / Prestige.randGen('g')), - Math.floor($SM.get('stores["sulphur"]') / Prestige.randGen('g')), - Math.floor($SM.get('stores["steel"]') / Prestige.randGen('g')), - Math.floor($SM.get('stores["cured meat"]') / Prestige.randGen('g')), - Math.floor($SM.get('stores["scales"]') / Prestige.randGen('g')), - Math.floor($SM.get('stores["teeth"]') / Prestige.randGen('g')), - Math.floor($SM.get('stores["leather"]') / Prestige.randGen('g')), - Math.floor($SM.get('stores["bait"]') / Prestige.randGen('g')), - Math.floor($SM.get('stores["torch"]') / Prestige.randGen('g')), - Math.floor($SM.get('stores["cloth"]') / Prestige.randGen('g')), - Math.floor($SM.get('stores["bone spear"]') / Prestige.randGen('w')), - Math.floor($SM.get('stores["iron sword"]') / Prestige.randGen('w')), - Math.floor($SM.get('stores["steel sword"]') / Prestige.randGen('w')), - Math.floor($SM.get('stores["bayonet"]') / Prestige.randGen('w')), - Math.floor($SM.get('stores["rifle"]') / Prestige.randGen('w')), - Math.floor($SM.get('stores["laser rifle"]') / Prestige.randGen('w')), - Math.floor($SM.get('stores["bullets"]') / Prestige.randGen('a')), - Math.floor($SM.get('stores["energy cell"]') / Prestige.randGen('a')), - Math.floor($SM.get('stores["grenade"]') / Prestige.randGen('a')), - Math.floor($SM.get('stores["bolas"]') / Prestige.randGen('a')) + Math.floor($SM.get('stores["wood"]') / Prestige.randGen(saveBool, 'g')), + Math.floor($SM.get('stores["fur"]') / Prestige.randGen(saveBool, 'g')), + Math.floor($SM.get('stores["meat"]') / Prestige.randGen(saveBool, 'g')), + Math.floor($SM.get('stores["iron"]') / Prestige.randGen(saveBool, 'g')), + Math.floor($SM.get('stores["coal"]') / Prestige.randGen(saveBool, 'g')), + Math.floor($SM.get('stores["sulphur"]') / Prestige.randGen(saveBool, 'g')), + Math.floor($SM.get('stores["steel"]') / Prestige.randGen(saveBool, 'g')), + Math.floor($SM.get('stores["cured meat"]') / Prestige.randGen(saveBool, 'g')), + Math.floor($SM.get('stores["scales"]') / Prestige.randGen(saveBool, 'g')), + Math.floor($SM.get('stores["teeth"]') / Prestige.randGen(saveBool, 'g')), + Math.floor($SM.get('stores["leather"]') / Prestige.randGen(saveBool, 'g')), + Math.floor($SM.get('stores["bait"]') / Prestige.randGen(saveBool, 'g')), + Math.floor($SM.get('stores["torch"]') / Prestige.randGen(saveBool, 'g')), + Math.floor($SM.get('stores["cloth"]') / Prestige.randGen(saveBool, 'g')), + Math.floor($SM.get('stores["bone spear"]') / Prestige.randGen(saveBool, 'w')), + Math.floor($SM.get('stores["iron sword"]') / Prestige.randGen(saveBool, 'w')), + Math.floor($SM.get('stores["steel sword"]') / Prestige.randGen(saveBool, 'w')), + Math.floor($SM.get('stores["bayonet"]') / Prestige.randGen(saveBool, 'w')), + Math.floor($SM.get('stores["rifle"]') / Prestige.randGen(saveBool, 'w')), + Math.floor($SM.get('stores["laser rifle"]') / Prestige.randGen(saveBool, 'w')), + Math.floor($SM.get('stores["bullets"]') / Prestige.randGen(saveBool, 'a')), + Math.floor($SM.get('stores["energy cell"]') / Prestige.randGen(saveBool, 'a')), + Math.floor($SM.get('stores["grenade"]') / Prestige.randGen(saveBool, 'a')), + Math.floor($SM.get('stores["bolas"]') / Prestige.randGen(saveBool, 'a')) ]; for (var n = 0; n <= 23; n++) { if (isNaN(prevStores[n])) { prevStores[n] = 0; } } - $SM.set('previous.stores', prevStores); - return prevStores; + if(saveBool) { + $SM.set('previous.stores', prevStores); + } + return prevStores; }, + saveScore: function() { + var prevScore = Score.totalScore(); + $SM.set('previous.score',prevScore); + return prevScore; + }, - populateNewSave : function(newstate) { + populateNewSave : function(newstate) { State = { previous : { - stores : newstate + stores : newstate["stores"], + score : newstate["score"] } + }; Engine.init({ state : State }); - return State; }, - load : function() { + load : function() { var prevStores = $SM.get('previous.stores'); if(prevStores != null) { $SM.add('stores["wood"]', prevStores[0]); @@ -88,21 +96,26 @@ var Prestige = { return prevStores; }, - randGen : function(storeType) { - if (storeType == 'g') { - divisor = Math.floor(Math.random() * 10); - } else if (storeType == 'w') { - divisor = Math.floor(Math.floor(Math.random() * 10) / 2); - } else if (storeType == 'a') { - divisor = Math.ceil(Math.random() * 10 - * Math.ceil(Math.random() * 10)); - } else { - divisor = 1; - } - if (divisor === 0) { - divisor = 1; - } - return divisor; + randGen : function(saveBool, storeType) { + if (saveBool) { + if (storeType == 'g') { + divisor = Math.floor(Math.random() * 10); + } else if (storeType == 'w') { + divisor = Math.floor(Math.floor(Math.random() * 10) / 2); + } else if (storeType == 'a') { + divisor = Math.ceil(Math.random() * 10 + * Math.ceil(Math.random() * 10)); + } else { + divisor = 1; + } + if (divisor === 0) { + divisor = 1; + } + return divisor; + } + else { + return 1; + }; } }; diff --git a/script/scoring.js b/script/scoring.js new file mode 100644 index 0000000..55c6ba4 --- /dev/null +++ b/script/scoring.js @@ -0,0 +1,54 @@ +var Score = { + + name: 'Score', + + options: {}, + + init: function(options) { + this.options = $.extend(this.options, options); + }, + + calculateScore: function() { + var scoreUnadded = Prestige.saveStores(false); + var fullScore = 0; + fullScore = fullScore + scoreUnadded[0] * 1; + fullScore = fullScore + scoreUnadded[1] * 1.5; + fullScore = fullScore + scoreUnadded[2] * 1; + fullScore = fullScore + scoreUnadded[3] * 2; + fullScore = fullScore + scoreUnadded[4] * 2; + fullScore = fullScore + scoreUnadded[5] * 3; + fullScore = fullScore + scoreUnadded[6] * 3; + fullScore = fullScore + scoreUnadded[7] * 2; + fullScore = fullScore + scoreUnadded[8] * 2; + fullScore = fullScore + scoreUnadded[9] * 2; + fullScore = fullScore + scoreUnadded[10] * 2; + fullScore = fullScore + scoreUnadded[11] * 1.5; + fullScore = fullScore + scoreUnadded[12] * 1; + fullScore = fullScore + scoreUnadded[13] * 1; + fullScore = fullScore + scoreUnadded[14] * 10; + fullScore = fullScore + scoreUnadded[15] * 30; + fullScore = fullScore + scoreUnadded[16] * 50; + fullScore = fullScore + scoreUnadded[17] * 100; + fullScore = fullScore + scoreUnadded[18] * 150; + fullScore = fullScore + scoreUnadded[19] * 150; + fullScore = fullScore + scoreUnadded[20] * 3; + fullScore = fullScore + scoreUnadded[21] * 3; + fullScore = fullScore + scoreUnadded[22] * 5; + fullScore = fullScore + scoreUnadded[23] * 4; + fullScore = fullScore + $SM.get('stores["alien alloy"]') * 10; + fullScore = fullScore + Ship.getMaxHull() * 50; + return fullScore; + }, + + saveScore: function() { + var score = Score.calculateScore(); + $SM.set('playStats.score',score); + return score; + }, + + totalScore: function() { + var totScore = $SM.get('previous.score') + Score.saveScore(); //$SM.get('playStats.score'); + if (!totScore) {totScore = $SM.get('playStats.score')}; + return totScore; + } +} \ No newline at end of file diff --git a/script/space.js b/script/space.js index 628a2b9..0e03f85 100644 --- a/script/space.js +++ b/script/space.js @@ -42,6 +42,9 @@ var Space = { $('
').addClass('row_key').text('hull: ').appendTo(h); $('
').addClass('row_val').appendTo(h); + //save current score + Score.saveScore(); + //subscribe to stateUpdates $.Dispatch('stateUpdate').subscribe(Space.handleStateUpdates); }, @@ -251,7 +254,7 @@ var Space = { }, 1000); Space._panelTimeout = setTimeout(function() { - $('#spacePanel, .deleteSave, .share').animate({color: 'white'}, 500, 'linear'); + $('#spacePanel, .deleteSave, .share, .manualSave').animate({color: 'white'}, 500, 'linear'); }, Space.FTB_SPEED / 2); Space.createAsteroid(); @@ -331,7 +334,7 @@ var Space = { $('#starsContainer').remove(); } }); - $('#spacePanel, .deleteSave, .share').animate({color: 'black'}, 300, 'linear'); + $('#spacePanel, .deleteSave, .share, .manualSave').animate({color: 'black'}, 300, 'linear'); $('#outerSlider').animate({top: '0px'}, 300, 'linear'); Engine.activeModule = Ship; Ship.onArrival(); @@ -387,17 +390,44 @@ var Space = { }, complete: function() { Engine.GAME_OVER = true; - var backup; - $('#starsContainer').remove(); + var backup = new Object(); + backup.score = null; + backup.stores = null; + $('.deleteSave, .share, .manualSave').remove(); + Prestige.populateNewSave(backup); + $('#content, #notifications').remove(); + $('.deleteSave, .share, .manualSave').attr('style', 'color: white;').animate({opacity:0},1500); + + $('
') + .addClass('centerCont') + .appendTo('body'); + $('') + .addClass('endGame') + .text('score for this game: ' + Score.calculateScore()) + .appendTo('.centerCont') + .animate({opacity:1},1500); + $('
') + .appendTo('.centerCont'); + $('') + .addClass('endGame') + .text('total score: ' + Score.totalScore()) + .appendTo('.centerCont') + .animate({opacity:1},1500); + $('
') + .appendTo('.centerCont'); + $('') + .addClass('deleteSave endGame') + .text('restart.') + .click(Engine.confirmDelete) + .appendTo('.centerCont') + .animate({opacity:1},1500); + $('#starsContainer').remove(); if(typeof Storage != 'undefined' && localStorage) { - backup = Prestige.save(); + backup.stores = Prestige.saveStores(true); + backup.score = Prestige.saveScore(); localStorage.clear(); } delete window.State; - $('.deleteSave, .share').remove(); - Prestige.populateNewSave(backup); - $('#content, #notifications').remove(); - $('.deleteSave, .share').attr('style', 'color: white;'); Engine.options = {}; } }); diff --git a/script/state_manager.js b/script/state_manager.js index 3b0e9ea..3dd9484 100644 --- a/script/state_manager.js +++ b/script/state_manager.js @@ -34,7 +34,8 @@ var StateManager = { 'income', 'timers', 'game', //mostly location related: fire temp, workers, population, world map, etc - 'playStats' //anything play related: play time, loads, etc + 'playStats', //anything play related: play time, loads, etc + 'previous' // prestige, score, trophies (in future), achievements (again, not yet), etc ]; for(var which in cats) {