Compare commits
1 Commits
fps-indepe
...
fix-assets
Author | SHA1 | Date | |
---|---|---|---|
6df1310bdc |
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
@@ -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
|
||||||
|
|
||||||
|
BIN
v3/assets/texture_wall_brick.png
Normal file
After Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
@@ -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):
|
||||||
|