/// import { DepthRenderer, Effect, PostProcess, RenderTargetTexture, Scene, SolidParticleSystem, Texture } from "@babylonjs/core"; import { Point3D } from "chootils/dist/points3d"; import { MyTypes } from "../../declarations"; import { InRangeForDoll } from "../../helpers/prendyUtils/dolls"; export type PrendySaveState = { global: { nowCamName: string; nowPlaceName: string; nowSegmentName: string; heldPickups: string[]; storyOverlayToggled: boolean; alarmTextIsVisible: boolean; alarmText: string; aSpeechBubbleIsShowing: boolean; aConvoIsHappening: boolean; }; dolls: Record; inRange: Record; nowAnimation: string; }>; places: Record; }>; characters: Record; player: { animationNames: { walking: string; idle: string; }; }; miniBubbles: Record; speechBubbles: Record; storyState: Record; }; export declare const timeStatePath: readonly ["global", "main", "elapsedGameTime"]; export default function global(prendyAssets: T_MyTypes["Assets"]): { startStates: { main: { slatePosMoveConfigName: string; isOnVerticalScreen: boolean; zoomMultiplier: number; timeScreenResized: number; interactButtonPressTime: number; heldPickups: string[]; storyOverlayToggled: boolean; alarmTextIsVisible: boolean; alarmText: string; aSpeechBubbleIsShowing: boolean; aConvoIsHappening: boolean; backdropTime: number; backdropFrame: number; frameTick: number; timeMode: "pause" | "game" | "miniGame"; elapsedGameTime: number; elapsedPauseTime: number; elapsedMiniGameTime: number; isGamePaused: boolean; gameTimeSpeed: number; gameIsInBackground: boolean; debugMessage: string; latestSave: PrendySaveState | null; latestLoadTime: number; slateZoom: number; slateZoomGoal: number; slateZoomIsMoving: boolean; slateZoomMoveMode: import("repond-movers/src/types").MoveMode; slateZoomMoveConfigName: string; slateZoomMoveConfigs: Record; slatePos: import("chootils/dist/points2d").Point2D; slatePosGoal: import("chootils/dist/points2d").Point2D; slatePosIsMoving: boolean; slatePosMoveMode: import("repond-movers/src/types").MoveMode; slatePosMoveConfigs: Record; nowPlaceName: string; goalPlaceName: string | null; readyToSwapPlace: boolean; isLoadingBetweenPlaces: boolean; loadingOverlayToggled: boolean; loadingOverlayFullyShowing: boolean; goalCamWhenNextPlaceLoads: string | null; goalCamNameAtLoop: string | null; goalCamName: string | null; nowCamName: string; nowSegmentName: string; goalSegmentName: string | null; goalSegmentNameAtLoop: string | null; goalSegmentWhenGoalPlaceLoads: string | null; modelNamesLoaded: string[]; newPlaceModelLoaded: boolean; newPlaceVideosLoaded: boolean; newPlaceProbesLoaded: boolean; playerCharacter: string; gravityValue: number; playerMovingPaused: boolean; focusedDoll: any; focusedDollIsInView: boolean; }; }; getDefaultState: () => { slatePosMoveConfigName: string; isOnVerticalScreen: boolean; zoomMultiplier: number; timeScreenResized: number; interactButtonPressTime: number; heldPickups: string[]; storyOverlayToggled: boolean; alarmTextIsVisible: boolean; alarmText: string; aSpeechBubbleIsShowing: boolean; aConvoIsHappening: boolean; backdropTime: number; backdropFrame: number; frameTick: number; timeMode: "pause" | "game" | "miniGame"; elapsedGameTime: number; elapsedPauseTime: number; elapsedMiniGameTime: number; isGamePaused: boolean; gameTimeSpeed: number; gameIsInBackground: boolean; debugMessage: string; latestSave: PrendySaveState | null; latestLoadTime: number; slateZoom: number; slateZoomGoal: number; slateZoomIsMoving: boolean; slateZoomMoveMode: import("repond-movers/src/types").MoveMode; slateZoomMoveConfigName: string; slateZoomMoveConfigs: Record; slatePos: import("chootils/dist/points2d").Point2D; slatePosGoal: import("chootils/dist/points2d").Point2D; slatePosIsMoving: boolean; slatePosMoveMode: import("repond-movers/src/types").MoveMode; slatePosMoveConfigs: Record; nowPlaceName: string; goalPlaceName: string | null; readyToSwapPlace: boolean; isLoadingBetweenPlaces: boolean; loadingOverlayToggled: boolean; loadingOverlayFullyShowing: boolean; goalCamWhenNextPlaceLoads: string | null; goalCamNameAtLoop: string | null; goalCamName: string | null; nowCamName: string; nowSegmentName: string; goalSegmentName: string | null; goalSegmentNameAtLoop: string | null; goalSegmentWhenGoalPlaceLoads: string | null; modelNamesLoaded: string[]; newPlaceModelLoaded: boolean; newPlaceVideosLoaded: boolean; newPlaceProbesLoaded: boolean; playerCharacter: string; gravityValue: number; playerMovingPaused: boolean; focusedDoll: any; focusedDollIsInView: boolean; }; getDefaultRefs: () => { sounds: { [x: string]: import("@babylonjs/core").Sound | null; }; music: { [x: string]: import("@babylonjs/core").Sound | null; }; musicEffects: { lowPass: BiquadFilterNode | null; compress: DynamicsCompressorNode | null; extraGain: GainNode | null; }; solidParticleSystems: Record; timerSpeed: number; aConvoIsHappening_timeout: NodeJS.Timeout | null; camSegmentRulesOptions: Partial<{ [x: string]: Partial<{ [x: string]: (usefulStuff: Record) => keyof string[]; }>; }> | null; onPickupButtonClick: ((pickupName: any) => void) | null; slateZoomMoverRefs: { velocity: number; recentSpeeds: number[]; stateNames: { value: "slateZoom"; valueGoal: "slateZoomGoal"; isMoving: "slateZoomIsMoving"; moveMode: "slateZoomMoveMode"; physicsConfigName: "slateZoomMoveConfigName" | undefined; physicsConfigs: "slateZoomMoveConfigs" | undefined; }; physicsConfigs: import("repond-movers/src/types").DefinedPhysicsConfig | undefined; }; slatePosMoverRefs: { velocity: import("chootils/dist/points2d").Point2D; recentSpeeds: number[]; averageSpeed: number; canRunOnSlow: boolean; stateNames: { value: "slatePos"; valueGoal: "slatePosGoal"; isMoving: "slatePosIsMoving"; moveMode: "slatePosMoveMode"; physicsConfigName: "slatePosMoveConfigName" | undefined; physicsConfigs: "slatePosMoveConfigs" | undefined; }; physicsConfigs: import("repond-movers/src/types").DefinedPhysicsConfig | undefined; }; scene: Scene | null; backdropTex: Texture | null; backdropTexDepth: Texture | null; depthRenderer: DepthRenderer | null; depthRenderTarget: RenderTargetTexture | null; backdropPostProcess: PostProcess | null; backdropPostProcessEffect: Effect | null; fxaaPostProcess: PostProcess | null; stretchVideoSize: { x: number; y: number; }; stretchVideoGoalSize: { x: number; y: number; }; stretchSceneSize: { x: number; y: number; }; }; };