forked from Crown-Studio/roblox-ts-template
31 lines
978 B
TypeScript
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();
|
|
}
|
|
}
|
|
}
|