sonic-radiance/sonic-radiance.love/scenes/overworld/world.lua
2021-04-03 00:04:22 +02:00

42 lines
1.2 KiB
Lua

local World = require "core.modules.world.world2D"
local RPGWorld = World:extend()
local objFile = "scenes.overworld.actors"
local RPGMap = require "scenes.overworld.map"
function RPGWorld:new(scene, area, playerx, playery)
self.area = area or game.position.area
self.playerx = playerx or game.position.x
self.playery = playery or game.position.y
RPGWorld.super.new(self, scene, objFile, nil, nil)
end
function RPGWorld:createMapController()
RPGMap(self, self.area, self.playerx, self.playery)
end
function RPGWorld:savePosition()
local x, y = self.players[1].actor.x, self.players[1].actor.y
game.position.x = math.floor(x / 16)
game.position.y = math.floor(y / 16)
game.position.area = self.area
end
function RPGWorld:teleport(area, x, y)
if (area == self.area) then
self.players[1].actor.x = x * 16
self.players[1].actor.y = y * 16
else
scenes.overworld(area, x, y)
end
end
function RPGWorld:restoreActions()
self.encounter:destroy()
local currentMap = self.map:getMapAtPoint(self.players[1].actor.x, self.players[1].actor.y)
self.players[1].actor.xsp = 0
self.players[1].actor.ysp = 0
self.scene:playMapMusic(currentMap)
end
return RPGWorld