prendy
Version:
Make games with prerendered backdrops using babylonjs and repond
256 lines (255 loc) • 9.63 kB
TypeScript
/// <reference types="node" />
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<string, {
position: Point3D;
rotationY: number;
isVisible: boolean;
toggledMeshes: Record<string, boolean>;
inRange: Record<string, InRangeForDoll>;
nowAnimation: string;
}>;
places: Record<string, {
toggledWalls: Record<string, boolean>;
}>;
characters: Record<string, {
hasLeftFirstTrigger: boolean;
}>;
player: {
animationNames: {
walking: string;
idle: string;
};
};
miniBubbles: Record<string, {
isVisible: boolean;
text: string;
}>;
speechBubbles: Record<string, {
isVisible: boolean;
goalText: string;
nowVideoName: string;
font: string;
stylesBySpecialText: {
[key: string]: {
color: string;
fontSize: string;
fontWeight: string;
fontStyle: string;
textDecoration: string;
};
};
forCharacter: string;
typingFinished: boolean;
}>;
storyState: Record<any, any>;
};
export declare const timeStatePath: readonly ["global", "main", "elapsedGameTime"];
export default function global<T_MyTypes extends MyTypes = MyTypes>(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<string, import("repond-movers/src/types").PhysicsOptions>;
slatePos: import("chootils/dist/points2d").Point2D;
slatePosGoal: import("chootils/dist/points2d").Point2D;
slatePosIsMoving: boolean;
slatePosMoveMode: import("repond-movers/src/types").MoveMode;
slatePosMoveConfigs: Record<string, import("repond-movers/src/types").PhysicsOptions>;
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<string, import("repond-movers/src/types").PhysicsOptions>;
slatePos: import("chootils/dist/points2d").Point2D;
slatePosGoal: import("chootils/dist/points2d").Point2D;
slatePosIsMoving: boolean;
slatePosMoveMode: import("repond-movers/src/types").MoveMode;
slatePosMoveConfigs: Record<string, import("repond-movers/src/types").PhysicsOptions>;
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<string, SolidParticleSystem>;
timerSpeed: number;
aConvoIsHappening_timeout: NodeJS.Timeout | null;
camSegmentRulesOptions: Partial<{
[x: string]: Partial<{
[x: string]: (usefulStuff: Record<any, any>) => 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;
};
};
};