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", segment_count = "perspective.segment_count",
rumble_length = "perspective.rumble_length", rumble_length = "perspective.rumble_length",
scroll = "perspective.scroll",
segment_path = "perspective.segment_path", segment_path = "perspective.segment_path",
segment_sprite_map_path = "perspective.segment_sprite_map_path" segment_sprite_map_path = "perspective.segment_sprite_map_path"
} }
@ -60,10 +58,6 @@ function components.rumble_length (c, x)
c.data = x c.data = x
end end
function components.scroll (c, x)
c.data = x
end
function components.segment_path (c, x) function components.segment_path (c, x)
c.data = x c.data = x
end 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 system_constructor = require("wrapper.Concord.system")
local roadsegment = require("src.world.2_town_square.pseudo3d.roadsegment") local roadsegment = require("src.world.2_town_square.pseudo3d.roadsegment")
local perspective = require("src.world.2_town_square.component.perspective") 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 projection = require("lib.choro.projection")
local ease = require("src.world.2_town_square.pseudo3d.ease") local ease = require("src.world.2_town_square.pseudo3d.ease")
local vm = require("lib.vornmath") local vm = require("lib.vornmath")
@ -21,11 +24,12 @@ system.pool = {
perspective.dict.resolution, perspective.dict.resolution,
perspective.dict.road_width, perspective.dict.road_width,
perspective.dict.rumble_length, perspective.dict.rumble_length,
perspective.dict.scroll,
perspective.dict.segment_count, perspective.dict.segment_count,
perspective.dict.segment_length, perspective.dict.segment_length,
perspective.dict.segment_path, 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.resolution] = perspective.resolution,
[perspective.dict.road_width] = perspective.road_width, [perspective.dict.road_width] = perspective.road_width,
[perspective.dict.rumble_length] = perspective.rumble_length, [perspective.dict.rumble_length] = perspective.rumble_length,
[perspective.dict.scroll] = perspective.scroll,
[perspective.dict.segment_count] = perspective.segment_count, [perspective.dict.segment_count] = perspective.segment_count,
[perspective.dict.segment_length] = perspective.segment_length, [perspective.dict.segment_length] = perspective.segment_length,
[perspective.dict.segment_path] = perspective.segment_path, [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() function system.new()
local new_system = system_constructor.new("perspective", system.pool) 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_sprite_map_path = e[perspective.dict.segment_sprite_map_path].data
local segment_length = e[perspective.dict.segment_length].data local segment_length = e[perspective.dict.segment_length].data
local rumble_length = e[perspective.dict.rumble_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) local segments, track_length = roadsegment.resetRoad(segment_path, segment_sprite_map_path, segment_length, rumble_length, scroll)
-- entityBuilder.setComponent(e, "segments", segments) -- entityBuilder.setComponent(e, "segments", segments)
@ -73,39 +79,31 @@ function system:load()
local camera_depth = projection.distanceCamToProjection(field_of_view) local camera_depth = projection.distanceCamToProjection(field_of_view)
local player_z = camera_depth * camera_height local player_z = camera_depth * camera_height
e.player = {} e[pos3d.dict.pos].data[3] = player_z
e.player.pos = {0, scroll, player_z}
e.segments = segments e.segments = segments
e.track_length = track_length e.track_length = track_length
e.camera_depth = camera_depth 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
end end
function system:update(dt) function system:update(dt)
for _, e in ipairs(self.pool) do for _, e in ipairs(self.pool) do
if love.keyboard.isDown("up") then 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 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 end
if love.keyboard.isDown("left") then 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 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 end
if love.keyboard.isDown("w") then 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 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
end end
@ -222,7 +220,7 @@ end
function system:draw() function system:draw()
for _, e in ipairs(self.pool) do 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 draw_distance = e[perspective.dict.draw_distance].data
local camera_height = e[perspective.dict.camera_height].data local camera_height = e[perspective.dict.camera_height].data
local resolution = e[perspective.dict.resolution].data local resolution = e[perspective.dict.resolution].data
@ -231,14 +229,14 @@ function system:draw()
local fogDensity = e[perspective.dict.fog_density].data local fogDensity = e[perspective.dict.fog_density].data
local segments = e.segments 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 camera_depth = e.camera_depth
local track_length = e.track_length 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() love.graphics.push()
drawRoad( drawRoad(
scroll, draw_distance, player_y, draw_distance,
segments, segments,
segment_length, track_length, segment_length, track_length,
player_x, camera_height, camera_depth, player_x, camera_height, camera_depth,
@ -247,7 +245,7 @@ function system:draw()
fogDensity fogDensity
) )
love.graphics.pop() 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
end end

View File

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