modify ClickPoints.getClickPos function to detect click for square/pixel, not for triangle. (Checking if mouse is between two click points instead of if mouse is around one click point.)
This commit is contained in:
@@ -170,6 +170,17 @@ struct
|
|||||||
CollisionTree.toTriangles (windowWidth, windowHeight, squares, maxSide)
|
CollisionTree.toTriangles (windowWidth, windowHeight, squares, maxSide)
|
||||||
val drawMsg = DRAW_SQUARES_AND_DOTS {squares = squares, dots = dotVec}
|
val drawMsg = DRAW_SQUARES_AND_DOTS {squares = squares, dots = dotVec}
|
||||||
in
|
in
|
||||||
(model, drawMsg)
|
(model, [drawMsg])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
fun mouseLeftClick model =
|
||||||
|
case ClickPoints.getClickPositionFromMouse model of
|
||||||
|
SOME (hIdx, vIdx) => addCoordinates (model, hIdx, vIdx)
|
||||||
|
| NONE => (model, [])
|
||||||
|
|
||||||
|
fun enterOrSpaceCoordinates model =
|
||||||
|
let val {arrowX, arrowY, ...} = model
|
||||||
|
in addCoordinates (model, arrowX, arrowY)
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -10,26 +10,23 @@ struct
|
|||||||
(Real32.fromInt idx * increment) + start)
|
(Real32.fromInt idx * increment) + start)
|
||||||
end
|
end
|
||||||
|
|
||||||
(*
|
|
||||||
* Range to detect from clickable position.
|
|
||||||
* For example, if we have a clickable position at (x, y) = (500, 500),
|
|
||||||
* with a range of 15, we can detect clicks targeting this position
|
|
||||||
* from top left at (485, 485) to bottom right at (515, 515).
|
|
||||||
* *)
|
|
||||||
val range = 15.0
|
|
||||||
|
|
||||||
fun getClickPos (clickPoints, mousePos, idx) =
|
fun getClickPos (clickPoints, mousePos, idx) =
|
||||||
if idx = Vector.length clickPoints then
|
let
|
||||||
NONE
|
val nextIdx = idx + 1
|
||||||
else
|
in
|
||||||
let
|
if nextIdx >= Vector.length clickPoints then
|
||||||
val curPos = Vector.sub (clickPoints, idx)
|
NONE
|
||||||
in
|
else
|
||||||
if mousePos < curPos - range orelse mousePos > curPos + range then
|
let
|
||||||
getClickPos (clickPoints, mousePos, idx + 1)
|
val curPos = Vector.sub (clickPoints, idx)
|
||||||
else
|
val nextPos = Vector.sub (clickPoints, nextIdx)
|
||||||
SOME idx
|
in
|
||||||
end
|
if mousePos >= curPos andalso mousePos <= nextPos then
|
||||||
|
SOME idx
|
||||||
|
else
|
||||||
|
getClickPos (clickPoints, mousePos, idx + 1)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
fun getClickPositionFromMouse (app: AppType.app_type) =
|
fun getClickPositionFromMouse (app: AppType.app_type) =
|
||||||
case getClickPos (#xClickPoints app, #mouseX app, 0) of
|
case getClickPos (#xClickPoints app, #mouseX app, 0) of
|
||||||
|
|||||||
Reference in New Issue
Block a user