1 Commits

Author SHA1 Message Date
6df1310bdc Fix assets 2023-01-14 10:02:47 +01:00
7 changed files with 28 additions and 33 deletions

View File

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

@@ -21,12 +21,9 @@ MAP_WIN_HEIGHT = MAP_SIZE * MAP_SCALE
# Textures cfg # Textures cfg
TEXTURES = [ TEXTURES = [
"../assets/texture_wall3.png", "assets/texture_wall.png",
"../assets/texture_wall3.png", "assets/texture_wall.png",
"../assets/texture_wall3.png", "assets/texture_wall.png"
# "../assets/texture.png",
# "../assets/texture.png",
# "../assets/texture.png",
] ]
TEXTURE_SIZE = 64 TEXTURE_SIZE = 64

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

@@ -23,16 +23,16 @@ MAP_DOOR_CELL_TYPE = 3
# Textures cfg # Textures cfg
# Index is shifted by 1 relative to map, because 0 is no wall # Index is shifted by 1 relative to map, because 0 is no wall
TEXTURES = [ TEXTURES = [
"../assets/texture_wall_brick.png", # = map index 1 "assets/texture_wall_brick.png", # = map index 1
"../assets/texture_wall_brick_door_left.png", # = map index 2 "assets/texture_wall_brick_door_left.png", # = map index 2
"../assets/texture_wall_brick_door_center.png", # = map index 3 "assets/texture_wall_brick_door_center.png", # = map index 3
"../assets/texture_wall_brick_door_right.png", # = map index 4 "assets/texture_wall_brick_door_right.png", # = map index 4
] ]
TEXTURE_SIZE = 64 TEXTURE_SIZE = 64
# Raycast cfg # Raycast cfg
RAYCAST_WIN_WIDTH = 600 RAYCAST_WIN_WIDTH = 1024
RAYCAST_WIN_HEIGHT = 600 RAYCAST_WIN_HEIGHT = 1024
RAYCAST_RENDER_WIDTH = int(RAYCAST_WIN_WIDTH / 4) RAYCAST_RENDER_WIDTH = int(RAYCAST_WIN_WIDTH / 4)
RAYCAST_RENDER_HEIGHT = int(RAYCAST_WIN_HEIGHT / 4) RAYCAST_RENDER_HEIGHT = int(RAYCAST_WIN_HEIGHT / 4)
DOF = 2*MAP_SIZE # Depth Of Field DOF = 2*MAP_SIZE # Depth Of Field
@@ -40,8 +40,8 @@ CEILING_COLOR = sdl2.ext.Color(0,128,255,255)
FLOOR_COLOR = sdl2.ext.Color(64,64,64,255) FLOOR_COLOR = sdl2.ext.Color(64,64,64,255)
# Player cfg # Player cfg
PLAYER_SPEED = 120 PLAYER_SPEED = 8
PLAYER_ROTATION_SPEED = 2.0 PLAYER_ROTATION_SPEED = 0.1
PLAYER_SPAWN_POSITION = {"x": 1.5, "y": 1.5, "r": 1.7} # r is rotation in radiants PLAYER_SPAWN_POSITION = {"x": 1.5, "y": 1.5, "r": 1.7} # r is rotation in radiants
# Dungeon data # Dungeon data
@@ -113,7 +113,7 @@ class Main:
return return
def run(self): def run(self):
lastDraw = 0 lastFpsCalcTime = 0
frames = 0 frames = 0
running = True running = True
@@ -124,30 +124,16 @@ class Main:
running = False running = False
break break
# Calculate speed based on FPS
elapsed = time.time() - lastDraw
player_speed = int(PLAYER_SPEED * elapsed)
player_rot_speed = PLAYER_ROTATION_SPEED * elapsed
lastDraw = time.time()
keystate = sdl2.SDL_GetKeyboardState(None) keystate = sdl2.SDL_GetKeyboardState(None)
# Rotate player # Rotate player
if keystate[sdl2.SDL_SCANCODE_LEFT]: if keystate[sdl2.SDL_SCANCODE_LEFT]:
self.player_position["r"] = self.player_position["r"] - player_rot_speed self.player_position["r"] = self.player_position["r"] - PLAYER_ROTATION_SPEED
elif keystate[sdl2.SDL_SCANCODE_RIGHT]: elif keystate[sdl2.SDL_SCANCODE_RIGHT]:
self.player_position["r"] = self.player_position["r"] + player_rot_speed self.player_position["r"] = self.player_position["r"] + PLAYER_ROTATION_SPEED
# Fix rotation
if self.player_position["r"] < 0:
self.player_position["r"] = math.pi * 2 + self.player_position["r"]
if self.player_position["r"] > math.pi * 2:
self.player_position["r"] = self.player_position["r"] - math.pi * 2
# Compute deltax and deltay based on player direction # Compute deltax and deltay based on player direction
player_delta_x = math.cos(self.player_position["r"]) * player_speed player_delta_x = (math.cos(self.player_position["r"]) * PLAYER_SPEED) + 1 # "+ 1": Adjust for rounding errors
player_delta_y = math.sin(self.player_position["r"]) * player_speed player_delta_y = math.sin(self.player_position["r"]) * PLAYER_SPEED
print(self.player_position["r"])
# Move player based on its direction # Move player based on its direction
if keystate[sdl2.SDL_SCANCODE_UP]: if keystate[sdl2.SDL_SCANCODE_UP]:
@@ -164,6 +150,10 @@ class Main:
self.player_position["y"] = 0 self.player_position["y"] = 0
if self.player_position["y"] > MAP_WIN_HEIGHT: if self.player_position["y"] > MAP_WIN_HEIGHT:
self.player_position["y"] = MAP_WIN_HEIGHT self.player_position["y"] = MAP_WIN_HEIGHT
if self.player_position["r"] > 2*math.pi:
self.player_position["r"] = 0
if self.player_position["r"] < 0:
self.player_position["r"] = 2*math.pi
# Open doors # Open doors
if keystate[sdl2.SDL_SCANCODE_SPACE]: if keystate[sdl2.SDL_SCANCODE_SPACE]:
@@ -174,6 +164,14 @@ class Main:
self.mapWindow.refresh() self.mapWindow.refresh()
self.raycastWindow.refresh() self.raycastWindow.refresh()
# Calculate FPS
frames = frames + 1
if time.time() - lastFpsCalcTime > 1:
fps = frames/(time.time() - lastFpsCalcTime)
print(int(fps))
frames = 0
lastFpsCalcTime = time.time()
return 0 return 0
def movePlayerRelative(self, player_delta_x, player_delta_y): def movePlayerRelative(self, player_delta_x, player_delta_y):