From aef0d1c1268ab7d4bc18996c9c6b4da16a40aadc Mon Sep 17 00:00:00 2001 From: navewindre Date: Mon, 4 Dec 2023 18:06:10 +0100 Subject: bbbbbbbbwaaaaaaaaaaa --- sourcemod/scripting/gokz-measure/measure_menu.sp | 82 ++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 sourcemod/scripting/gokz-measure/measure_menu.sp (limited to 'sourcemod/scripting/gokz-measure/measure_menu.sp') diff --git a/sourcemod/scripting/gokz-measure/measure_menu.sp b/sourcemod/scripting/gokz-measure/measure_menu.sp new file mode 100644 index 0000000..cf9deb3 --- /dev/null +++ b/sourcemod/scripting/gokz-measure/measure_menu.sp @@ -0,0 +1,82 @@ +#define ITEM_INFO_POINT_A "a" +#define ITEM_INFO_POINT_B "b" +#define ITEM_INFO_GET_DISTANCE "get" +#define ITEM_INFO_GET_BLOCK_DISTANCE "block" + +// =====[ PUBLIC ]===== + +void DisplayMeasureMenu(int client, bool reset = true) +{ + if (reset) + { + MeasureResetPos(client); + } + + Menu menu = new Menu(MenuHandler_Measure); + menu.SetTitle("%T", "Measure Menu - Title", client); + MeasureMenuAddItems(client, menu); + menu.Display(client, MENU_TIME_FOREVER); +} + + + +// =====[ EVENTS ]===== + +public int MenuHandler_Measure(Menu menu, MenuAction action, int param1, int param2) +{ + if (action == MenuAction_Select) + { + char info[16]; + menu.GetItem(param2, info, sizeof(info)); + + if (StrEqual(info, ITEM_INFO_POINT_A, false)) + { + MeasureGetPos(param1, 0); + } + else if (StrEqual(info, ITEM_INFO_POINT_B, false)) + { + MeasureGetPos(param1, 1); + } + else if (StrEqual(info, ITEM_INFO_GET_DISTANCE, false)) + { + MeasureDistance(param1); + } + else if (StrEqual(info, ITEM_INFO_GET_BLOCK_DISTANCE, false)) + { + if (!MeasureBlock(param1)) + { + DisplayMeasureMenu(param1, false); + } + } + + DisplayMeasureMenu(param1, false); + } + else if (action == MenuAction_Cancel) + { + MeasureResetPos(param1); + } + else if (action == MenuAction_End) + { + delete menu; + } + return 0; +} + + + +// =====[ PRIVATE ]===== + +static void MeasureMenuAddItems(int client, Menu menu) +{ + char display[32]; + + FormatEx(display, sizeof(display), "%T", "Measure Menu - Point A", client); + menu.AddItem(ITEM_INFO_POINT_A, display); + FormatEx(display, sizeof(display), "%T", "Measure Menu - Point B", client); + menu.AddItem(ITEM_INFO_POINT_B, display); + FormatEx(display, sizeof(display), "%T\n ", "Measure Menu - Get Distance", client); + menu.AddItem(ITEM_INFO_GET_DISTANCE, display); + FormatEx(display, sizeof(display), "%T", "Measure Menu - Get Block Distance", client); + menu.AddItem(ITEM_INFO_GET_BLOCK_DISTANCE, display); +} + -- cgit v1.2.3