Skip to content

Commit

Permalink
changed menus- moved high scores to main - deleted about and made hig…
Browse files Browse the repository at this point in the history
…hscores persistant
  • Loading branch information
yonbergman committed Apr 4, 2012
1 parent fbd9e7e commit b31907f
Show file tree
Hide file tree
Showing 8 changed files with 277 additions and 35 deletions.
32 changes: 8 additions & 24 deletions public/index.html
Expand Up @@ -10,36 +10,17 @@
<div class="container">
<div class="screen start">
<h1>Hoboman</h1>
<ul class="highscores">
<li><span class="name">The Hoboman</span><span class="hscore">1000000</span></li>
<li><span class="name">Little Hobo</span><span class="hscore">40000</span></li>
<li><span class="name">Dog</span><span class="hscore">100</span></li>
</ul>
<ul>
<li><a href="javascript:;" class="to_game">Start Game</a></li>
<li><a href="javascript:;" class="to_highscores">High Scores</a></li>
<li><a href="javascript:;" class="to_about">About</a></li>
</ul>
</div>
<div class="screen pause"></div>
<div class="screen gameover"></div>
<div class="screen highscores">
<h2>High Scores</h2>
<div class="highscores-list">
<div class="scorelist local">
<h3>Local Scores</h3>
<ul>
<li><span class="name">asd</span><span class="hscore">123</span></li>
</ul>
</div>
<div class="scorelist global">
<h3>Global Scores</h3>
<ul>
<li><span class="name">asd</span><span class="hscore">123</span></li>
</ul>
</div>
</div>
</div>
<div class="screen about">
<h2>About Hoboman</h2>
<p> This game rocks, thats it.</p>
<a href="javascript:;" class="to_start">Back</a>
</div>
<div class="screen game">
<canvas width=480 height=320></canvas>
<div class="scores">
Expand All @@ -56,12 +37,14 @@ <h2>About Hoboman</h2>
<script src="/javascripts/libs/underscore.min.js"></script>
<script src="/javascripts/libs/soundmanager2-jsmin.js"></script>
<script src="/javascripts/libs/jquery-1.7.2.min.js"></script>
<script src="/javascripts/libs/store.js"></script>
<script>
soundManager.url = '/resources/swf';
soundManager.debugMode = false;
</script>

<script src="/javascripts/utils.js"></script>
<script src="/javascripts/stop_keyboard_scroll.js"></script>
<script src="/javascripts/structure/world.js"></script>
<script src="/javascripts/structure/pattern.js"></script>
<script src="/javascripts/structure/content.js"></script>
Expand All @@ -76,6 +59,7 @@ <h2>About Hoboman</h2>
<script src="/javascripts/hobo_animation.js"></script>
<script src="/javascripts/hobo.js"></script>
<script src="/javascripts/index.js"></script>
<script src="/javascripts/highscore.js"></script>
<script src="/javascripts/menus.js"></script>
</body>
</html>
42 changes: 42 additions & 0 deletions public/javascripts/highscore.js
@@ -0,0 +1,42 @@
function HighScore(){
this.scores = [];
this.store = new Store("highscore");
this.load();
}

HighScore.prototype.load = function(){
this.scores = this.store.get("topscores");
};

HighScore.prototype.save = function(){
this.store.set("topscores", this.scores);
};

HighScore.prototype.set = function(score){
if (score.score == 0) return;
this.scores.push(score);
this.scores.sort(function(x,y){
return y.score - x.score;
});
this.save()
};

HighScore.prototype.bestScore = function(){
return this.scores[0].score;
};

HighScore.prototype.topScores = function(){
return this.scores.slice(0,5);
};


HighScore.prototype.render = function(){
var parent = $("ul.highscores").empty();
$(this.topScores()).each(function(){
var li = $("<li>");
li.append($("<span>").addClass("name").text(this.name));
li.append($("<span>").addClass("hscore").text(this.score));
parent.append(li);
})
};

