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