player tweaks

This commit is contained in:
Chris Bell 2025-03-02 15:32:42 -06:00
parent 2d79747a82
commit f73f5d4950
3 changed files with 15 additions and 3 deletions

BIN
game/game

Binary file not shown.

View File

@ -25,13 +25,14 @@ main :: proc() {
rl.SetTargetFPS(60) rl.SetTargetFPS(60)
player = { player = {
position = {CELL_SIZE * 10, CELL_SIZE * 10}, position = {CELL_SIZE * 0, CELL_SIZE * 0},
camera = { camera = {
zoom = 4, zoom = 4,
target = {player.position.x + (CELL_SIZE / 2), player.position.y + (CELL_SIZE / 2)}, target = {player.position.x + (CELL_SIZE / 2), player.position.y + (CELL_SIZE / 2)},
offset = {f32(rl.GetScreenWidth()) / 2, f32(rl.GetScreenHeight()) / 2}, offset = {f32(rl.GetScreenWidth()) / 2, f32(rl.GetScreenHeight()) / 2},
}, },
mode = .INTERACT, mode = .INTERACT,
speed = 1,
} }
load_tilemap() load_tilemap()

View File

@ -11,6 +11,7 @@ Player :: struct {
move_timer: f32, move_timer: f32,
mode: InteractMode, mode: InteractMode,
camera: rl.Camera2D, camera: rl.Camera2D,
speed:f32
} }
InteractMode :: enum { InteractMode :: enum {
@ -76,13 +77,23 @@ player_update_chunks :: proc(p: ^Player, w: ^World) {
@(private="file") @(private="file")
handle_player_input :: proc(p:^Player, w:^World) { handle_player_input :: proc(p:^Player, w:^World) {
current_tile := get_world_tile(w, vec2_to_vec2i(get_player_grid_position(p)))
// Movement // Movement
dt := rl.GetFrameTime() dt := rl.GetFrameTime()
move_delay : f32 = 0.0 move_delay : f32 = 0.2 / p.speed
if p.move_timer > 0 { if p.move_timer > 0 {
p.move_timer -= dt p.move_timer -= dt
} }
if current_tile.type == .WATER {
p.speed = 0.3
}
else {
p.speed = 1
}
if p.move_timer <= 0 { if p.move_timer <= 0 {
current_pos := get_player_grid_position(p) current_pos := get_player_grid_position(p)
@ -208,7 +219,7 @@ draw_player :: proc(player:^Player) {
will_collide :: proc(direction:InteractDirection, p:^Player, w:^World) -> bool { will_collide :: proc(direction:InteractDirection, p:^Player, w:^World) -> bool {
tile, pos := get_tile_in_direction(direction, p, w) tile, pos := get_tile_in_direction(direction, p, w)
// if tile.type == .SOLID { return true } if tile.type == .SOLID { return true }
return false return false
} }