File size: 5,612 Bytes
7b453e7 7e312e3 7ffaa9e 7b453e7 7e312e3 7b453e7 7ffaa9e 7b453e7 7e312e3 7b453e7 7e312e3 7b453e7 7e312e3 7b453e7 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 |
const stateStruct = {
canvas: {
width: undefined,
height: undefined,
ctx: null
},
square: {
x: 0,
y: 0,
angle: 0,
angularSpeed: 0,
angularAcceleration: 0,
radius: 100, // Orbit radius
orbitAngle: 0, // Current orbit angle
velocity: { x: 0, y: 0, z: 0 } // Updated to Vector3-like structure
},
performance: {
fps: 0
},
system: {
inputHandler: null,
scene: null,
terminal: null,
engineStarted: false,
currentConfig: null,
animationFrameId: null,
physics: null
},
terminal: {
height: 0,
isOpen: false,
commandHistory: [],
inputBuffer: '',
cursorVisible: true,
cursorTimer: 0,
scrollOffset: 0,
maxScrollOffset: 0,
isDraggingScrollbar: false,
lastMouseY: 0
}
};
const initialState = {
canvas: { width: undefined, height: undefined, ctx: null },
square: {
x: 0,
y: 0,
angle: 0,
angularSpeed: 0,
angularAcceleration: 0,
radius: 100,
orbitAngle: 0,
velocity: { x: 0, y: 0, z: 0 }
},
terminal: {
height: 0,
isOpen: false,
commandHistory: [],
inputBuffer: '',
cursorVisible: true,
cursorTimer: 0,
scrollOffset: 0,
maxScrollOffset: 0,
isDraggingScrollbar: false,
lastMouseY: 0
},
performance: { fps: 0 },
system: {
inputHandler: null,
scene: null,
terminal: null,
engineStarted: false,
currentConfig: null,
animationFrameId: null,
physics: null
}
};
export function resetState() {
Object.keys(initialState).forEach(key => {
Object.assign(stateStruct[key], initialState[key]);
});
}
export const state = {
get canvasWidth() { return stateStruct.canvas.width; },
set canvasWidth(value) { stateStruct.canvas.width = value; },
get canvasHeight() { return stateStruct.canvas.height; },
set canvasHeight(value) { stateStruct.canvas.height = value; },
get squareX() { return stateStruct.square.x; },
set squareX(value) { stateStruct.square.x = value; },
get squareY() { return stateStruct.square.y; },
set squareY(value) { stateStruct.square.y = value; },
get angle() { return stateStruct.square.angle; },
set angle(value) { stateStruct.square.angle = value; },
get angularSpeed() { return stateStruct.square.angularSpeed; },
set angularSpeed(value) { stateStruct.square.angularSpeed = value; },
get angularAcceleration() { return stateStruct.square.angularAcceleration; },
set angularAcceleration(value) { stateStruct.square.angularAcceleration = value; },
get velocity() { return stateStruct.square.velocity; },
set velocity(value) { stateStruct.square.velocity = value; },
get fps() { return stateStruct.performance.fps; },
set fps(value) { stateStruct.performance.fps = value; },
get ctx() { return stateStruct.canvas.ctx; },
set ctx(value) { stateStruct.canvas.ctx = value; },
get inputHandler() { return stateStruct.system.inputHandler; },
set inputHandler(value) { stateStruct.system.inputHandler = value; },
get scene() { return stateStruct.system.scene; },
set scene(value) { stateStruct.system.scene = value; },
get terminal() { return stateStruct.system.terminal; },
set terminal(value) { stateStruct.system.terminal = value; },
get terminalHeight() { return stateStruct.terminal.height; },
set terminalHeight(value) { stateStruct.terminal.height = value; },
get terminalOpen() { return stateStruct.terminal.isOpen; },
set terminalOpen(value) { stateStruct.terminal.isOpen = value; },
get commandHistory() { return stateStruct.terminal.commandHistory; },
set commandHistory(value) { stateStruct.terminal.commandHistory = value; },
get inputBuffer() { return stateStruct.terminal.inputBuffer; },
set inputBuffer(value) { stateStruct.terminal.inputBuffer = value; },
get cursorVisible() { return stateStruct.terminal.cursorVisible; },
set cursorVisible(value) { stateStruct.terminal.cursorVisible = value; },
get cursorTimer() { return stateStruct.terminal.cursorTimer; },
set cursorTimer(value) { stateStruct.terminal.cursorTimer = value; },
get scrollOffset() { return stateStruct.terminal.scrollOffset; },
set scrollOffset(value) { stateStruct.terminal.scrollOffset = value; },
get maxScrollOffset() { return stateStruct.terminal.maxScrollOffset; },
set maxScrollOffset(value) { stateStruct.terminal.maxScrollOffset = value; },
get isDraggingScrollbar() { return stateStruct.terminal.isDraggingScrollbar; },
set isDraggingScrollbar(value) { stateStruct.terminal.isDraggingScrollbar = value; },
get lastMouseY() { return stateStruct.terminal.lastMouseY; },
set lastMouseY(value) { stateStruct.terminal.lastMouseY = value; },
get engineStarted() { return stateStruct.system.engineStarted; },
set engineStarted(value) { stateStruct.system.engineStarted = value; },
get currentConfig() { return stateStruct.system.currentConfig; },
set currentConfig(value) { stateStruct.system.currentConfig = value; },
get animationFrameId() { return stateStruct.system.animationFrameId; },
set animationFrameId(value) { stateStruct.system.animationFrameId = value; },
get physics() { return stateStruct.system.physics; },
set physics(value) { stateStruct.system.physics = value; }
};
|