Update
This commit is contained in:
		
							parent
							
								
									069d4a03f6
								
							
						
					
					
						commit
						e45a0f4135
					
				
					 11 changed files with 176 additions and 9 deletions
				
			
		| 
						 | 
				
			
			@ -65,6 +65,9 @@ function m:draw()
 | 
			
		|||
    self:draw_lines(self.lines)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
m.mousepressed = window.mousepressed(function (self, x, y, button)
 | 
			
		||||
end)
 | 
			
		||||
 | 
			
		||||
function m:install(room, x, y)
 | 
			
		||||
    self:setpos(x, y)
 | 
			
		||||
    room:insert(self)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										11
									
								
								item/seed.lua
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								item/seed.lua
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,11 @@
 | 
			
		|||
local item = require("item")
 | 
			
		||||
 | 
			
		||||
local m = item:from{
 | 
			
		||||
    name = "Seed",
 | 
			
		||||
    description = "A reproductive capsule for plants.",
 | 
			
		||||
    width = 20,
 | 
			
		||||
    height = 20,
 | 
			
		||||
    lines = {'fill', {0, 5, 5, 0, 20, 10, 20, 15, 15, 20, 10, 15}},
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
return m
 | 
			
		||||
							
								
								
									
										3
									
								
								main.lua
									
										
									
									
									
								
							
							
						
						
									
										3
									
								
								main.lua
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -17,7 +17,8 @@ end
 | 
			
		|||
--load room list
 | 
			
		||||
local rooms = require("rooms")
 | 
			
		||||
 | 
			
		||||
current_room = rooms['Alley']
 | 
			
		||||
--current_room = rooms['Alley']
 | 
			
		||||
current_room = rooms['Vivarium']
 | 
			
		||||
 | 
			
		||||
function set_room_raw(r)
 | 
			
		||||
    current_room:onexit()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										22
									
								
								obj/plant.lua
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								obj/plant.lua
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,22 @@
 | 
			
		|||
local entity = require("entity")
 | 
			
		||||
local window = require("window")
 | 
			
		||||
local seed = require("item/seed")
 | 
			
		||||
 | 
			
		||||
local pot = {
 | 
			
		||||
    {'fill', {60, 80, 100, 80, 100, 90, 60, 90}},
 | 
			
		||||
    {'fill', {65, 90, 95, 90, 90, 120, 70, 120}},
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
local m = entity:from{
 | 
			
		||||
    width = 120,
 | 
			
		||||
    height = 120,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function m:update()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
m.draw = window.draw(function (self)
 | 
			
		||||
    self:draw_lines(pot)
 | 
			
		||||
end)
 | 
			
		||||
 | 
			
		||||
return m
 | 
			
		||||
							
								
								
									
										1
									
								
								room.lua
									
										
									
									
									
								
							
							
						
						
									
										1
									
								
								room.lua
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -48,7 +48,6 @@ function room:remove(obj)
 | 
			
		|||
    util.del_entity(self.objects, obj)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
function room:onenter()
 | 
			
		||||
    if self.update then
 | 
			
		||||
        register(self)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,7 +11,7 @@ sundial:from{
 | 
			
		|||
}:install(m, 140, 160)
 | 
			
		||||
 | 
			
		||||
local d = door:from{
 | 
			
		||||
    destination = 'vivarium',
 | 
			
		||||
    destination = 'Vivarium',
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
d:install(m, 80, 60)
 | 
			
		||||
| 
						 | 
				
			
			@ -24,6 +24,6 @@ keypad:from{
 | 
			
		|||
    end,
 | 
			
		||||
}:install(m, 160, 90)
 | 
			
		||||
 | 
			
		||||
edge.set(m, 'up', "Alley")
 | 
			
		||||
edge.set(m, 'down', "Alley")
 | 
			
		||||
 | 
			
		||||
return m
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										18
									
								
								room/vivarium.lua
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								room/vivarium.lua
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,18 @@
 | 
			
		|||
local window = require("window")
 | 
			
		||||
local room = require("room")
 | 
			
		||||
local edge = require("edge")
 | 
			
		||||
local plant = require("obj/plant")
 | 
			
		||||
 | 
			
		||||
local m = room:from{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
local p = plant:from{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
p:install(m, 50, 40)
 | 
			
		||||
 | 
			
		||||
edge.set(m, 'left', "vivarium_table")
 | 
			
		||||
edge.set(m, 'right', "vivarium_lock")
 | 
			
		||||
edge.set(m, 'down', "Sundial Alley")
 | 
			
		||||
 | 
			
		||||
return m
 | 
			
		||||
							
								
								
									
										87
									
								
								room/vivarium_lock.lua
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										87
									
								
								room/vivarium_lock.lua
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,87 @@
 | 
			
		|||
local window = require("window")
 | 
			
		||||
local entity = require("entity")
 | 
			
		||||
local room = require("room")
 | 
			
		||||
local edge = require("edge")
 | 
			
		||||
local button = require("button")
 | 
			
		||||
local seed = require("item/seed")
 | 
			
		||||
 | 
			
		||||
local shelf = entity:from{
 | 
			
		||||
    width = 60,
 | 
			
		||||
    height = 60,
 | 
			
		||||
    item = nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
shelf.draw = window.draw(function (self)
 | 
			
		||||
    love.graphics.setLineWidth(3)
 | 
			
		||||
 | 
			
		||||
    love.graphics.setColor(0, 0, 0)
 | 
			
		||||
    love.graphics.rectangle('fill', 0, 0, self.width, self.height)
 | 
			
		||||
 | 
			
		||||
    love.graphics.setColor(1, 1, 1)
 | 
			
		||||
    love.graphics.rectangle('line', 0, 0, self.width, self.height)
 | 
			
		||||
 | 
			
		||||
    if self.item then
 | 
			
		||||
        self.item:draw()
 | 
			
		||||
    end
 | 
			
		||||
end)
 | 
			
		||||
 | 
			
		||||
shelf.mousepressed = window.mousepressed(function (self, x, y, button)
 | 
			
		||||
    if self.item then
 | 
			
		||||
        inventory:pickup(self.item)
 | 
			
		||||
        self.item = nil
 | 
			
		||||
        self.item:setpos(20, 20)
 | 
			
		||||
    else
 | 
			
		||||
        local i = inventory.selected_item
 | 
			
		||||
        if i and i.name == "Seed" then
 | 
			
		||||
            self.item = i
 | 
			
		||||
            inventory:use()
 | 
			
		||||
        end
 | 
			
		||||
    end
 | 
			
		||||
end)
 | 
			
		||||
 | 
			
		||||
local indicator = entity:from{
 | 
			
		||||
    width = 100,
 | 
			
		||||
    height = 20,
 | 
			
		||||
    text = "",
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
indicator.draw = window.draw(function (self)
 | 
			
		||||
    love.graphics.rectangle('line', 0, 0, self.width, self.height)
 | 
			
		||||
    love.graphics.printf(self.text, 5, 5, self.width - 10)
 | 
			
		||||
end)
 | 
			
		||||
 | 
			
		||||
local m = room:from{
 | 
			
		||||
    state = 'normal',
 | 
			
		||||
    timer = 0,
 | 
			
		||||
    lines = {},
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
local btn = button.new("Check", function ()
 | 
			
		||||
    indicator.text = "Checking..."
 | 
			
		||||
    m.state = 'checking'
 | 
			
		||||
end,
 | 
			
		||||
200, 120, 60, 30)
 | 
			
		||||
 | 
			
		||||
function m:update(dt)
 | 
			
		||||
    if self.state == 'checking' then
 | 
			
		||||
        self.timer = self.timer + dt
 | 
			
		||||
 | 
			
		||||
        if self.timer > 5 then
 | 
			
		||||
            indicator.text = "done"
 | 
			
		||||
            self.state = 'normal'
 | 
			
		||||
            self.timer = 0
 | 
			
		||||
        end
 | 
			
		||||
    end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
m:insert(btn)
 | 
			
		||||
 | 
			
		||||
indicator:install(m, 200, 90)
 | 
			
		||||
 | 
			
		||||
seed:new():install(m, 150, 120)
 | 
			
		||||
 | 
			
		||||
shelf:install(m, 60, 90)
 | 
			
		||||
 | 
			
		||||
edge.set(m, 'down', "Vivarium")
 | 
			
		||||
 | 
			
		||||
return m
 | 
			
		||||
							
								
								
									
										19
									
								
								room/vivarium_table.lua
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								room/vivarium_table.lua
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,19 @@
 | 
			
		|||
local window = require("window")
 | 
			
		||||
local room = require("room")
 | 
			
		||||
local edge = require("edge")
 | 
			
		||||
 | 
			
		||||
local m = room:from{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
edge.set(m, 'down', "Vivarium")
 | 
			
		||||
 | 
			
		||||
m.draw = window.draw(function (self)
 | 
			
		||||
    love.graphics.setLineWidth(3)
 | 
			
		||||
    love.graphics.line(0, 200, 320, 200)
 | 
			
		||||
    love.graphics.rectangle('line', 10, 200, 20, 40)
 | 
			
		||||
    love.graphics.rectangle('line', 290, 200, 20, 40)
 | 
			
		||||
 | 
			
		||||
    self.edges[1]:draw()
 | 
			
		||||
end)
 | 
			
		||||
 | 
			
		||||
return m
 | 
			
		||||
| 
						 | 
				
			
			@ -3,6 +3,9 @@ local m = {
 | 
			
		|||
    ['doortest'] = require('room/doortest'),
 | 
			
		||||
    ['Alley'] = require("room/alley"),
 | 
			
		||||
    ['Sundial alley'] = require("room/sundial_alley"),
 | 
			
		||||
    ['Vivarium'] = require("room/vivarium"),
 | 
			
		||||
    ['vivarium_table'] = require("room/vivarium_table"),
 | 
			
		||||
    ['vivarium_lock'] = require("room/vivarium_lock"),
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
return m
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										14
									
								
								window.lua
									
										
									
									
									
								
							
							
						
						
									
										14
									
								
								window.lua
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -25,16 +25,20 @@ function w.mousepressed(f)
 | 
			
		|||
    end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function w.iterate(t, x, y, button)
 | 
			
		||||
    for i, v in util.ipairs_rev(t) do
 | 
			
		||||
        if v:mousepressed(x, y, button) then
 | 
			
		||||
            return
 | 
			
		||||
        end
 | 
			
		||||
    end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function w.propagate(tnames)
 | 
			
		||||
    return function (self, x, y, button)
 | 
			
		||||
        local x, y = x - self.x, y - self.y
 | 
			
		||||
 | 
			
		||||
        for _, tname in ipairs(tnames) do
 | 
			
		||||
            for i, v in util.ipairs_rev(self[tname]) do
 | 
			
		||||
                if v:mousepressed(x, y, button) then
 | 
			
		||||
                    return
 | 
			
		||||
                end
 | 
			
		||||
            end
 | 
			
		||||
            w.iterate(self[tname], x, y, button)
 | 
			
		||||
        end
 | 
			
		||||
    end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue