Skip to content

Commit 445cdbd

Browse files
committed
plugin current version
1 parent 776bfb1 commit 445cdbd

37 files changed

+445
-127
lines changed

serve.project.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"$className": "DataModel",
99
"ServerScriptService": {
1010
"$className": "ServerScriptService",
11-
"Plugin": {
11+
"OldPlugin": {
1212
"$className": "Folder",
1313
"$path": "./default.project.json"
1414
}

src/Stories/Controls/BoolControl.story.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@ export = function (target: ScreenGui) {
1919
BackgroundColor3={Color3.fromRGB(31, 31, 31)}
2020
BackgroundTransparency={0}
2121
>
22-
<ControlHolder ControlName={"Bool Test"} LayoutOrder={0}>
22+
<ControlHolder ControlName={"Bool Test"} LayoutOrder={0} ResetSignal={listener}>
2323
<ControlMap.boolean
2424
Control={control}
25-
ResetListen={listener}
25+
ResetSignal={listener}
2626
ControlApply={ControlApply}
2727
Default={false}
2828
></ControlMap.boolean>

src/Stories/Controls/Choose.story.tsx

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import Roact from "@rbxts/roact";
2+
import { Choose } from "@rbxts/ui-labs/out/ControlsUtil";
3+
import { AddControlBinding } from "UI/Contexts/ActionsContext";
4+
import ControlHolder from "UI/Controls/ControlHolder";
5+
import ControlMap from "UI/Controls/ControlMap";
6+
import { Div } from "UI/UIUtils/Styles/Div";
7+
import Signal from "Utils/Signal";
8+
9+
export = function (target: ScreenGui) {
10+
const ControlApply = (value: unknown) => {
11+
print(value);
12+
};
13+
const listener = new Signal();
14+
const chooseList = Choose(["Test1", "Test2", "Test3"], 0);
15+
const control = AddControlBinding(chooseList);
16+
const NewBoolControl = (
17+
<Div
18+
Position={UDim2.fromScale(0.5, 0.5)}
19+
AnchorPoint={new Vector2(0.5, 0.5)}
20+
BackgroundColor3={Color3.fromRGB(31, 31, 31)}
21+
BackgroundTransparency={0}
22+
>
23+
<ControlHolder ControlName={"Color Test"} LayoutOrder={0} ResetSignal={listener}>
24+
<ControlMap.Choose
25+
DefaultIndex={0}
26+
ChooseList={chooseList.Props.ChooseList}
27+
Control={control}
28+
ResetSignal={listener}
29+
ControlApply={ControlApply}
30+
Default={Color3.fromRGB(255, 100, 100)}
31+
></ControlMap.Choose>
32+
</ControlHolder>
33+
</Div>
34+
);
35+
const Handler = Roact.mount(NewBoolControl, target, "SliderControl");
36+
return function () {
37+
listener.Destroy();
38+
Roact.unmount(Handler);
39+
};
40+
};

src/Stories/Controls/ColorControl.story.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@ export = function (target: ScreenGui) {
2020
BackgroundColor3={Color3.fromRGB(31, 31, 31)}
2121
BackgroundTransparency={0}
2222
>
23-
<ControlHolder ControlName={"Color Test"} LayoutOrder={0}>
23+
<ControlHolder ControlName={"Color Test"} LayoutOrder={0} ResetSignal={listener}>
2424
<ControlMap.Color3
2525
Control={control}
26-
ResetListen={listener}
26+
ResetSignal={listener}
2727
ControlApply={ControlApply}
2828
Default={Color3.fromRGB(255, 100, 100)}
2929
></ControlMap.Color3>

src/Stories/Controls/EnumList.story.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,12 @@ export = function (target: ScreenGui) {
2727
BackgroundColor3={Color3.fromRGB(31, 31, 31)}
2828
BackgroundTransparency={0}
2929
>
30-
<ControlHolder ControlName={"Color Test"} LayoutOrder={0}>
30+
<ControlHolder ControlName={"Color Test"} LayoutOrder={0} ResetSignal={listener}>
3131
<ControlMap.EnumList
3232
DefaultIndex="Test1"
3333
EnumList={enumList.Props.EnumList}
3434
Control={control}
35-
ResetListen={listener}
35+
ResetSignal={listener}
3636
ControlApply={ControlApply}
3737
Default={Color3.fromRGB(255, 100, 100)}
3838
></ControlMap.EnumList>

src/Stories/Controls/SliderControl.story.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ export = function (target: ScreenGui) {
2020
BackgroundColor3={Color3.fromRGB(31, 31, 31)}
2121
BackgroundTransparency={0}
2222
>
23-
<ControlHolder ControlName={"Slider Test"} LayoutOrder={0}>
23+
<ControlHolder ControlName={"Slider Test"} LayoutOrder={0} ResetSignal={listener}>
2424
<ControlMap.Slider
25-
ResetListen={listener}
25+
ResetSignal={listener}
2626
ControlApply={ControlApply}
2727
Control={control}
2828
Min={10}

src/Stories/Controls/StringControl.story.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ export = function (target: ScreenGui) {
2121
BackgroundColor3={Color3.fromRGB(31, 31, 31)}
2222
BackgroundTransparency={0}
2323
>
24-
<ControlHolder ControlName={"String Test"} LayoutOrder={0}>
24+
<ControlHolder ControlName={"String Test"} LayoutOrder={0} ResetSignal={listener}>
2525
<ControlMap.string
2626
Control={control}
27-
ResetListen={listener}
27+
ResetSignal={listener}
2828
ControlApply={ControlApply}
2929
Default={"Hello"}
3030
></ControlMap.string>

src/TestingStories/SummaryTest.story.tsx

+18-27
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,11 @@
11
import Roact from "@rbxts/roact";
22
import { SpecialControls, WithControls } from "@rbxts/ui-labs";
3-
import { EnumList, Number, RGBA } from "@rbxts/ui-labs/out/ControlsUtil";
3+
import { Choose, EnumList, Number, RGBA, Slider } from "@rbxts/ui-labs/out/ControlsUtil";
44

55
const controls = {
66
"Text Label": "String test",
77
Rounded: true,
8-
EnumList: EnumList(
9-
{
10-
Small: 10,
11-
Medium: 15,
12-
Large: 20,
13-
},
14-
"Medium",
15-
),
8+
ChooseList: Choose(["One", "Two", "Three"]),
169
"Text Color": EnumList(
1710
{
1811
White: Color3.fromRGB(255, 255, 255),
@@ -22,19 +15,19 @@ const controls = {
2215
},
2316
"White",
2417
),
18+
RoundSize: EnumList(
19+
{
20+
Small: new UDim(0, 10),
21+
Medium: new UDim(0, 20),
22+
Large: new UDim(0, 30),
23+
},
24+
"Small",
25+
),
2526
"Back Color": RGBA(Color3.fromRGB(59, 59, 59), 0),
2627
//"Text Color": Color3.fromRGB(255, 255, 255),
2728
//"Back Color": Color3.fromRGB(59, 59, 59),
2829
"Box Size": Number(200, new NumberRange(5, 400), 1, true),
29-
"Text Size": identity<SpecialControls["Slider"]>({
30-
ControlType: "Slider",
31-
Default: 30,
32-
Props: {
33-
Min: 20,
34-
Max: 60,
35-
Step: 5,
36-
},
37-
}),
30+
"Text Size": Slider(30, 20, 60, 5),
3831
};
3932

4033
const returner: WithControls<typeof controls> = {
@@ -45,22 +38,20 @@ const returner: WithControls<typeof controls> = {
4538
story: (props) => {
4639
return (
4740
<frame
48-
Size={UDim2.fromOffset(props.Controls["Box Size"], 120)}
49-
BackgroundColor3={props.Controls["Back Color"].Color}
41+
Size={UDim2.fromOffset(props.controls["Box Size"], 120)}
42+
BackgroundColor3={props.controls["Back Color"].Color}
5043
Position={UDim2.fromScale(0.5, 0.5)}
5144
BorderSizePixel={0}
52-
BackgroundTransparency={props.Controls["Back Color"].Transparency}
45+
BackgroundTransparency={props.controls["Back Color"].Transparency}
5346
AnchorPoint={new Vector2(0.5, 0.5)}
5447
>
55-
<uicorner
56-
CornerRadius={props.Controls.Rounded ? new UDim(0, props.Controls.EnumList) : new UDim(0, 0)}
57-
></uicorner>
48+
<uicorner CornerRadius={props.controls.Rounded ? props.controls.RoundSize : new UDim(0, 0)}></uicorner>
5849
<textlabel
59-
TextColor3={props.Controls["Text Color"]}
60-
TextSize={props.Controls["Text Size"] * 0.5}
50+
TextColor3={props.controls["Text Color"]}
51+
TextSize={props.controls["Text Size"] * 0.5}
6152
Size={UDim2.fromScale(1, 1)}
6253
BackgroundTransparency={1}
63-
Text={props.Controls["Text Label"]}
54+
Text={props.controls["Text Label"]}
6455
></textlabel>
6556
</frame>
6657
);

src/UI/Actions/ActionWindow.tsx

+3-2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import ResizableFrame from "UI/UIUtils/ResizableFrame";
66
import ThemeContext from "UI/Contexts/ThemeContext";
77
import { Detector } from "UI/UIUtils/Styles/Detector";
88
import { useUpdateEffect } from "@rbxts/pretty-roact-hooks";
9+
import { PathfindingService } from "@rbxts/services";
910

1011
const LabelInfo = new TweenInfo(0.3, Enum.EasingStyle.Cubic, Enum.EasingDirection.Out, 0, false, 0);
1112

@@ -125,8 +126,8 @@ function ActionWindowCreate(props: ActionWindowProps) {
125126
return (
126127
<ResizableFrame
127128
Key="ActionPanel"
128-
ResizeRange={new NumberRange(-120, 200)}
129-
MaxBeforeCollapse={-190}
129+
ResizeRange={new NumberRange(-160, 200)}
130+
MaxBeforeCollapse={-200}
130131
BaseSize={new UDim2(1, 0, 0, 233)}
131132
HandleAnchor="Top"
132133
HolderProps={{

src/UI/Actions/Windows/Controls.tsx

+4-2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import ControlHolder from "UI/Controls/ControlHolder";
66
import ControlMap from "UI/Controls/ControlMap";
77
import { Div } from "UI/UIUtils/Styles/Div";
88
import { Text } from "UI/UIUtils/Styles/Text";
9+
import Signal from "Utils/Signal";
910

1011
interface ControlsProps {
1112
Controls: ULC.RuntimeControls;
@@ -25,18 +26,19 @@ function ControlsCreate(setprops: ControlsProps) {
2526
const controlType = control.ControlType;
2627
const Creator = ControlMap[controlType];
2728
const extraProps = ("Props" in control && control.Props) || {};
29+
const resetter = new Signal();
2830
const newControl = Roact.createElement(Creator as Callback, {
2931
...extraProps,
3032
Default: control.Default,
31-
ResetListen: props.Api.ReloadControls,
33+
ResetSignal: resetter,
3234
Control: control,
3335
ControlApply: (newValue: unknown) => {
3436
control.Bind.Set(newValue);
3537
},
3638
});
3739

3840
const controlHolder = (
39-
<ControlHolder ControlName={control.DisplayName ?? key} LayoutOrder={control.Order ?? 0}>
41+
<ControlHolder ControlName={control.DisplayName ?? key} LayoutOrder={control.Order ?? 0} ResetSignal={resetter}>
4042
{newControl}
4143
</ControlHolder>
4244
);

src/UI/Contexts/OverlayContext.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ export type OverlayContextType = {
1818
) => void;
1919
DropMenu: (
2020
description: boolean,
21-
selected: string,
21+
selected: string | number,
2222
dropdown: Record<string, _EnumListType> | Array<_EnumListType>,
2323
transformBind: Roact.Binding<Vector2[]>,
2424
sizeBind: Roact.Binding<Vector2>,

src/UI/Controls/ControlHolder.tsx

+22-4
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { __ControlBinder } from "@rbxts/ui-labs/out/ControlsUtil";
44
import { _UILabsInternal as UL, _UILabsControls as ULC } from "@rbxts/ui-labs/out/Internal";
55
import Signal from "@rbxts/ui-labs/out/Signal";
66
import ThemeContext from "UI/Contexts/ThemeContext";
7+
import IconButton from "UI/UIUtils/IconButton";
78
import { Div } from "UI/UIUtils/Styles/Div";
89
import { Text } from "UI/UIUtils/Styles/Text";
910

@@ -13,14 +14,15 @@ declare global {
1314
ControlApply: (value: T) => void;
1415
Default: T;
1516
Control: ULC.IsRuntimeControl;
16-
ResetListen: Signal<() => void>;
17+
ResetSignal: Signal;
1718
}
1819
}
1920
}
2021

2122
interface ControlHolderProps extends PropsWithChildren {
2223
ControlName: string;
2324
LayoutOrder: number;
25+
ResetSignal: Signal;
2426
}
2527

2628
function setProps(props: ControlHolderProps) {
@@ -34,14 +36,30 @@ function ControlHolderCreate(setprops: ControlHolderProps) {
3436
<Div Key={"Control" + props.LayoutOrder} LayoutOrder={props.LayoutOrder} Size={new UDim2(1, 0, 0, 35)}>
3537
<Div Key="Contents">
3638
<uipadding PaddingLeft={new UDim(0, 20)} />
37-
<uilistlayout FillDirection={Enum.FillDirection.Horizontal} SortOrder={Enum.SortOrder.LayoutOrder} />
38-
<Div Key="Control" LayoutOrder={1} Size={new UDim2(1, -200, 1, 0)}>
39+
<uilistlayout
40+
Padding={new UDim(0, 7)}
41+
FillDirection={Enum.FillDirection.Horizontal}
42+
SortOrder={Enum.SortOrder.LayoutOrder}
43+
VerticalAlignment={Enum.VerticalAlignment.Center}
44+
/>
45+
<Div Key="Control" LayoutOrder={2} Size={new UDim2(1, -200, 1, 0)}>
3946
{props[Roact.Children] ? props[Roact.Children] : undefined}
4047
</Div>
48+
<IconButton
49+
LayoutOrder={1}
50+
Size={UDim2.fromOffset(27, 27)}
51+
ButtonName="ControlReset"
52+
Description="Reset Control"
53+
OnClick={() => props.ResetSignal.Fire()}
54+
Icon={{
55+
RectOffset: new Vector2(128, 128),
56+
Size: UDim2.fromOffset(21, 21),
57+
}}
58+
></IconButton>
4159
<Text
4260
Key="ControlName"
4361
BackgroundTransparency={1}
44-
Size={new UDim2(0, 200, 1, 0)}
62+
Size={new UDim2(0, 158, 1, 0)}
4563
Text={props.ControlName}
4664
TextColor3={theme.TextColor}
4765
TextSize={14}

src/UI/Controls/ControlSet/BoolControl.tsx

+7-6
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,17 @@ function BoolControlCreate(setprops: BoolControlProps) {
2323
const theme = useContext(ThemeContext).Theme;
2424
const [hoverSize, setHoverSize] = useTween(hoverInfo, 40);
2525
const handleRef = useRef<Frame>();
26-
const resetControls = () => {
26+
const ResetControl = () => {
2727
setEnabled(props.Default);
2828
};
29-
30-
useEventListener(props.ResetListen, () => {
31-
resetControls();
29+
useEventListener(props.ResetSignal, () => {
30+
print("Resetting");
31+
ResetControl();
3232
});
3333
useUpdateEffect(() => {
34-
resetControls();
35-
}, [props.Control.Default]);
34+
ResetControl();
35+
}, [props.Control]);
36+
3637
useEffect(() => {
3738
props.ControlApply(enabled);
3839
const handle = handleRef.getValue();

0 commit comments

Comments
 (0)