roblox-ts-template/src/client/controllers/cmdr-controller.ts

31 lines
978 B
TypeScript

import { Controller, OnStart } from "@flamework/core";
import { CmdrClient } from "@rbxts/cmdr";
import { Players } from "@rbxts/services";
import { Trove } from "@rbxts/trove";
import { CMDR_ACCESS_ATTRIBUTE } from "shared/cmdr";
import { TEMPLATE_NAME } from "shared/template-name";
@Controller()
export class CmdrController implements OnStart {
private readonly trove = new Trove();
public onStart(): void {
CmdrClient.SetActivationKeys([Enum.KeyCode.F2]);
CmdrClient.SetPlaceName(TEMPLATE_NAME);
CmdrClient.SetActivationUnlocksMouse(true);
this.trove.connect(Players.LocalPlayer.GetAttributeChangedSignal(CMDR_ACCESS_ATTRIBUTE), () =>
this.updateAccess(),
);
this.trove.attachToInstance(script);
this.updateAccess();
}
private updateAccess(): void {
const enabled = Players.LocalPlayer.GetAttribute(CMDR_ACCESS_ATTRIBUTE) === true;
CmdrClient.SetEnabled(enabled);
if (!enabled) {
CmdrClient.Hide();
}
}
}