From 51e7420bdb3a38d16874e01c471c33c1f290ba47 Mon Sep 17 00:00:00 2001 From: lishid Date: Sun, 13 Feb 2011 14:41:28 -0500 Subject: [PATCH] Dynamic Time of the day Added --- web/compass.png | Bin 0 -> 6434 bytes web/map.js | 72 +++++++++++++++++++++++++++++++---------------- web/minecraft.js | 37 ------------------------ web/moon.png | Bin 0 -> 3211 bytes web/style.css | 15 ++++------ web/sun.png | Bin 0 -> 5233 bytes 6 files changed, 54 insertions(+), 70 deletions(-) create mode 100644 web/compass.png create mode 100644 web/moon.png create mode 100644 web/sun.png diff --git a/web/compass.png b/web/compass.png new file mode 100644 index 0000000000000000000000000000000000000000..129353a2270b1091fd12687040ca795a5a0e699a GIT binary patch literal 6434 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 Bbou}Q literal 0 HcmV?d00001 diff --git a/web/map.js b/web/map.js index eceee495..ab51debd 100644 --- a/web/map.js +++ b/web/map.js @@ -72,24 +72,57 @@ MinecraftClock.prototype = { function MinecraftTimeOfDay(element) { this.element = element; } MinecraftTimeOfDay.prototype = { element: null, + elementsun: null, + elementmoon: null, create: function(element) { if (!element) element = $('
'); this.element = element; return element; }, + initialize: function(elementsun, elementmoon) { + if (!elementsun) elementsun = $('
'); + this.elementsun = elementsun; + this.elementsun.appendTo(this.element); + if (!elementmoon) elementmoon = $('
'); + this.elementmoon = elementmoon; + this.elementmoon.appendTo(this.elementsun); + this.element.height(60); + this.element.addClass('timeofday'); + this.elementsun.height(60); + this.elementsun.addClass('timeofday'); + this.elementsun.addClass('sun'); + this.elementmoon.height(60); + this.elementmoon.addClass('timeofday'); + this.elementmoon.addClass('moon'); + this.elementmoon.html(" ‏ "); + this.elementsun.css("background-position", (-120) + "px " + (-120) + "px"); + this.elementmoon.css("background-position", (-120) + "px " + (-120) + "px"); + }, setTime: function(time) { - this.element - .removeClass('time1') - .removeClass('time2') - .removeClass('time3') - .removeClass('time4') - .removeClass('time5') - .removeClass('time6') - .removeClass('time7') - .removeClass('time8') - .addClass('time' + time.day) - .html(" ‏ ") - .height(60); + var sunangle; + + if(time > 23100 || time < 12900) + { + //day mode + var movedtime = time + 900; + movedtime = (movedtime >= 24000) ? movedtime - 24000 : movedtime; + //Now we have 0 -> 13800 for the day period + //Devide by 13800*2=27600 instead of 24000 to compress day + sunangle = ((movedtime)/27600 * 2 * Math.PI); + } + else + { + //night mode + var movedtime = time - 12900; + //Now we have 0 -> 10200 for the night period + //Devide by 10200*2=20400 instead of 24000 to expand night + sunangle = Math.PI + ((movedtime)/20400 * 2 * Math.PI); + } + + var moonangle = sunangle + Math.PI; + + this.elementsun.css("background-position", (-50 * Math.cos(sunangle)) + "px " + (-50 * Math.sin(sunangle)) + "px"); + this.elementmoon.css("background-position", (-50 * Math.cos(moonangle)) + "px " + (-50 * Math.sin(moonangle)) + "px"); } }; @@ -117,7 +150,6 @@ function DynMap(options) { } DynMap.prototype = { registeredTiles: new Array(), - clock: null, markers: new Array(), chatPopups: new Array(), lasttimestamp: '0', @@ -248,19 +280,12 @@ DynMap.prototype = { .addClass('playerlist') .appendTo(sidebar); - // The Clock - var clock = me.clock = new MinecraftClock( - $('
') - .addClass('clock') - .appendTo(sidebar) - ); - // The TimeOfDay var timeofday = me.timeofday = new MinecraftTimeOfDay( $('
') - .addClass('timeofday') - .appendTo(sidebar) + .appendTo(sidebar) ); + timeofday.initialize(); // The Compass var compass = me.compass = new MinecraftCompass( @@ -295,8 +320,7 @@ DynMap.prototype = { me.alertbox.hide(); me.lasttimestamp = update.timestamp; - me.clock.setTime(getMinecraftTime(update.servertime)); - me.timeofday.setTime(me.clock.time); + me.timeofday.setTime(update.servertime); var typeVisibleMap = {}; var newmarkers = {}; diff --git a/web/minecraft.js b/web/minecraft.js index 29c45f37..19f58009 100644 --- a/web/minecraft.js +++ b/web/minecraft.js @@ -77,40 +77,3 @@ function getMinecraftHead(player,size,completed) { completed(resizeImage(head,size)); } } - -function getMinecraftTime(servertime) { - servertime = parseInt(servertime); - var hours = (parseInt(servertime / 1000)+8) % 24; - var minutes = parseInt(((servertime / 1000) % 1) * 60); - var seconds = parseInt(((((servertime / 1000) % 1) * 60) % 1) * 60); - - var daytime = 0; - if(hours >= 6 && hours <= 7) - daytime = 1; - if(hours >= 8 && hours <= 9) - daytime = 2; - if(hours >= 10 && hours <= 17) - daytime = 3; - if(hours >= 18 && hours <= 19) - daytime = 4; - if(hours >= 20 && hours <= 21) - daytime = 5; - if(hours >= 22 && hours <= 23) - daytime = 6; - if(hours >= 0 && hours <= 3) - daytime = 7; - if(hours >= 4 && hours <= 5) - daytime = 8; - - return { - servertime: servertime, - days: parseInt((servertime+8000) / 24000), - - // Assuming it is day at 8:00 - hours: hours, - minutes: minutes, - seconds: seconds, - - day: daytime, - }; -} diff --git a/web/moon.png b/web/moon.png new file mode 100644 index 0000000000000000000000000000000000000000..10c82046b9971b020f16686bfaa1f8f4425036e7 GIT binary patch literal 3211 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 literal 0 HcmV?d00001 diff --git a/web/style.css b/web/style.css index d62a9538..388c4c86 100644 --- a/web/style.css +++ b/web/style.css @@ -82,15 +82,12 @@ a, a:visited, label { background-image: url(compass.png); } -.timeofday { background-repeat: no-repeat; } -.timeofday.time1 { background-image: url(time1.png); } -.timeofday.time2 { background-image: url(time2.png); } -.timeofday.time3 { background-image: url(time3.png); } -.timeofday.time4 { background-image: url(time4.png); } -.timeofday.time5 { background-image: url(time5.png); } -.timeofday.time6 { background-image: url(time6.png); } -.timeofday.time7 { background-image: url(time7.png); } -.timeofday.time8 { background-image: url(time8.png); } +.timeofday { + background-repeat: no-repeat; +} + +.timeofday.sun { background-image: url(sun.png); } +.timeofday.moon { background-image: url(moon.png); } .alertbox { padding: 5px; diff --git a/web/sun.png b/web/sun.png new file mode 100644 index 0000000000000000000000000000000000000000..11ce6cb13f85a54f71ed870b2b616d242dea0232 GIT binary patch literal 5233 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 literal 0 HcmV?d00001