movement restrictions
This commit is contained in:
@@ -10,32 +10,40 @@ end
|
||||
|
||||
function EntityWalkState:update(dt)
|
||||
if self.entity.direction == 'up' then
|
||||
self.entity.y = self.entity.y - self.entity.walkingSpeed * dt
|
||||
if self.entity.y + TILE_SIZE / 2 < LEVEL_RENDER_OFFSET_TOP - 2 then
|
||||
self.entity.y = self.entity.y + self.entity.walkingSpeed * dt
|
||||
Event.dispatch('back-to-wall')
|
||||
self.entity:changeState('edge')
|
||||
if self.entity:isMoveAllowed({self.entity.x, self.entity.y - self.entity.walkingSpeed * dt}) then
|
||||
self.entity.y = self.entity.y - self.entity.walkingSpeed * dt
|
||||
if self.entity.y + TILE_SIZE / 2 < LEVEL_RENDER_OFFSET_TOP - 2 then
|
||||
self.entity.y = self.entity.y + self.entity.walkingSpeed * dt
|
||||
Event.dispatch('back-to-wall')
|
||||
self.entity:changeState('edge')
|
||||
end
|
||||
end
|
||||
elseif self.entity.direction == 'down' then
|
||||
self.entity.y = self.entity.y + self.entity.walkingSpeed * dt
|
||||
if self.entity.y + TILE_SIZE / 2 > VIRTUAL_HEIGHT - LEVEL_RENDER_OFFSET + 2 then
|
||||
self.entity.y = self.entity.y - self.entity.walkingSpeed * dt
|
||||
Event.dispatch('back-to-wall')
|
||||
self.entity:changeState('edge')
|
||||
if self.entity:isMoveAllowed({self.entity.x, self.entity.y + self.entity.walkingSpeed * dt}) then
|
||||
self.entity.y = self.entity.y + self.entity.walkingSpeed * dt
|
||||
if self.entity.y + TILE_SIZE / 2 > VIRTUAL_HEIGHT - LEVEL_RENDER_OFFSET + 2 then
|
||||
self.entity.y = self.entity.y - self.entity.walkingSpeed * dt
|
||||
Event.dispatch('back-to-wall')
|
||||
self.entity:changeState('edge')
|
||||
end
|
||||
end
|
||||
elseif self.entity.direction == 'right' then
|
||||
self.entity.x = self.entity.x + self.entity.walkingSpeed * dt
|
||||
if self.entity.x + TILE_SIZE / 2 > VIRTUAL_WIDTH - TILE_SIZE / 2 + 2 or self.entity.previousdirection == 'left' then
|
||||
self.entity.x = self.entity.x - self.entity.walkingSpeed * dt
|
||||
Event.dispatch('back-to-wall')
|
||||
self.entity:changeState('edge')
|
||||
if self.entity:isMoveAllowed({self.entity.x + self.entity.walkingSpeed * dt, self.entity.y}) then
|
||||
self.entity.x = self.entity.x + self.entity.walkingSpeed * dt
|
||||
if self.entity.x + TILE_SIZE / 2 > VIRTUAL_WIDTH - TILE_SIZE / 2 + 2 or self.entity.previousdirection == 'left' then
|
||||
self.entity.x = self.entity.x - self.entity.walkingSpeed * dt
|
||||
Event.dispatch('back-to-wall')
|
||||
self.entity:changeState('edge')
|
||||
end
|
||||
end
|
||||
elseif self.entity.direction == 'left' then
|
||||
self.entity.x = self.entity.x - self.entity.walkingSpeed * dt
|
||||
if self.entity.x < 0 or self.entity.previousdirection == 'right' then
|
||||
self.entity.x = self.entity.x + self.entity.walkingSpeed * dt
|
||||
Event.dispatch('back-to-wall')
|
||||
self.entity:changeState('edge')
|
||||
if self.entity:isMoveAllowed({self.entity.x - self.entity.walkingSpeed * dt, self.entity.y}) then
|
||||
self.entity.x = self.entity.x - self.entity.walkingSpeed * dt
|
||||
if self.entity.x < 0 or self.entity.previousdirection == 'right' then
|
||||
self.entity.x = self.entity.x + self.entity.walkingSpeed * dt
|
||||
Event.dispatch('back-to-wall')
|
||||
self.entity:changeState('edge')
|
||||
end
|
||||
end
|
||||
end
|
||||
if love.keyboard.isDown('left') then
|
||||
|
||||
Reference in New Issue
Block a user