Add edge
This commit is contained in:
parent
a340c8f8b0
commit
3179442942
5 changed files with 84 additions and 6 deletions
70
edge.lua
Normal file
70
edge.lua
Normal file
|
@ -0,0 +1,70 @@
|
|||
local window = require('window')
|
||||
local entity = require('entity')
|
||||
|
||||
-- 320x240
|
||||
local edge_data = {
|
||||
up = {
|
||||
x = 120,
|
||||
y = 10,
|
||||
width = 80,
|
||||
height = 10,
|
||||
lines = {{'fill', {0, 10, 80, 10, 40, 0}}},
|
||||
},
|
||||
|
||||
down = {
|
||||
x = 120,
|
||||
y = 220,
|
||||
width = 80,
|
||||
height = 10,
|
||||
lines = {{'fill', {0, 0, 80, 0, 40, 10}}},
|
||||
},
|
||||
|
||||
left = {
|
||||
x = 10,
|
||||
y = 80,
|
||||
width = 10,
|
||||
height = 80,
|
||||
lines = {{'fill', {10, 0, 10, 80, 0, 40}}},
|
||||
},
|
||||
|
||||
right = {
|
||||
x = 300,
|
||||
y = 80,
|
||||
width = 10,
|
||||
height = 80,
|
||||
lines = {{'fill', {0, 0, 0, 80, 10, 40}}},
|
||||
}
|
||||
}
|
||||
|
||||
local edge = entity:from{
|
||||
dir = "up",
|
||||
destination = "nowhere",
|
||||
|
||||
mousepressed = window.mousepressed(function (self)
|
||||
log:log(string.format("You enter %s", self.destination))
|
||||
set_room(self.destination)
|
||||
end)
|
||||
}
|
||||
|
||||
local mt = {
|
||||
__index = function (t, k)
|
||||
if edge_data[t.dir][k] then
|
||||
return edge_data[t.dir][k]
|
||||
else
|
||||
return edge[k]
|
||||
end
|
||||
end
|
||||
}
|
||||
|
||||
function edge:set(room, dir, dst)
|
||||
local e = self:from{
|
||||
dir = dir,
|
||||
destination = dst,
|
||||
}
|
||||
|
||||
setmetatable(e, mt)
|
||||
|
||||
table.insert(room.edges, e)
|
||||
end
|
||||
|
||||
return edge
|
|
@ -41,8 +41,8 @@ function m:draw()
|
|||
elseif mode == 'fill' then
|
||||
local ts = love.math.triangulate(segs)
|
||||
love.graphics.setColor(0, 0, 0)
|
||||
for _, t in ipairs(ts) do
|
||||
love.graphics.polygon('fill', ts)
|
||||
for i, t in ipairs(ts) do
|
||||
love.graphics.polygon('fill', t)
|
||||
end
|
||||
|
||||
love.graphics.setColor(1, 1, 1)
|
||||
|
|
6
main.lua
6
main.lua
|
@ -3,7 +3,11 @@ local window = require("window")
|
|||
local button = require("button")
|
||||
local rooms = require("rooms")
|
||||
|
||||
local current_room = rooms['default']
|
||||
current_room = rooms['default']
|
||||
|
||||
function set_room(r)
|
||||
current_room = rooms[r]
|
||||
end
|
||||
|
||||
screen = {
|
||||
x = 0, y = 60,
|
||||
|
|
3
room.lua
3
room.lua
|
@ -50,8 +50,7 @@ function room:draw()
|
|||
end
|
||||
|
||||
for i, v in ipairs(self.edges) do
|
||||
local x, y = edge_position(v)
|
||||
love.graphics.draw(edge_arrow[v.dir], x, y)
|
||||
v:draw()
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -1,10 +1,15 @@
|
|||
local room = require('room')
|
||||
local edge = require('edge')
|
||||
local crowbar = require('item/crowbar')
|
||||
|
||||
local r = room:new()
|
||||
|
||||
r.background = love.graphics.newImage("res/defaultbg.png")
|
||||
|
||||
local crowbar = require('item/crowbar')
|
||||
crowbar:install(r, 100, 160)
|
||||
edge:set(r, 'up', "default")
|
||||
edge:set(r, 'down', "default")
|
||||
edge:set(r, 'left', "default")
|
||||
edge:set(r, 'right', "default")
|
||||
|
||||
return r
|
||||
|
|
Loading…
Add table
Reference in a new issue