libraries_setup #3
@ -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
|
||||
|
||||
13
game/src/world/2_town_square/component/pos3d.lua
Normal file
13
game/src/world/2_town_square/component/pos3d.lua
Normal 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
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user