Implement day/night background colors

This commit is contained in:
James Lyne 2020-12-10 02:22:29 +00:00
parent 404121188b
commit 04ca1108be
3 changed files with 27 additions and 27 deletions

View File

@ -56,13 +56,7 @@ export default defineComponent({
currentMap = computed(() => store.state.currentMap), currentMap = computed(() => store.state.currentMap),
currentProjection = computed(() => store.state.currentProjection), currentProjection = computed(() => store.state.currentProjection),
following = computed(() => store.state.following), following = computed(() => store.state.following),
mapBackground = computed(() => store.getters.mapBackground);
mapBackground = computed((): string => {
//TODO: day/night
const currentMap = useStore().state.currentMap;
return currentMap && currentMap.background ? currentMap.background : 'transparent';
});
return { return {
leaflet, leaflet,
@ -121,7 +115,7 @@ export default defineComponent({
attributionControl: false, attributionControl: false,
crs: L.CRS.Simple, crs: L.CRS.Simple,
worldCopyJump: false, worldCopyJump: false,
markerZoomAnimation: false, // markerZoomAnimation: false,
})); }));
this.leaflet.addControl(new L.Control.Layers({}, {},{ this.leaflet.addControl(new L.Control.Layers({}, {},{

View File

@ -1,5 +1,5 @@
import L, {ControlOptions} from 'leaflet'; import L, {ControlOptions} from 'leaflet';
import {useStore} from "@/store"; import Util from '@/util';
import {DynmapWorldState} from "@/dynmap"; import {DynmapWorldState} from "@/dynmap";
export interface ClockControlOptions extends ControlOptions { export interface ClockControlOptions extends ControlOptions {
@ -73,7 +73,7 @@ export class ClockControl extends L.Control {
this._moon!.style.backgroundPosition = '-150px -150px'; this._moon!.style.backgroundPosition = '-150px -150px';
} }
const minecraftTime = this.getMinecraftTime(timeOfDay); const minecraftTime = Util.getMinecraftTime(timeOfDay);
if(timeOfDay >= 0) { if(timeOfDay >= 0) {
this._clock!.classList.remove(minecraftTime.night ? 'day' : 'night'); this._clock!.classList.remove(minecraftTime.night ? 'day' : 'night');
@ -103,21 +103,4 @@ export class ClockControl extends L.Control {
this._weather?.classList.add(`${className}_${dayNight}`); this._weather?.classList.add(`${className}_${dayNight}`);
} }
} }
getMinecraftTime(serverTime: number) {
const day = serverTime >= 0 && serverTime < 13700;
return {
serverTime: serverTime,
days: Math.floor((serverTime + 8000) / 24000),
// Assuming it is day at 6:00
hours: (Math.floor(serverTime / 1000) + 6) % 24,
minutes: Math.floor(((serverTime / 1000) % 1) * 60),
seconds: Math.floor(((((serverTime / 1000) % 1) * 60) % 1) * 60),
day: day,
night: !day
};
}
} }

View File

@ -1,10 +1,13 @@
import {GetterTree} from "vuex"; import {GetterTree} from "vuex";
import {State} from "@/store/state"; import {State} from "@/store/state";
import Util from "@/util";
export type Getters = { export type Getters = {
playerMarkersEnabled(state: State): boolean; playerMarkersEnabled(state: State): boolean;
coordinatesControlEnabled(state: State): boolean; coordinatesControlEnabled(state: State): boolean;
clockControlEnabled(state: State): boolean; clockControlEnabled(state: State): boolean;
night(state: State): boolean;
mapBackground(state: State): string;
} }
export const getters: GetterTree<State, State> & Getters = { export const getters: GetterTree<State, State> & Getters = {
@ -18,5 +21,25 @@ export const getters: GetterTree<State, State> & Getters = {
clockControlEnabled(state: State): boolean { clockControlEnabled(state: State): boolean {
return state.components.clockControl !== undefined; return state.components.clockControl !== undefined;
},
night(state: State): boolean {
return Util.getMinecraftTime(state.currentWorldState.timeOfDay).night;
},
mapBackground(state: State): string {
if(!state.currentMap) {
return 'transparent';
}
if(state.currentMap.nightAndDay) {
if(this.night(state)) {
return state.currentMap.backgroundNight || state.currentMap.background || 'transparent';
}
return state.currentMap.backgroundDay || state.currentMap.background || 'transparent';
}
return state.currentMap.background || 'transparent';
} }
} }