libraries_setup #3

Merged
fnicon merged 13 commits from libraries_setup into main 2026-03-18 14:29:14 +00:00
4 changed files with 40 additions and 34 deletions
Showing only changes of commit 248a256559 - Show all commits

View File

@ -14,8 +14,6 @@ components.dict = {
segment_count = "perspective.segment_count",
rumble_length = "perspective.rumble_length",
scroll = "perspective.scroll",
segment_path = "perspective.segment_path",
segment_sprite_map_path = "perspective.segment_sprite_map_path"
}
@ -60,10 +58,6 @@ function components.rumble_length (c, x)
c.data = x
end
function components.scroll (c, x)
c.data = x
end
function components.segment_path (c, x)
c.data = x
end

View File

@ -0,0 +1,13 @@
local vm = require("lib.vornmath")
local components = {}
components.dict = {
pos = "pos3d.pos"
}
function components.pos (c, x, y, z)
c.data = vm.vec3({x, y, z})
end
return components

View File

@ -1,7 +1,10 @@
local system_constructor = require("wrapper.Concord.system")
local roadsegment = require("src.world.2_town_square.pseudo3d.roadsegment")
local perspective = require("src.world.2_town_square.component.perspective")
local pos3d = require("src.world.2_town_square.component.pos3d")
local projection = require("lib.choro.projection")
local ease = require("src.world.2_town_square.pseudo3d.ease")
local vm = require("lib.vornmath")
@ -21,11 +24,12 @@ system.pool = {
perspective.dict.resolution,
perspective.dict.road_width,
perspective.dict.rumble_length,
perspective.dict.scroll,
perspective.dict.segment_count,
perspective.dict.segment_length,
perspective.dict.segment_path,
perspective.dict.segment_sprite_map_path
perspective.dict.segment_sprite_map_path,
pos3d.dict.pos,
}
}
@ -38,11 +42,12 @@ system.components = {
[perspective.dict.resolution] = perspective.resolution,
[perspective.dict.road_width] = perspective.road_width,
[perspective.dict.rumble_length] = perspective.rumble_length,
[perspective.dict.scroll] = perspective.scroll,
[perspective.dict.segment_count] = perspective.segment_count,
[perspective.dict.segment_length] = perspective.segment_length,
[perspective.dict.segment_path] = perspective.segment_path,
[perspective.dict.segment_sprite_map_path] = perspective.segment_sprite_map_path
[perspective.dict.segment_sprite_map_path] = perspective.segment_sprite_map_path,
[pos3d.dict.pos] = pos3d.pos,
}
function system.new()
local new_system = system_constructor.new("perspective", system.pool)
@ -62,7 +67,8 @@ function system:load()
local segment_sprite_map_path = e[perspective.dict.segment_sprite_map_path].data
local segment_length = e[perspective.dict.segment_length].data
local rumble_length = e[perspective.dict.rumble_length].data
local scroll = e[perspective.dict.scroll].data
local player_y = e[pos3d.dict.pos].data
local segments, track_length = roadsegment.resetRoad(segment_path, segment_sprite_map_path, segment_length, rumble_length, scroll)
-- entityBuilder.setComponent(e, "segments", segments)
@ -73,39 +79,31 @@ function system:load()
local camera_depth = projection.distanceCamToProjection(field_of_view)
local player_z = camera_depth * camera_height
e.player = {}
e.player.pos = {0, scroll, player_z}
e[pos3d.dict.pos].data[3] = player_z
e.segments = segments
e.track_length = track_length
e.camera_depth = camera_depth
-- entityBuilder.setComponent(e, "camera_depth", projection.distanceCamToProjection(field_of_view))
-- local camera_depth = e.camera_depth.data
-- entityBuilder.setComponent(e, "player_z", projection.getPlayerZ(camera_height, camera_depth))
-- entityBuilder.setComponent(e, "prev_frame", 0)
end
end
function system:update(dt)
for _, e in ipairs(self.pool) do
if love.keyboard.isDown("up") then
e.player.pos[3] = e.player.pos[3] + 1000 * dt
e[pos3d.dict.pos].data[3] = e[pos3d.dict.pos].data[3] + 1000 * dt
elseif love.keyboard.isDown("down") then
e.player.pos[3] = e.player.pos[3] - 1000 * dt
e[pos3d.dict.pos].data[3] = e[pos3d.dict.pos].data[3] - 1000 * dt
end
if love.keyboard.isDown("left") then
e.player.pos[1] = e.player.pos[1] + 1 * dt
e[pos3d.dict.pos].data[1] = e[pos3d.dict.pos].data[1] - 1 * dt
elseif love.keyboard.isDown("right") then
e.player.pos[1] = e.player.pos[1] - 1 * dt
e[pos3d.dict.pos].data[1] = e[pos3d.dict.pos].data[1] + 1 * dt
end
if love.keyboard.isDown("w") then
e.player.pos[2] = e.player.pos[2] + 1000 * dt
e[pos3d.dict.pos].data[2] = e[pos3d.dict.pos].data[2] + 1000 * dt
elseif love.keyboard.isDown("s") then
e.player.pos[2] = e.player.pos[2] - 1000 * dt
e[pos3d.dict.pos].data[2] = e[pos3d.dict.pos].data[2] - 1000 * dt
end
end
@ -222,7 +220,7 @@ end
function system:draw()
for _, e in ipairs(self.pool) do
local scroll = e.player.pos[2] -- pos[2]
local player_y = e[pos3d.dict.pos].data[2] -- pos[2]
local draw_distance = e[perspective.dict.draw_distance].data
local camera_height = e[perspective.dict.camera_height].data
local resolution = e[perspective.dict.resolution].data
@ -231,14 +229,14 @@ function system:draw()
local fogDensity = e[perspective.dict.fog_density].data
local segments = e.segments
local player_x = e.player.pos[1] -- pos[1]
local player_x = e[pos3d.dict.pos].data[1] -- pos[1]
local camera_depth = e.camera_depth
local track_length = e.track_length
local player_z = e.player.pos[3] -- pos[3]
local player_z = e[pos3d.dict.pos].data[3] -- pos[3]
love.graphics.push()
drawRoad(
scroll, draw_distance,
player_y, draw_distance,
segments,
segment_length, track_length,
player_x, camera_height, camera_depth,
@ -247,7 +245,7 @@ function system:draw()
fogDensity
)
love.graphics.pop()
love.graphics.print(string.format("%s,%s,%s",player_x, scroll, player_z), 20, 20)
love.graphics.print(string.format("%s,%s,%s",player_x, player_y, player_z), 20, 20)
end
end

