Skip to content

Commit

Permalink
Fix up player controls and make black tiles non-passable
Browse files Browse the repository at this point in the history
  • Loading branch information
TomK32 committed Dec 15, 2012
1 parent 693444d commit 2bc44f7
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 24 deletions.
23 changes: 14 additions & 9 deletions actor.lua
Expand Up @@ -27,7 +27,9 @@ function Actor:keydown(dt)
end

function Actor:update(dt)
self:keydown(dt)
if self.inputs then
self:keydown(dt)
end
self:updatePosition(dt)
end

Expand All @@ -40,26 +42,29 @@ function Actor:updatePosition(dt)

self.position.x = self.position.x + self.direction.x
self.position.y = self.position.y + self.direction.y
self.game_state.map:fitIntoMap(self.position)

self.game_state.map:moveEntity(self, old_position, self.position)
local tile = self.game.map:getTile(self.position)
if not tile.passable then
self.position = old_position
return false
end
self.game.map:fitIntoMap(self.position)

local tile = level.map.getTile(self.position)
self.game.map:moveEntity(self, old_position, self.position)

if tile.exit then
self.game.exitTo(tile.exit)
end

if self.inputs then
self.map_view:centerAt(self.position)
--self.game.views.map:centerAt(self.position)
end

self.direction = nil
end

function Actor:finishReached()
self.game_state.paused = true
self.game_state.ended = true
self.game.paused = true
self.game.ended = true
love.draw = finishScreen
end

6 changes: 5 additions & 1 deletion main.lua
Expand Up @@ -55,7 +55,8 @@ function game:nextLevel(level_num)
self.current_level = self.level_num
end
table.insert(self.levels, Level(self.current_level, self.seed))
self.views.map = MapView(self.levels[self.current_level].map)
game.map = self.levels[self.current_level].map
self.views.map = MapView(game.map)
end

function game:setMode(mode)
Expand Down Expand Up @@ -101,6 +102,9 @@ function love.update(dt)
game.views.menu:update(dt)
game.animations.valve.running = true
elseif game.state == 'map' then
for i, actor in ipairs(game.actors) do
actor:update(dt)
end
game.views.map:update(dt)
game.animations.valve.running = false
end
Expand Down
24 changes: 13 additions & 11 deletions player.lua
@@ -1,11 +1,13 @@

Player = class("Player", Actor)
Player.inputs = {
keyboard = {
up = 'up',
down = 'down',
left = 'left',
right = 'right',
Player.input_alternatives = {
arrows = {
keyboard = {
up = 'up',
down = 'down',
left = 'left',
right = 'right',
}
}
}
Player.movements = {
Expand All @@ -24,14 +26,14 @@ function Player:initialize(position, animations, game, level)
self.direction = nil
self.dt_since_input = 0
self.entity_type = 'Actor'
self:setInputs(Player.input_alternatives['arrows'])
end


function Player:setSpeed(speed)
if speed < 1 or speed > 10 then
return false
function Player:setInputs(inputs)
self.inputs = {}
for direction, key in pairs(inputs.keyboard) do
self.inputs[key] = Player.movements[direction]
end
self.speed = speed
end

function Player:setDistanceToFinish()
Expand Down
9 changes: 6 additions & 3 deletions tile.lua
Expand Up @@ -4,7 +4,8 @@ Tile = class("Tile")
Tile:include({
entities = {},
color = nil,
seedVal = 0
seedVal = 0,
passable = true
})

function Tile:initialize(x, y)
Expand All @@ -17,6 +18,7 @@ function Tile:seed(x, y)
local s = self.seedVal
if s < 80 then
self.color = {0,0,0}
self.passable = false
elseif s >= 80 and s < 120 then
self.color = {s, s-20, math.floor(s / 2)}
elseif s >= 120 and s < 200 then
Expand All @@ -35,9 +37,10 @@ function Tile:addEntity(entity)
end

function Tile:removeEntity(entity)
for i, e in pairs(self.entities[entity.class.name]) do
local class_name = entity.entity_type or entity.class.name
for i, e in pairs(self.entities[class_name]) do
if e == entity then
table.remove(self.entities[entity.class.name], i)
table.remove(self.entities[class_name], i)
return true
end
end
Expand Down

0 comments on commit 2bc44f7

Please sign in to comment.