From 62ede14baa17859598c03b525598b26036b28ddf Mon Sep 17 00:00:00 2001 From: austin Date: Fri, 16 May 2025 11:19:53 -0400 Subject: [PATCH] script-side controls work --- assets/Scripts/client/player/player.ts | 42 +++++++++++++++++++ .../Scripts/client/player/playercontrols.ts | 30 +++++++++++++ assets/Scripts/engine/engine-init.ts | 2 + assets/Scripts/types/engine.ts | 6 +++ 4 files changed, 80 insertions(+) create mode 100644 assets/Scripts/client/player/player.ts create mode 100644 assets/Scripts/client/player/playercontrols.ts diff --git a/assets/Scripts/client/player/player.ts b/assets/Scripts/client/player/player.ts new file mode 100644 index 00000000..9c2cfc93 --- /dev/null +++ b/assets/Scripts/client/player/player.ts @@ -0,0 +1,42 @@ + + +/** + * Overall state of the player's controls + */ +export interface PlayerControlState { + /** + * State of the room tool + */ + roomTool: RoomToolState, +} + +/** + * State for the room tool + */ +export interface RoomToolState { + /** + * The currently selected functionality of the room tool + */ + currentState: number, +} + +/** + * Overall state for the client player + */ +export interface ClientPlayer { + /** + * State of controls for the player + */ + controlState: PlayerControlState, +} + +/** + * Actual player control state + */ +export const defaultPlayerState: ClientPlayer = { + controlState: { + roomTool: { + currentState: 0 + } + } +} \ No newline at end of file diff --git a/assets/Scripts/client/player/playercontrols.ts b/assets/Scripts/client/player/playercontrols.ts new file mode 100644 index 00000000..854a7f36 --- /dev/null +++ b/assets/Scripts/client/player/playercontrols.ts @@ -0,0 +1,30 @@ + + +/** + * Overall state of the player's controls + */ +interface PlayerControlState { + /** + * State of the room tool + */ + roomTool: RoomToolState, +} + +/** + * State for the room tool + */ +interface RoomToolState { + /** + * The currently selected functionality of the room tool + */ + currentState: number, +} + +/** + * Actual player control state + */ +export let playerControlState: PlayerControlState = { + roomTool: { + currentState: 0 + } +} \ No newline at end of file diff --git a/assets/Scripts/engine/engine-init.ts b/assets/Scripts/engine/engine-init.ts index a9e8bd9d..0c2b08c2 100644 --- a/assets/Scripts/engine/engine-init.ts +++ b/assets/Scripts/engine/engine-init.ts @@ -5,6 +5,7 @@ import { SceneLoader } from '/Scripts/engine/scene/scene-loader' import { Engine } from '/Scripts/types/engine' import { clientHooks } from '/Scripts/client/clienthooks' import { ChunkGeneratorManager } from '/Scripts/server/chunk/chunkgeneratormanager' +import { defaultPlayerState } from '/Scripts/client/player/player' /** * The core engine values @@ -15,6 +16,7 @@ export const engine: Engine = { hookManager: new HookManager(), sceneLoader: new SceneLoader(), chunkGeneratorManager: new ChunkGeneratorManager(), + playerState: defaultPlayerState, } /** diff --git a/assets/Scripts/types/engine.ts b/assets/Scripts/types/engine.ts index 628e60f1..97caddd8 100644 --- a/assets/Scripts/types/engine.ts +++ b/assets/Scripts/types/engine.ts @@ -1,3 +1,4 @@ +import { ClientPlayer } from "/Scripts/client/player/player"; import { HookManager } from "/Scripts/engine/hooks/hook-manager"; import { SceneLoader } from "/Scripts/engine/scene/scene-loader"; import { ChunkGeneratorManager } from "/Scripts/server/chunk/chunkgeneratormanager"; @@ -35,5 +36,10 @@ export interface Engine { */ readonly chunkGeneratorManager: ChunkGeneratorManager, + /** + * State of the client player + */ + playerState: ClientPlayer, + }