From: Randy McShandy Date: Thu, 5 Feb 2026 02:40:37 +0000 (-0600) Subject: Add rendering manager module for things like map positioning and scaling. X-Git-Url: http://git.mcshandy.xyz/gitweb.cgi?a=commitdiff_plain;h=51bbf24415a2d0016bee988205d9e299aa0c0323;p=sumeriangame Add rendering manager module for things like map positioning and scaling. --- diff --git a/main/control.lua b/main/control.lua index 28d66cd..c6c689b 100644 --- a/main/control.lua +++ b/main/control.lua @@ -2,6 +2,7 @@ local player_module = require('player') local assets = require('assets') +local render = require('render') local control = {} @@ -35,6 +36,26 @@ control.keymap['q'] = { end, } +control.keymap['z'] = { + control = control.ControlType.System, + system_action = function(key) + if render.map.scale < 8.0 then + render.map.scale = render.map.scale + 0.2 + print('Scaled out to '..render.map.scale) + end + end, +} + +control.keymap['x'] = { + control = control.ControlType.System, + system_action = function(key) + if render.map.scale > 0.4 then + render.map.scale = render.map.scale - 0.2 + print('Scaled in to '..render.map.scale) + end + end, +} + -- Anything interested in a movement control should register its own handler here. function love.handlers.movement_control(key, value) player:movement_control(key, value) diff --git a/main/main.lua b/main/main.lua index 271a211..fe21254 100644 --- a/main/main.lua +++ b/main/main.lua @@ -9,9 +9,7 @@ local conf = require('conf') local assets = require('assets') local player_module = require('player') local control = require('control') - -local active_map = nil -local tx, ty +local render = require('render') player = player_module.player @@ -21,17 +19,14 @@ function love.load() love.graphics.setFont(assets.get_font('Cuneiform36')) love.audio.play(assets.get_source('intro')) - active_map = assets.get_map('test_map_1') + render.map.active_map = assets.get_map('test_map_1') player = assets.get_object('Player') - player_module.init_controls(player, active_map) - - tx = 0 - ty = 0 + player_module.init_controls(player, render.map.active_map) end function love.update(dt) lovebird.update() - active_map:update(dt) + render.map.active_map:update(dt) player:update(dt) end @@ -49,10 +44,10 @@ function love.keyreleased(key) end function love.draw() - active_map:draw(tx, ty, 2.0) + render.map.active_map:draw(render.map.topleft.x, render.map.topleft.y, render.map.scale) - local r,g,b,a = love.graphics.getColor() - love.graphics.setColor(love.math.colorFromBytes(54, 54, 54)) + last_color = { love.graphics.getColor() } + love.graphics.setColor(render.color.dark) love.graphics.print(IntroMessage, math.floor((conf.window.width/16) * 1), math.floor((conf.window.height/16) * 1)) - love.graphics.setColor(r,g,b,a) + love.graphics.setColor(last_color) end diff --git a/main/player.lua b/main/player.lua index e10aa2b..d0c0370 100644 --- a/main/player.lua +++ b/main/player.lua @@ -3,6 +3,7 @@ local conf = require('conf') local vector = require('vector') local collision = require('collision') +local render = require('render') local player_module = { player = nil diff --git a/main/render.lua b/main/render.lua new file mode 100644 index 0000000..7cbca9c --- /dev/null +++ b/main/render.lua @@ -0,0 +1,18 @@ +-- render.lua -- +local render = {} + +-- Define a palette +render.color = {} +-- wrapping a function that returns multiple values in {} packs +-- them into a single struct +render.color.dark = { love.math.colorFromBytes(54, 54, 54) } +render.color.light = { love.math.colorFromBytes(229, 229, 229) } +print(render.color.dark) + +-- Map rendering info +render.map = {} +render.map.topleft = { x = 0, y = 0 } +render.map.scale = 2.0 +render.map.active_map = nil + +return render