progress in handling variable window width/height (mostly only in imperative shell though)
This commit is contained in:
@@ -236,7 +236,7 @@ struct
|
||||
end
|
||||
end
|
||||
|
||||
(* placeholder *)
|
||||
fun getDrawVec ({x, y, ...}: player) =
|
||||
Block.lerp (x, y, realSize, realSize, 1920.0, 1080.0, 0.5, 0.5, 0.5)
|
||||
(* block is placeholder asset *)
|
||||
fun getDrawVec ({x, y, ...}: player, width, height) =
|
||||
Block.lerp (x, y, realSize, realSize, width, height, 0.5, 0.5, 0.5)
|
||||
end
|
||||
|
||||
@@ -23,6 +23,7 @@ struct
|
||||
val {x, y, width, height, id = _} = wall
|
||||
val width = Real32.fromInt width
|
||||
val height = Real32.fromInt height
|
||||
|
||||
val block = Block.lerp
|
||||
(x, y, width, height, winWidth, winHeight, 0.0, 0.0, 0.0)
|
||||
val acc = block :: acc
|
||||
@@ -30,6 +31,6 @@ struct
|
||||
helpGetDrawVec (pos + 1, wallVec, acc, winWidth, winHeight)
|
||||
end
|
||||
|
||||
fun getDrawVec wallVec =
|
||||
helpGetDrawVec (0, wallVec, [], 1920.0, 1080.0)
|
||||
fun getDrawVec (wallVec, width, height) =
|
||||
helpGetDrawVec (0, wallVec, [], width, height)
|
||||
end
|
||||
|
||||
@@ -158,6 +158,7 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
MLLIB_PUBLIC(void mltonKeyCallback (Int32 x0, Int32 x1, Int32 x2, Int32 x3);)
|
||||
MLLIB_PUBLIC(void mltonFramebufferSizeCallback (Real32 x0, Real32 x1);)
|
||||
|
||||
#undef MLLIB_PRIVATE
|
||||
#undef MLLIB_PUBLIC
|
||||
|
||||
@@ -18,3 +18,13 @@ void keyCallback(GLFWwindow* window, int key, int scancode, int action, int mods
|
||||
void setKeyCallback(GLFWwindow* window) {
|
||||
glfwSetKeyCallback(window, keyCallback);
|
||||
}
|
||||
|
||||
void framebufferSizeCallback(GLFWwindow* window, int width, int height) {
|
||||
glViewport(0, 0, width, height);
|
||||
mltonFramebufferSizeCallback((float) width, (float) height);
|
||||
}
|
||||
|
||||
void setFramebufferSizeCallback(GLFWwindow* window) {
|
||||
glfwSetFramebufferSizeCallback(window, framebufferSizeCallback);
|
||||
}
|
||||
|
||||
|
||||
@@ -31,4 +31,9 @@ struct
|
||||
_export "mltonKeyCallback" public : (int * int * int * int -> unit) -> unit;
|
||||
val setKeyCallback =
|
||||
_import "setKeyCallback" public : window -> unit;
|
||||
|
||||
val exportFramebufferSizeCallback =
|
||||
_export "mltonFramebufferSizeCallback" public : (Real32.real * Real32.real -> unit) -> unit;
|
||||
val setFramebufferSizeCallback =
|
||||
_import "setFramebufferSizeCallback" public : window -> unit;
|
||||
end
|
||||
|
||||
@@ -154,10 +154,13 @@ struct
|
||||
* *)
|
||||
|
||||
val input = InputState.getSnapshot ()
|
||||
val width = InputState.getWidth ()
|
||||
val height = InputState.getHeight ()
|
||||
|
||||
val game = GameUpdate.update (game, input)
|
||||
|
||||
val wallVec = Wall.getDrawVec (#walls game)
|
||||
val playerVec = Player.getDrawVec (#player game)
|
||||
val wallVec = Wall.getDrawVec (#walls game, width, height)
|
||||
val playerVec = Player.getDrawVec (#player game, width, height)
|
||||
|
||||
val shellState = uploadWall (shellState, wallVec)
|
||||
val shellState = uploadPlayer (shellState, playerVec)
|
||||
|
||||
@@ -6,6 +6,8 @@ struct
|
||||
, rightHeld = ref false
|
||||
, upHeld = ref false
|
||||
, downHeld = ref false
|
||||
, width = ref (1920.0 : Real32.real)
|
||||
, height = ref (1080.0 : Real32.real)
|
||||
}
|
||||
|
||||
fun getSnapshot () =
|
||||
@@ -15,19 +17,14 @@ struct
|
||||
, downHeld = !(#downHeld state)
|
||||
}
|
||||
|
||||
fun getPlayerXAxis () =
|
||||
let
|
||||
val lh = #leftHeld state
|
||||
val rh = #rightHeld state
|
||||
fun getWidth () =
|
||||
!(#width state)
|
||||
|
||||
open Player
|
||||
in
|
||||
case (!lh, !rh) of
|
||||
(false, false) => STAY_STILL
|
||||
| (false, true) => MOVE_RIGHT
|
||||
| (true, false) => MOVE_LEFT
|
||||
| (true, true) => STAY_STILL
|
||||
end
|
||||
fun getHeight () =
|
||||
!(#height state)
|
||||
|
||||
fun sizeCallback (width, height) =
|
||||
(#width state := width; #height state := height)
|
||||
|
||||
open Input
|
||||
|
||||
@@ -60,6 +57,9 @@ struct
|
||||
let
|
||||
val () = Input.exportKeyCallback keyCallback
|
||||
val () = Input.setKeyCallback window
|
||||
|
||||
val () = Input.exportFramebufferSizeCallback sizeCallback
|
||||
val () = Input.setFramebufferSizeCallback window
|
||||
in
|
||||
()
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user