2 changes: 1 addition & 1 deletion public/javascripts/hobo.js
Expand Up @@ -160,7 +160,7 @@ Hobo.prototype.bitten = function(dog){
this.addPoints(dog.getValue());
}
else {
// window.hoboman.died(this.points);
window.hoboman.gameOver(this.points);
this.points = 0;
this.x = Hobo.START.x;
this.y = Hobo.START.y;
Expand Down
5 changes: 5 additions & 0 deletions public/javascripts/index.js
Expand Up @@ -33,6 +33,7 @@ function HoboMan(canvas) {

this.scoreEl = document.getElementsByClassName("score")[0].getElementsByClassName("realscore")[0];
this.highScoreEl = document.getElementsByClassName("highscore")[0].getElementsByClassName("realscore")[0];
$(this.highScoreEl).text(window.highscore.bestScore());
this.fpsEl = document.getElementsByClassName("fps")[0];
this.loop();
this.updateFPS();
Expand Down Expand Up @@ -134,4 +135,8 @@ HoboMan.prototype.mute= function() {

HoboMan.prototype.unmute= function() {
soundManager.unmute();
};

HoboMan.prototype.gameOver = function(score){
window.highscore.set({score: score, name: "hoboman"});
};
183 changes: 183 additions & 0 deletions public/javascripts/libs/store.js
@@ -0,0 +1,183 @@
//
// store.js by Frank Kohlhepp
// Copyright (c) 2011 - 2012 Frank Kohlhepp
// https://github.com/frankkohlhepp/store-js
// License: MIT-license
//
(function () {
var has = function (object, key) {
return Object.prototype.hasOwnProperty.call(object, key);
};

var objectGetLength = function (object) {
var count = 0;
for (var key in object) {
if (has(object, key)) { count++; }
}

return count;
};

var arrayIndexOf = function (array, item, from) {
var length = array.length >>> 0;
for (var i = (from < 0) ? Math.max(0, length + from) : from || 0; i < length; i++) {
if (array[i] === item) { return i; }
}

return -1;
};

var arrayContains = function (array, item, from) {
return arrayIndexOf(array, item, from) !== -1;
};

var arrayInclude = function (array, item) {
if (!arrayContains(array, item)) { array.push(item); }
return array;
};

var Store = this.Store = function (name, defaults, watcherSpeed) {
this.name = name;
this.defaults = defaults || {};
this.watcherSpeed = watcherSpeed || 500;
this.listeners = {};

// Apply defaults
this.applyDefaults();
};

Store.clear = function () {
localStorage.clear();
};

Store.prototype.applyDefaults = function () {
for (var key in this.defaults) {
if (has(this.defaults, key) && this.get(key) === undefined) {
this.set(key, this.defaults[key]);
}
}

return this;
};

Store.prototype.watcher = function (force) {
if (this.watcherTimer) {
clearTimeout(this.watcherTimer);
}

if (objectGetLength(this.listeners) || force) {
this.newObject = this.toObject();

if (this.oldObject) {
for (var key in this.newObject) {
if (has(this.newObject, key) && this.newObject[key] !== this.oldObject[key]) {
this.fireEvent(key, this.newObject[key]);
}
}

for (var key in this.oldObject) {
if (has(this.oldObject, key) && !has(this.newObject, key)) {
this.fireEvent(key, this.newObject[key]);
}
}
}

this.oldObject = this.newObject;
var that = this;
this.watcherTimer = setTimeout(function () {
that.watcher();
}, this.watcherSpeed);
}

return this;
};

Store.prototype.get = function (name) {
var value = localStorage.getItem("store." + this.name + "." + name);
if (value === null) { return undefined; }
try { return JSON.parse(value); } catch (e) { return null; }
};

Store.prototype.set = function (name, value) {
if (value === undefined) {
this.remove(name);
} else {
if (typeof value === "function") { value = null; }
try { value = JSON.stringify(value); } catch (e) { value = null; }
localStorage.setItem("store." + this.name + "." + name, value);
}

return this;
};

Store.prototype.remove = function (name) {
localStorage.removeItem("store." + this.name + "." + name);
return this.applyDefaults();
};

Store.prototype.reset = function () {
var name = "store." + this.name + ".";
for (var i = (localStorage.length - 1); i >= 0; i--) {
if (localStorage.key(i).substring(0, name.length) === name) {
localStorage.removeItem(localStorage.key(i));
}
}

return this.applyDefaults();
};

Store.prototype.toObject = function () {
var values = {};
var name = "store." + this.name + ".";
for (var i = (localStorage.length - 1); i >= 0; i--) {
if (localStorage.key(i).substring(0, name.length) === name) {
var key = localStorage.key(i).substring(name.length);
var value = this.get(key);
if (value !== undefined) { values[key] = value; }
}
}

return values;
};

Store.prototype.fromObject = function (values, merge) {
if (!merge) { this.reset(); }
for (var key in values) {
if (has(values, key)) {
this.set(key, values[key]);
}
}

return this;
};

Store.prototype.addEvent = function (selector, callback) {
this.watcher(true);
if (!this.listeners[selector]) { this.listeners[selector] = []; }
arrayInclude(this.listeners[selector], callback);
return this;
};

Store.prototype.removeEvent = function (selector, callback) {
for (var i = (this.listeners[selector].length - 1); i >= 0; i--) {
if (this.listeners[selector][i] === callback) { this.listeners[selector].splice(i, 1); }
}

if (!this.listeners[selector].length) { delete this.listeners[selector]; }
return this;
};

Store.prototype.fireEvent = function (name, value) {
var selectors = [name, "*"];
for (var i = 0; i < selectors.length; i++) {
var selector = selectors[i];
if (this.listeners[selector]) {
for (var j = 0; j < this.listeners[selector].length; j++) {
this.listeners[selector][j](value, name, this.name);
}
}
}

return this;
};
}());
17 changes: 8 additions & 9 deletions public/javascripts/menus.js
Expand Up @@ -3,25 +3,19 @@ function Menus(){
start: $(".screen.start"),
pause: $(".screen.pause"),
game: $(".screen.game"),
highscores: $(".screen.highscores"),
gameover: $(".screen.gameover"),
about: $(".screen.about")
gameover: $(".screen.gameover")
};

this.screens.start.show();
this.start();
var that = this;
$(".to_start").click(function(){
that.goto(that.screens.start);
});

$(".to_game").click(function(){
that.game();
});
$(".to_about").click(function(){
that.goto(that.screens.about);
});
$(".to_highscores").click(function(){
that.goto(that.screens.highscores);
});

$('.mute').click(function(){
$(this).toggleClass("on").toggleClass("off");
Expand All @@ -48,7 +42,12 @@ Menus.prototype.game = function(){
window.hoboman = new HoboMan(document.getElementsByTagName('canvas')[0]);
};

Menus.prototype.start = function(){
window.highscore.render()
};


$(document).ready(function(){
window.highscore = new HighScore();
window.menus = new Menus();
});
10 changes: 10 additions & 0 deletions public/javascripts/stop_keyboard_scroll.js
@@ -0,0 +1,10 @@
var ar=new Array(33,34,35,36,37,38,39,40);

$(document).keydown(function(e) {
var key = e.which;
if($.inArray(key,ar) > -1) {
e.preventDefault();
return false;
}
return true;
});

0 comments on commit b31907f

Please sign in to comment.