128 lines
5.2 KiB
JavaScript
128 lines
5.2 KiB
JavaScript
"use strict";
|
|
|
|
const canvas = document.getElementById("gameCanvas");
|
|
const ctx = canvas.getContext("2d");
|
|
const ui = {
|
|
pauseBtn: document.getElementById("pauseBtn"),
|
|
speedBtn: document.getElementById("speedBtn"),
|
|
ecologyBtn: document.getElementById("ecologyBtn"),
|
|
soundBtn: document.getElementById("soundBtn"),
|
|
soundMenu: document.getElementById("soundMenu"),
|
|
soundPanel: document.getElementById("soundPanel"),
|
|
soundMasterToggle: document.getElementById("soundMasterToggle"),
|
|
creditsBtn: document.getElementById("creditsBtn"),
|
|
saveBtn: document.getElementById("saveBtn"),
|
|
visualSettingsBtn: document.getElementById("visualSettingsBtn"),
|
|
resetBtn: document.getElementById("resetBtn"),
|
|
visualSettingsDialog: document.getElementById("visualSettingsDialog"),
|
|
visualSettingsCloseBtn: document.getElementById("visualSettingsCloseBtn"),
|
|
creditsDialog: document.getElementById("creditsDialog"),
|
|
creditsCloseBtn: document.getElementById("creditsCloseBtn"),
|
|
panel: document.querySelector(".panel"),
|
|
panelQuickTabs: document.getElementById("panelQuickTabs"),
|
|
toolPalette: document.getElementById("toolPalette"),
|
|
toolCard: document.getElementById("toolCard"),
|
|
selectedCard: document.getElementById("selectedCard"),
|
|
selectedCloseBtn: document.getElementById("selectedCloseBtn"),
|
|
colonyChartTabs: document.getElementById("colonyChartTabs"),
|
|
selectedInfo: document.getElementById("selectedInfo"),
|
|
log: document.getElementById("log"),
|
|
logPushControls: document.getElementById("logPushControls"),
|
|
logPushEnabled: document.getElementById("logPushEnabled"),
|
|
logPushOverlay: document.getElementById("logPushOverlay"),
|
|
mobileModeControls: document.getElementById("mobileModeControls"),
|
|
mobileRotateControls: document.getElementById("mobileRotateControls"),
|
|
backToGameBtn: document.getElementById("backToGameBtn"),
|
|
soundCategoryControls: document.getElementById("soundPanel"),
|
|
toast: document.getElementById("toast"),
|
|
statPop: document.getElementById("statPop"),
|
|
statSick: document.getElementById("statSick"),
|
|
statJuvenile: document.getElementById("statJuvenile"),
|
|
statElder: document.getElementById("statElder"),
|
|
statDead: document.getElementById("statDead"),
|
|
statColonyMood: document.getElementById("statColonyMood"),
|
|
temperatureValue: document.getElementById("temperatureValue"),
|
|
temperatureSlider: document.getElementById("temperatureSlider"),
|
|
temperatureAutoToggle: document.getElementById("temperatureAutoToggle"),
|
|
tarinaiPopulationLimitSlider: document.getElementById("tarinaiPopulationLimitSlider"),
|
|
tarinaiPopulationLimitInput: document.getElementById("tarinaiPopulationLimitInput"),
|
|
objectLimitSlider: document.getElementById("objectLimitSlider"),
|
|
objectLimitInput: document.getElementById("objectLimitInput"),
|
|
colonyLimitStatus: document.getElementById("colonyLimitStatus"),
|
|
statGroundType: document.getElementById("statGroundType"),
|
|
groundTypeBtn: document.getElementById("groundTypeBtn"),
|
|
colonyChart: document.getElementById("colonyChart"),
|
|
colonyChartLegend: document.getElementById("colonyChartLegend"),
|
|
archiveContent: document.getElementById("archiveContent"),
|
|
archiveUpdateToggleBtn: document.getElementById("archiveUpdateToggleBtn"),
|
|
archiveResetBtn: document.getElementById("archiveResetBtn"),
|
|
archiveResetDialog: document.getElementById("archiveResetDialog"),
|
|
archiveResetCancelBtn: document.getElementById("archiveResetCancelBtn"),
|
|
archiveResetConfirmBtn: document.getElementById("archiveResetConfirmBtn"),
|
|
fieldDialog: document.getElementById("fieldDialog"),
|
|
fieldCancelBtn: document.getElementById("fieldCancelBtn"),
|
|
fieldConfirmBtn: document.getElementById("fieldConfirmBtn"),
|
|
ecologyDialog: document.getElementById("ecologyDialog"),
|
|
ecologyGrid: document.getElementById("ecologyGrid"),
|
|
ecologyCloseBtn: document.getElementById("ecologyCloseBtn"),
|
|
};
|
|
|
|
const uiCache = {
|
|
stats: {},
|
|
selectedSnapshot: "",
|
|
selectedEmpty: false,
|
|
showSelectedEmpty: false,
|
|
selectedCollapsedCategories: new Set(),
|
|
logPushEnabled: false,
|
|
logPushKinds: new Set(["death", "accident", "birth"]),
|
|
archiveUpdateEnabled: false,
|
|
resetFieldType: "garden",
|
|
resetPreset: "default",
|
|
toolButtons: [],
|
|
archiveVersion: "",
|
|
archiveFamilyVersion: null,
|
|
archiveHtmlCache: new Map(),
|
|
archiveRenderTimer: 0,
|
|
archiveRenderForce: false,
|
|
archiveRenderRunning: false,
|
|
archiveScheduled: false,
|
|
archivePendingOffscreen: false,
|
|
archivePendingDirtyAfterRun: false,
|
|
archiveLastHiddenCheckAt: -Infinity,
|
|
archiveLastRenderedAt: 0,
|
|
deferArchiveUntil: 0,
|
|
chartHistory: [],
|
|
chartBucketStart: -Infinity,
|
|
chartBucketEnd: -Infinity,
|
|
chartBucketAccum: null,
|
|
chartBirthEventSeen: null,
|
|
chartDeathEventSeen: null,
|
|
lastChartDraw: "",
|
|
chartMode: "population",
|
|
chartHiddenSeries: new Set(),
|
|
canvasDpr: 0,
|
|
panning: false,
|
|
panLastX: 0,
|
|
panLastY: 0,
|
|
panMoved: false,
|
|
grabbing: false,
|
|
grabTarget: null,
|
|
grabKind: "",
|
|
grabMoved: false,
|
|
grabStartX: 0,
|
|
grabStartY: 0,
|
|
grabLastWorldX: 0,
|
|
grabLastWorldY: 0,
|
|
grabLastSpatialAt: 0,
|
|
mobileInputMode: window.TarinaiInputMode.currentMode || "auto",
|
|
touchMode: "",
|
|
touchMoved: false,
|
|
touchStartX: 0,
|
|
touchStartY: 0,
|
|
touchLastX: 0,
|
|
touchLastY: 0,
|
|
pinchStartDistance: 0,
|
|
pinchStartZoom: 1,
|
|
pinchLastCenterX: 0,
|
|
pinchLastCenterY: 0,
|
|
};
|