92 lines
3.4 KiB
JavaScript
92 lines
3.4 KiB
JavaScript
import { BC_WORLD, PRNG } from "../GlobalVariables/GlobalVariables";
|
|
import { UIGameTimePipe } from "../UIPipes/UIPipes";
|
|
import { RGBColor, RGBCue } from "../Utils/DataTypes.utils";
|
|
|
|
let timeElapsed = PRNG() * 37992648739;
|
|
|
|
// ex: scaling = 10; 1 game minute = 6 real seconds;
|
|
let timeScaling = 300.0;
|
|
|
|
const gameSecondsInGameMinute = 60;
|
|
const gameMinutesInGameHour = 60;
|
|
const gameHoursInGameDay = 24;
|
|
const gameDaysInGameWeek = 7;
|
|
const gameWeeksInGameMonth = 4;
|
|
const gameMonthsInGameYear = 12;
|
|
|
|
let dayColor = new RGBColor(255, 255, 255);
|
|
let currentColor = new RGBColor(0, 0, 0);
|
|
|
|
let dayColorsCue = new RGBCue(
|
|
[
|
|
new RGBColor(1, 22, 46),
|
|
new RGBColor(1, 66, 109),
|
|
new RGBColor(255, 255, 255),
|
|
new RGBColor(255, 255, 192),
|
|
new RGBColor(136, 99, 77),
|
|
new RGBColor(1, 66, 109),
|
|
new RGBColor(1, 22, 46),
|
|
],
|
|
[0.0, 0.15, 0.4, 0.75, 0.8, 0.9, 1.0],
|
|
"cos"
|
|
);
|
|
|
|
export function handleDayNightCycle(tick) {
|
|
timeElapsed += (tick.deltaMS / 1000) * timeScaling;
|
|
UIGameTimePipe.update((s) => {
|
|
s.gameTime = getPrettyGameTimeNow();
|
|
s.gameSecondsPass = Math.floor(timeElapsed);
|
|
});
|
|
|
|
currentColor = dayColorsCue.getColorAt(getDayPhase());
|
|
// currentColor = dayColor.multiplyByNumber(t);
|
|
// console.log(((Math.floor(timeElapsed) % (gameSecondsInGameMinute * gameMinutesInGameHour * gameHoursInGameDay)) / (gameSecondsInGameMinute * gameMinutesInGameHour * gameHoursInGameDay)));
|
|
// console.log(currentColor.toHex());
|
|
// console.log(((Math.floor(timeElapsed) % (gameSecondsInGameMinute * gameMinutesInGameHour * gameHoursInGameDay)) / (gameSecondsInGameMinute * gameMinutesInGameHour * gameHoursInGameDay)));
|
|
// currentColor.multiplyByNumber(((Math.floor(timeElapsed) % (gameSecondsInGameMinute * gameMinutesInGameHour * gameHoursInGameDay)) / (gameSecondsInGameMinute * gameMinutesInGameHour * gameHoursInGameDay)));
|
|
BC_WORLD.tint = currentColor.toNumber();
|
|
}
|
|
|
|
export function getDayPhase() {
|
|
return (
|
|
(Math.floor(timeElapsed) % (gameSecondsInGameMinute * gameMinutesInGameHour * gameHoursInGameDay)) /
|
|
(gameSecondsInGameMinute * gameMinutesInGameHour * gameHoursInGameDay)
|
|
);
|
|
}
|
|
|
|
export function getPrettyGameTimePassed() {
|
|
let secondsPass = Math.floor(timeElapsed);
|
|
let minutesPass = Math.floor(secondsPass / gameSecondsInGameMinute);
|
|
let hoursPass = Math.floor(minutesPass / gameMinutesInGameHour);
|
|
let daysPass = Math.floor(hoursPass / gameHoursInGameDay);
|
|
let weeksPass = Math.floor(daysPass / gameDaysInGameWeek);
|
|
let monthsPass = Math.floor(weeksPass / gameWeeksInGameMonth);
|
|
let yearsPass = Math.floor(monthsPass / gameMonthsInGameYear);
|
|
return {
|
|
seconds: secondsPass,
|
|
minutes: minutesPass,
|
|
hours: hoursPass,
|
|
days: daysPass,
|
|
weeks: weeksPass,
|
|
months: monthsPass,
|
|
years: yearsPass,
|
|
};
|
|
}
|
|
|
|
export function getPrettyGameTimeNow() {
|
|
let passed = getPrettyGameTimePassed();
|
|
return {
|
|
seconds: passed.seconds % gameSecondsInGameMinute,
|
|
minutes: passed.minutes % gameMinutesInGameHour,
|
|
hours: passed.hours % gameHoursInGameDay,
|
|
days: passed.days % gameDaysInGameWeek,
|
|
weeks: passed.weeks % gameWeeksInGameMonth,
|
|
months: passed.months % gameMonthsInGameYear,
|
|
years: passed.years,
|
|
};
|
|
}
|
|
|
|
export function getGameTimeElapsed() {
|
|
return timeElapsed;
|
|
}
|