diff --git a/game/love_src/src/new/world/race/components/racer.lua b/game/love_src/src/new/world/race/components/racer.lua index 051c864..f71a115 100644 --- a/game/love_src/src/new/world/race/components/racer.lua +++ b/game/love_src/src/new/world/race/components/racer.lua @@ -65,6 +65,8 @@ function world:load(entity, data) self.checkpoints = {} self.is_finish = false + + self.show_pov = false end function get(s) @@ -199,7 +201,9 @@ function world:draw() local or_x, or_y = self.data.orientation[1], self.data.orientation[2] local vx, vy = self.data.orientation[1] * self.data.velocity[1], self.data.orientation[2] * self.data.velocity[1] - test.set_sphere(x, y, vx, vy) + if (self.show_pov) then + test.set_sphere(x, y, vx, vy) + end end local function draw_time_attack(x, y, r, g, b, to_debug) diff --git a/game/love_src/src/new/world/race/data/track1.lua b/game/love_src/src/new/world/race/data/track1.lua index d5c5758..a8c6f7e 100644 --- a/game/love_src/src/new/world/race/data/track1.lua +++ b/game/love_src/src/new/world/race/data/track1.lua @@ -37,6 +37,40 @@ return { } } }, + { + components = { + racer = require("love_src.src.new.world.race.components.racer"), + actor = require("love_src.src.new.world.race.components.actor"), + }, + type = "racer", + name = "racer 2", + data = { + racer = { + pos = vm.vec2(44.64, 10.87), + + orientation = vm.vec2(1.0, 0.0), + orientation_speed = 0.0, + min_orientation_speed = -1.0, + max_orientation_speed = 1.0, + + velocity = vm.vec2(0.0, 0.0), + max_speed = 0.3, + min_speed = -0.3, + inertia = vm.vec2(0.0, 0.0), + + accel = 0.1, + brake = 0.1, + grip = 0.1, + steer = 0.01, + mass = 0.1, + streamline = 0.1 + }, + actor = { + forward = 0.0, + steer = 0.0, + } + } + }, { components = { map = require"love_src.src.new.world.race.components.map" diff --git a/game/love_src/src/new/world/race/init.lua b/game/love_src/src/new/world/race/init.lua index adcdd22..0b3d53e 100644 --- a/game/love_src/src/new/world/race/init.lua +++ b/game/love_src/src/new/world/race/init.lua @@ -1,5 +1,6 @@ local sfx = require"love_src.wrapper.lappy.new.source".obj local vm = require"lib.vornmath" +local get_loop = require"love_src.src.system.animation".get_loop local main_wrapper = require "love_src.wrapper.lappy.world" ---@class wrappers.Concord.world : lappy.world @@ -109,6 +110,8 @@ function world:setup() local countdown local checkpoints self.world_state = {} + self.racers = {} + self.pov_index = 1 for _, d in pairs(self.entities_data) do local e = { type = d.type, @@ -128,6 +131,11 @@ function world:setup() countdown = e elseif e.type == "checkpoints" then checkpoints = e + elseif e.type == "racer" then + table.insert(self.racers, e) + if (e.components.actor.name == "player") then + e.components.racer.show_pov = true + end end end for _, e in ipairs(self.entities) do @@ -168,6 +176,8 @@ local phases = { local phase = "intro" +local x_is_down = false + function world:update(dt) for _, e in ipairs(self.entities) do for t, c in pairs(e.components) do @@ -180,6 +190,15 @@ function world:update(dt) phases[phase].is_played = true end end + + if (love.keyboard.isDown("x") and not x_is_down) then + self.racers[self.pov_index].components.racer.show_pov = false + self.pov_index = get_loop(self.pov_index + 1, #self.racers) + self.racers[self.pov_index].components.racer.show_pov = true + x_is_down = true + elseif (not love.keyboard.isDown("x") and x_is_down == true) then + x_is_down = false + end end function world:draw()