View File

@ -1,4 +1,5 @@
local perspective = require("src.world.2_town_square.component.perspective")
local pos3d = require("src.world.2_town_square.component.pos3d")
local template = {}
@ -11,7 +12,7 @@ template.default_data = {
fog_density = 0,
-- player
player_x = 0,
pos = {0, 1, 0},
player_width = 50,
centrifugal = 0.3,
player_speed = 0,
@ -27,7 +28,6 @@ template.default_data = {
segment_count = 500,
rumble_length = 3,
scroll = 1,
segment_path = "data/map/segment.json",
segment_sprite_map_path = "data/map/sprites.json",
@ -42,11 +42,12 @@ function template.assemble(e, data)
e:give(perspective.dict.resolution, data.resolution.x, data.resolution.y)
e:give(perspective.dict.road_width, data.road_width)
e:give(perspective.dict.rumble_length, data.rumble_length)
e:give(perspective.dict.scroll, data.scroll)
e:give(perspective.dict.segment_count, data.segment_count)
e:give(perspective.dict.segment_length, data.segment_length)
e:give(perspective.dict.segment_path, data.segment_path)
e:give(perspective.dict.segment_sprite_map_path, data.segment_sprite_map_path)
e:give(pos3d.dict.pos, data.pos[1], data.pos[2], data.pos[3])
end
return template