@quenty/multipleclickutils 13.17.3 → 13.17.4-canary.11a5dcf.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/package.json +6 -6
- package/src/Client/MultipleClickUtils.lua +29 -19
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [13.17.4-canary.11a5dcf.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/multipleclickutils@13.17.3...@quenty/multipleclickutils@13.17.4-canary.11a5dcf.0) (2025-05-10)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* Additional type checking updates ([05ba29a](https://github.com/Quenty/NevermoreEngine/commit/05ba29a03efc9f3feed74b34f1d9dfb237496214))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
6
17
|
## [13.17.3](https://github.com/Quenty/NevermoreEngine/compare/@quenty/multipleclickutils@13.17.2...@quenty/multipleclickutils@13.17.3) (2025-04-10)
|
|
7
18
|
|
|
8
19
|
**Note:** Version bump only for package @quenty/multipleclickutils
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quenty/multipleclickutils",
|
|
3
|
-
"version": "13.17.
|
|
3
|
+
"version": "13.17.4-canary.11a5dcf.0",
|
|
4
4
|
"description": "Utility library for detecting multiple clicks or taps. Not good UX, but good for opening up a debug menus",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Roblox",
|
|
@@ -26,13 +26,13 @@
|
|
|
26
26
|
"Quenty"
|
|
27
27
|
],
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@quenty/loader": "
|
|
30
|
-
"@quenty/maid": "
|
|
31
|
-
"@quenty/rx": "
|
|
32
|
-
"@quenty/signal": "
|
|
29
|
+
"@quenty/loader": "10.8.4-canary.11a5dcf.0",
|
|
30
|
+
"@quenty/maid": "3.4.4-canary.11a5dcf.0",
|
|
31
|
+
"@quenty/rx": "13.17.4-canary.11a5dcf.0",
|
|
32
|
+
"@quenty/signal": "7.10.4-canary.11a5dcf.0"
|
|
33
33
|
},
|
|
34
34
|
"publishConfig": {
|
|
35
35
|
"access": "public"
|
|
36
36
|
},
|
|
37
|
-
"gitHead": "
|
|
37
|
+
"gitHead": "11a5dcf7d4c7a0bfbf3337e97d30e8346ea09d3f"
|
|
38
38
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
--!strict
|
|
1
2
|
--[=[
|
|
2
3
|
Utility library for detecting multiple clicks or taps. Not good UX, but good for opening up a debug
|
|
3
4
|
menus.
|
|
@@ -7,16 +8,16 @@
|
|
|
7
8
|
|
|
8
9
|
local require = require(script.Parent.loader).load(script)
|
|
9
10
|
|
|
10
|
-
local Signal = require("Signal")
|
|
11
11
|
local Maid = require("Maid")
|
|
12
12
|
local Observable = require("Observable")
|
|
13
|
+
local Signal = require("Signal")
|
|
13
14
|
|
|
14
15
|
local MultipleClickUtils = {}
|
|
15
16
|
|
|
16
17
|
local TIME_TO_CLICK_AGAIN = 0.5 -- Based upon windows default
|
|
17
18
|
local VALID_TYPES = {
|
|
18
|
-
[Enum.UserInputType.MouseButton1] = true
|
|
19
|
-
[Enum.UserInputType.Touch] = true
|
|
19
|
+
[Enum.UserInputType.MouseButton1] = true,
|
|
20
|
+
[Enum.UserInputType.Touch] = true,
|
|
20
21
|
}
|
|
21
22
|
|
|
22
23
|
--[=[
|
|
@@ -24,7 +25,7 @@ local VALID_TYPES = {
|
|
|
24
25
|
@param gui GuiObject
|
|
25
26
|
@return Observable<InputObject>
|
|
26
27
|
]=]
|
|
27
|
-
function MultipleClickUtils.observeDoubleClick(gui: GuiObject)
|
|
28
|
+
function MultipleClickUtils.observeDoubleClick(gui: GuiObject): Observable.Observable<InputObject>
|
|
28
29
|
return MultipleClickUtils.observeMultipleClicks(gui, 2)
|
|
29
30
|
end
|
|
30
31
|
|
|
@@ -35,7 +36,7 @@ end
|
|
|
35
36
|
@param gui GuiObject
|
|
36
37
|
@return Signal<InputObject>
|
|
37
38
|
]=]
|
|
38
|
-
function MultipleClickUtils.getDoubleClickSignal(maid, gui: GuiObject)
|
|
39
|
+
function MultipleClickUtils.getDoubleClickSignal(maid: Maid.Maid, gui: GuiObject): Signal.Signal<InputObject>
|
|
39
40
|
return MultipleClickUtils.getMultipleClickSignal(maid, gui, 2)
|
|
40
41
|
end
|
|
41
42
|
|
|
@@ -46,7 +47,10 @@ end
|
|
|
46
47
|
@param requiredCount number
|
|
47
48
|
@return Observable<InputObject>
|
|
48
49
|
]=]
|
|
49
|
-
function MultipleClickUtils.observeMultipleClicks(
|
|
50
|
+
function MultipleClickUtils.observeMultipleClicks(
|
|
51
|
+
gui: GuiObject,
|
|
52
|
+
requiredCount: number
|
|
53
|
+
): Observable.Observable<InputObject>
|
|
50
54
|
assert(typeof(gui) == "Instance", "Bad gui")
|
|
51
55
|
assert(type(requiredCount) == "number", "Bad requiredCount")
|
|
52
56
|
|
|
@@ -58,7 +62,7 @@ function MultipleClickUtils.observeMultipleClicks(gui: GuiObject, requiredCount:
|
|
|
58
62
|
end))
|
|
59
63
|
|
|
60
64
|
return maid
|
|
61
|
-
end)
|
|
65
|
+
end) :: any
|
|
62
66
|
end
|
|
63
67
|
|
|
64
68
|
--[=[
|
|
@@ -75,7 +79,9 @@ end
|
|
|
75
79
|
@param requiredCount number
|
|
76
80
|
@return (gui: GuiObject) -> Observable<InputObject>
|
|
77
81
|
]=]
|
|
78
|
-
function MultipleClickUtils.onMultipleClicks(
|
|
82
|
+
function MultipleClickUtils.onMultipleClicks(
|
|
83
|
+
requiredCount: number
|
|
84
|
+
): (gui: GuiObject) -> Observable.Observable<InputObject>
|
|
79
85
|
assert(type(requiredCount) == "number", "Bad requiredCount")
|
|
80
86
|
|
|
81
87
|
return function(gui: GuiObject)
|
|
@@ -92,27 +98,31 @@ end
|
|
|
92
98
|
@param requiredCount number
|
|
93
99
|
@return Signal<InputObject>
|
|
94
100
|
]=]
|
|
95
|
-
function MultipleClickUtils.getMultipleClickSignal(
|
|
101
|
+
function MultipleClickUtils.getMultipleClickSignal(
|
|
102
|
+
maid,
|
|
103
|
+
gui: GuiObject,
|
|
104
|
+
requiredCount: number
|
|
105
|
+
): Signal.Signal<InputObject>
|
|
96
106
|
assert(Maid.isMaid(maid), "Bad maid")
|
|
97
107
|
assert(typeof(gui) == "Instance", "Bad gui")
|
|
98
108
|
assert(type(requiredCount) == "number", "Bad requiredCount")
|
|
99
109
|
|
|
100
|
-
local signal = Signal.new()
|
|
101
|
-
maid:GiveTask(signal)
|
|
110
|
+
local signal: Signal.Signal<InputObject> = maid:Add(Signal.new() :: any)
|
|
102
111
|
|
|
103
|
-
local lastInputTime = 0
|
|
104
|
-
local lastInputObject = nil
|
|
105
|
-
local inputCount = 0
|
|
112
|
+
local lastInputTime: number = 0
|
|
113
|
+
local lastInputObject: InputObject? = nil
|
|
114
|
+
local inputCount: number = 0
|
|
106
115
|
|
|
107
116
|
maid:GiveTask(gui.InputBegan:Connect(function(inputObject)
|
|
108
117
|
if not VALID_TYPES[inputObject.UserInputType] then
|
|
109
118
|
return
|
|
110
119
|
end
|
|
111
120
|
|
|
112
|
-
if
|
|
121
|
+
if
|
|
122
|
+
lastInputObject
|
|
113
123
|
and inputObject.UserInputType == lastInputObject.UserInputType
|
|
114
|
-
and (
|
|
115
|
-
|
|
124
|
+
and (os.clock() - lastInputTime) <= TIME_TO_CLICK_AGAIN
|
|
125
|
+
then
|
|
116
126
|
inputCount = inputCount + 1
|
|
117
127
|
|
|
118
128
|
if inputCount >= requiredCount then
|
|
@@ -123,7 +133,7 @@ function MultipleClickUtils.getMultipleClickSignal(maid, gui: GuiObject, require
|
|
|
123
133
|
end
|
|
124
134
|
else
|
|
125
135
|
inputCount = 1
|
|
126
|
-
lastInputTime =
|
|
136
|
+
lastInputTime = os.clock()
|
|
127
137
|
lastInputObject = inputObject
|
|
128
138
|
end
|
|
129
139
|
end))
|
|
@@ -131,4 +141,4 @@ function MultipleClickUtils.getMultipleClickSignal(maid, gui: GuiObject, require
|
|
|
131
141
|
return signal
|
|
132
142
|
end
|
|
133
143
|
|
|
134
|
-
return MultipleClickUtils
|
|
144
|
+
return MultipleClickUtils
|