added real-time map render!

This commit is contained in:
Jonathan 2024-03-18 15:31:53 -05:00
parent 0d9e48752d
commit 684ebb61a8
9 changed files with 79 additions and 6 deletions

15
app.lua
View File

@ -1,18 +1,20 @@
local lapis = require("lapis") local lapis = require("lapis")
local app = lapis.Application() local app = lapis.Application()
local say = require('lua_scripts/main') local say = require('lua_scripts/main')
local mapFunc = require('lua_scripts/map')
local player = require('player') local player = require('player')
local db = require("lapis.db") local db = require("lapis.db")
local Model = require("lapis.db.model").Model local Model = require("lapis.db.model").Model
local db = Model:extend('database') local map = Model:extend('map')
app:enable("etlua") app:enable("etlua")
app.layout = require "views.layout" app.layout = require "views.layout"
app:post("/clickme", function(self) app:post("/clickme", function(self)
self.plane = "P-38L" self.plane = "P-38L"
mapFunc:populate(map)
return {self.plane, layout = false} return {self.plane, layout = false}
end) end)
@ -23,6 +25,17 @@ app:get("/", function(self)
} }
end) end)
app:match("/map/render", function(self)
self.tiles = {}
for h=1,10 do
self.tiles[h] = {}
for i=1,10 do
self.tiles[h][i] = map:find({x = h, y = i})
end
end
return {render = "map", layout = false}
end)
return app return app

View File

@ -5,7 +5,7 @@ config("development", {
code_cache = "off", code_cache = "off",
num_workers = "1", num_workers = "1",
sqlite = { sqlite = {
database = "my_database.sqlite", database = "database.sqlite3",
-- open_flags = ... -- open_flags = ...
} }
}) })

Binary file not shown.

44
lua_scripts/map.lua Normal file
View File

@ -0,0 +1,44 @@
local map = {
map_tiles = {
{"-", "-", "w", "w", "-", "-", "-", "-", "-", "-"},
{"-", "-", "w", "w", "-", "-", "-", "-", "-", "-"},
{"-", "-", "w", "w", "-", "w", "-", "-", "-", "-"},
{"w", "-", "-", "-", "w", "w", "-", "-", "-", "-"},
{"w", "-", "w", "-", "-", "w", "w", "w", "-", "-"},
{"w", "-", "w", "-", "-", "w", "-", "-", "-", "-"},
{"-", "-", "w", "-", "-", "w", "-", "w", "-", "-"},
{"-", "-", "-", "-", "-", "-", "-", "w", "-", "-"},
{"-", "-", "w", "-", "-", "-", "-", "w", "w", "-"},
{"-", "-", "w", "-", "-", "-", "-", "-", "w", "-"}
},
populate = function(self, map)
for h=1,10 do
for i=1,10 do
local tile = map:create({
x = h,
y = i,
occupied_by_type = self.map_tiles[h][i],
occupied_by_id = ""
})
end
end
end
}
local tiles = {}
return map

View File

@ -12,6 +12,8 @@ http {
init_by_lua_block { init_by_lua_block {
require "lpeg" require "lpeg"
require "lsqlite3"
lapis = require "lapis"
} }
server { server {

View File

@ -13,6 +13,8 @@ http {
init_by_lua_block { init_by_lua_block {
require "lpeg" require "lpeg"
require "lsqlite3"
lapis = require "lapis"
} }
server { server {

View File

@ -15,7 +15,7 @@ sqlite3 database.sqlite3 "
hp INTEGER, hp INTEGER,
inventory_ref INTEGER inventory_ref INTEGER
); );
CREATE TABLE IF NOT EXISTS player_inventory ( CREATE TABLE IF NOT EXISTS player_inventory (
id INTEGER PRIMARY KEY AUTOINCREMENT, id INTEGER PRIMARY KEY AUTOINCREMENT,
type TEXT, type TEXT,
quantity INTEGER, quantity INTEGER,

View File

@ -1,11 +1,15 @@
<!-- views/index.etlua --> <!-- views/index.etlua -->
<script src="/static/htmx.min.js"></script> <script src="/static/htmx.min.js"></script>
<div id="clickable">
<button hx-post="/clickme" hx-target="#clickable">Start</button>
</div>
<button hx-post="/clickme" hx-target="#clickable">Start</button> <div id="map" hx-get="/map/render" hx-trigger="every 5s">
<p id="clickable"></p>
</div>
<ol>
<!-- <!--
<ol>
<p><% for i, thing in pairs(text) do %> <p><% for i, thing in pairs(text) do %>
<li><%= thing %></li> <li><%= thing %></li>
<% end %> <% end %>

8
views/map.etlua Normal file
View File

@ -0,0 +1,8 @@
<p style="text-align: center;">
<% for h=1,10 do %>
<% for i=1,10 do %>
<%= tiles[h][i].occupied_by_type %>
<% end %>
<br>
<% end %>
</p>