Update sky.js
- Makes it use the whole canvas - Adjusted some code - Remove risk of mod crashing
This commit is contained in:
parent
382289f293
commit
6b61146f4a
30
mods/sky.js
30
mods/sky.js
|
|
@ -2,7 +2,7 @@ if (!enabledMods.includes("mods/betterSettings.js")) { enabledMods.unshift("mods
|
||||||
|
|
||||||
var sky_settingsTab = new SettingsTab("Sky");
|
var sky_settingsTab = new SettingsTab("Sky");
|
||||||
|
|
||||||
var realtime_setting = new Setting("Use real life time for sky", "real_time", settingType.BOOLEAN, false, defaultValue=true);
|
var realtime_setting = new Setting("Use real life time for sky", "real_time", settingType.BOOLEAN, false, defaultValue=false);
|
||||||
var initial_hour_setting = new Setting("Initial hour", "initial_hour", settingType.NUMBER, false, defaultValue=8);
|
var initial_hour_setting = new Setting("Initial hour", "initial_hour", settingType.NUMBER, false, defaultValue=8);
|
||||||
var ticks_per_hour_setting = new Setting("Ticks per hour", "ticks_per_hour", settingType.NUMBER, false, defaultValue=150);
|
var ticks_per_hour_setting = new Setting("Ticks per hour", "ticks_per_hour", settingType.NUMBER, false, defaultValue=150);
|
||||||
|
|
||||||
|
|
@ -12,10 +12,12 @@ sky_settingsTab.registerSettings("Ticks per hour", ticks_per_hour_setting);
|
||||||
|
|
||||||
settingsManager.registerTab(sky_settingsTab);
|
settingsManager.registerTab(sky_settingsTab);
|
||||||
|
|
||||||
var hour = initial_hour_setting.value;
|
//function lerpColor(start, end, t) {
|
||||||
|
// return start.map((s, i) => Math.round(s + (end[i] - s) * t));
|
||||||
function lerpColor(start, end, t) {
|
//}
|
||||||
return start.map((s, i) => Math.round(s + (end[i] - s) * t));
|
// Destructuring makes it faster
|
||||||
|
function lerpColor([r1, g1, b1], [r2, g2, b2], t) {
|
||||||
|
return [r1 + (r2 - r1) * t, g1 + (g2 - g1) * t, b1 + (b2 - b1) * t].map(Math.round);
|
||||||
}
|
}
|
||||||
|
|
||||||
function getSkyColors(hour) {
|
function getSkyColors(hour) {
|
||||||
|
|
@ -45,17 +47,19 @@ function getSkyColors(hour) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function renderSky(ctx) {
|
function renderSky(ctx) {
|
||||||
|
// Get sky colors and make gradient
|
||||||
const { skyTop, skyBottom } = getSkyColors(hour);
|
const { skyTop, skyBottom } = getSkyColors(hour);
|
||||||
const gradient = ctx.createLinearGradient(0, 0, 0, height * pixelSize);
|
const gradient = ctx.createLinearGradient(0, 0, 0, height * pixelSize);
|
||||||
|
|
||||||
gradient.addColorStop(0, skyTop);
|
gradient.addColorStop(0, skyTop);
|
||||||
gradient.addColorStop(1, skyBottom);
|
gradient.addColorStop(1, skyBottom);
|
||||||
|
|
||||||
ctx.fillStyle = gradient;
|
ctx.fillStyle = gradient;
|
||||||
ctx.fillRect(0, 0, width * pixelSize, height * pixelSize);
|
ctx.fillRect(0, 0, (width + 1) * pixelSize, (height + 1) * pixelSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateDayTime() {
|
function updateDayTime() {
|
||||||
|
if (paused) {return;}
|
||||||
|
|
||||||
if (realtime_setting.value) {
|
if (realtime_setting.value) {
|
||||||
const now = new Date();
|
const now = new Date();
|
||||||
hour = now.getHours() + now.getMinutes() / 60;
|
hour = now.getHours() + now.getMinutes() / 60;
|
||||||
|
|
@ -64,7 +68,7 @@ function updateDayTime() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make sure the sky gets VIP treatment in the render list
|
// Sky should be first layer
|
||||||
function prioritizeRenderSky() {
|
function prioritizeRenderSky() {
|
||||||
const idx = renderPrePixelList.indexOf(renderSky);
|
const idx = renderPrePixelList.indexOf(renderSky);
|
||||||
if (idx !== -1) {
|
if (idx !== -1) {
|
||||||
|
|
@ -74,16 +78,14 @@ function prioritizeRenderSky() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Resetting canvas also resets time
|
// Resetting canvas also resets time
|
||||||
function initializeCanvas() {
|
function initializeSky() {
|
||||||
const resizeCanvas = autoResizeCanvas;
|
|
||||||
autoResizeCanvas = (clear) => {
|
|
||||||
resizeCanvas(clear);
|
|
||||||
hour = initial_hour_setting.value;
|
hour = initial_hour_setting.value;
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Hooks
|
// Hooks
|
||||||
setTimeout(initializeCanvas, 500);
|
runAfterReset(initializeSky);
|
||||||
runAfterLoad(prioritizeRenderSky);
|
runAfterLoad(prioritizeRenderSky);
|
||||||
runEveryTick(updateDayTime);
|
runEveryTick(updateDayTime);
|
||||||
renderPrePixel(renderSky);
|
renderPrePixel(renderSky);
|
||||||
|
|
||||||
|
var hour = initial_hour_setting.value;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue