30 lines
925 B
TypeScript
30 lines
925 B
TypeScript
import { observer } from "mobx-react-lite";
|
|
import type { RuntimeGameObjectInstance } from "../types";
|
|
import { state } from "../state";
|
|
import { ObjectViewInternal } from "./ObjectViewInternal";
|
|
import { PlayerObjectView } from "./CharacterView";
|
|
|
|
export type GameObjectViewProps = {
|
|
object: RuntimeGameObjectInstance;
|
|
isPlayer: boolean;
|
|
}
|
|
|
|
export const GameObjectView = observer(function (props: GameObjectViewProps) {
|
|
const objectType = state.world.getObjectTypeById(props.object.typeId);
|
|
if (!objectType)
|
|
return null;
|
|
|
|
if (props.isPlayer)
|
|
return <PlayerObjectView object={props.object as RuntimeGameObjectInstance} objectType={objectType} />;
|
|
|
|
function handleClick(): void {
|
|
state.game?.emitEvent('object_clicked', { object: props.object });
|
|
}
|
|
|
|
return <ObjectViewInternal
|
|
{...props}
|
|
objectType={objectType}
|
|
onClick={handleClick}
|
|
/>;
|
|
});
|