feat: add teleportation between maps
This commit is contained in:
parent
fbbe20e225
commit
63922790e0
12 changed files with 314 additions and 11 deletions
15
sonic-radiance.love/datas/gamedata/maps/area/test/grotto.lua
Normal file
15
sonic-radiance.love/datas/gamedata/maps/area/test/grotto.lua
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
return {
|
||||||
|
areaName = "testmap2",
|
||||||
|
canSave = true,
|
||||||
|
color = {0.3, 0.3, 0.3},
|
||||||
|
maps = {
|
||||||
|
{
|
||||||
|
name = "Not Hidden Grotto",
|
||||||
|
music = "testmap",
|
||||||
|
folder = "test",
|
||||||
|
map = "map",
|
||||||
|
x = 0,
|
||||||
|
y = 0,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -302,6 +302,98 @@ return {
|
||||||
{
|
{
|
||||||
id = 102,
|
id = 102,
|
||||||
type = "solid"
|
type = "solid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 108,
|
||||||
|
type = "solid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 109,
|
||||||
|
type = "solid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 110,
|
||||||
|
type = "solid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 116,
|
||||||
|
type = "solid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 117,
|
||||||
|
type = "solid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 118,
|
||||||
|
type = "solid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 124,
|
||||||
|
type = "solid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 125,
|
||||||
|
type = "solid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 126,
|
||||||
|
type = "solid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 129,
|
||||||
|
type = "solid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 130,
|
||||||
|
type = "solid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 132,
|
||||||
|
type = "solid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 133,
|
||||||
|
type = "solid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 134,
|
||||||
|
type = "solid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 140,
|
||||||
|
type = "solid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 141,
|
||||||
|
type = "solid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 142,
|
||||||
|
type = "solid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 148,
|
||||||
|
type = "solid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 149,
|
||||||
|
type = "solid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 150,
|
||||||
|
type = "solid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 156,
|
||||||
|
type = "solid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 157,
|
||||||
|
type = "solid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 158,
|
||||||
|
type = "solid"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 28 KiB |
|
@ -71,6 +71,27 @@
|
||||||
<tile id="98" type="solid"/>
|
<tile id="98" type="solid"/>
|
||||||
<tile id="101" type="solid"/>
|
<tile id="101" type="solid"/>
|
||||||
<tile id="102" type="solid"/>
|
<tile id="102" type="solid"/>
|
||||||
|
<tile id="108" type="solid"/>
|
||||||
|
<tile id="109" type="solid"/>
|
||||||
|
<tile id="110" type="solid"/>
|
||||||
|
<tile id="116" type="solid"/>
|
||||||
|
<tile id="117" type="solid"/>
|
||||||
|
<tile id="118" type="solid"/>
|
||||||
|
<tile id="124" type="solid"/>
|
||||||
|
<tile id="125" type="solid"/>
|
||||||
|
<tile id="126" type="solid"/>
|
||||||
<tile id="129" type="solid"/>
|
<tile id="129" type="solid"/>
|
||||||
<tile id="130" type="solid"/>
|
<tile id="130" type="solid"/>
|
||||||
|
<tile id="132" type="solid"/>
|
||||||
|
<tile id="133" type="solid"/>
|
||||||
|
<tile id="134" type="solid"/>
|
||||||
|
<tile id="140" type="solid"/>
|
||||||
|
<tile id="141" type="solid"/>
|
||||||
|
<tile id="142" type="solid"/>
|
||||||
|
<tile id="148" type="solid"/>
|
||||||
|
<tile id="149" type="solid"/>
|
||||||
|
<tile id="150" type="solid"/>
|
||||||
|
<tile id="156" type="solid"/>
|
||||||
|
<tile id="157" type="solid"/>
|
||||||
|
<tile id="158" type="solid"/>
|
||||||
</tileset>
|
</tileset>
|
||||||
|
|
|
@ -8,8 +8,8 @@ return {
|
||||||
height = 40,
|
height = 40,
|
||||||
tilewidth = 16,
|
tilewidth = 16,
|
||||||
tileheight = 16,
|
tileheight = 16,
|
||||||
nextlayerid = 10,
|
nextlayerid = 11,
|
||||||
nextobjectid = 25,
|
nextobjectid = 26,
|
||||||
properties = {},
|
properties = {},
|
||||||
tilesets = {
|
tilesets = {
|
||||||
{
|
{
|
||||||
|
@ -316,6 +316,42 @@ return {
|
||||||
id = 102,
|
id = 102,
|
||||||
type = "solid"
|
type = "solid"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
id = 108,
|
||||||
|
type = "solid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 109,
|
||||||
|
type = "solid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 110,
|
||||||
|
type = "solid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 116,
|
||||||
|
type = "solid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 117,
|
||||||
|
type = "solid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 118,
|
||||||
|
type = "solid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 124,
|
||||||
|
type = "solid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 125,
|
||||||
|
type = "solid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 126,
|
||||||
|
type = "solid"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
id = 129,
|
id = 129,
|
||||||
type = "solid"
|
type = "solid"
|
||||||
|
@ -323,6 +359,54 @@ return {
|
||||||
{
|
{
|
||||||
id = 130,
|
id = 130,
|
||||||
type = "solid"
|
type = "solid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 132,
|
||||||
|
type = "solid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 133,
|
||||||
|
type = "solid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 134,
|
||||||
|
type = "solid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 140,
|
||||||
|
type = "solid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 141,
|
||||||
|
type = "solid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 142,
|
||||||
|
type = "solid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 148,
|
||||||
|
type = "solid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 149,
|
||||||
|
type = "solid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 150,
|
||||||
|
type = "solid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 156,
|
||||||
|
type = "solid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 157,
|
||||||
|
type = "solid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 158,
|
||||||
|
type = "solid"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -404,9 +488,9 @@ return {
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
58, 58, 58, 58, 58, 58, 58, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
58, 58, 58, 58, 58, 58, 58, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
66, 66, 66, 66, 66, 66, 66, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
66, 66, 66, 66, 66, 66, 66, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 49, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
|
0, 0, 0, 0, 0, 0, 0, 49, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 109, 110, 111, 50, 50, 50, 50, 50, 50, 50,
|
||||||
0, 0, 0, 0, 0, 0, 0, 57, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
|
0, 0, 0, 0, 0, 0, 0, 57, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 117, 118, 119, 58, 58, 58, 58, 58, 58, 58,
|
||||||
0, 0, 0, 0, 0, 0, 0, 65, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
|
0, 0, 0, 0, 0, 0, 0, 65, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 125, 126, 127, 66, 66, 66, 66, 66, 66, 66,
|
||||||
39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 130, 131, 132,
|
0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 130, 131, 132,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
@ -442,6 +526,38 @@ return {
|
||||||
39, 0, 0, 0, 0, 39, 0, 0, 0, 0, 23, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39
|
39, 0, 0, 0, 0, 39, 0, 0, 0, 0, 23, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
type = "objectgroup",
|
||||||
|
draworder = "topdown",
|
||||||
|
id = 10,
|
||||||
|
name = "teleporter",
|
||||||
|
visible = true,
|
||||||
|
opacity = 1,
|
||||||
|
offsetx = 0,
|
||||||
|
offsety = 0,
|
||||||
|
properties = {},
|
||||||
|
objects = {
|
||||||
|
{
|
||||||
|
id = 25,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 336,
|
||||||
|
y = 96,
|
||||||
|
width = 16,
|
||||||
|
height = 16,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {
|
||||||
|
["area"] = "test.grotto",
|
||||||
|
["isSolid"] = true,
|
||||||
|
["needButton"] = true,
|
||||||
|
["x"] = 12,
|
||||||
|
["y"] = 12
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
type = "objectgroup",
|
type = "objectgroup",
|
||||||
draworder = "topdown",
|
draworder = "topdown",
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<map version="1.4" tiledversion="1.4.3" orientation="orthogonal" renderorder="right-down" width="30" height="40" tilewidth="16" tileheight="16" infinite="0" nextlayerid="10" nextobjectid="25">
|
<map version="1.4" tiledversion="1.4.3" orientation="orthogonal" renderorder="right-down" width="30" height="40" tilewidth="16" tileheight="16" infinite="0" nextlayerid="11" nextobjectid="26">
|
||||||
<editorsettings>
|
<editorsettings>
|
||||||
<export target="test.lua" format="lua"/>
|
<export target="test.lua" format="lua"/>
|
||||||
</editorsettings>
|
</editorsettings>
|
||||||
|
@ -54,9 +54,9 @@
|
||||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
58,58,58,58,58,58,58,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
58,58,58,58,58,58,58,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
66,66,66,66,66,66,66,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
66,66,66,66,66,66,66,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
0,0,0,0,0,0,0,49,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,
|
0,0,0,0,0,0,0,49,50,50,50,50,50,50,50,50,50,50,50,50,109,110,111,50,50,50,50,50,50,50,
|
||||||
0,0,0,0,0,0,0,57,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,
|
0,0,0,0,0,0,0,57,58,58,58,58,58,58,58,58,58,58,58,58,117,118,119,58,58,58,58,58,58,58,
|
||||||
0,0,0,0,0,0,0,65,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,
|
0,0,0,0,0,0,0,65,66,66,66,66,66,66,66,66,66,66,66,66,125,126,127,66,66,66,66,66,66,66,
|
||||||
39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,130,131,132,
|
0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,130,131,132,
|
||||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
@ -92,6 +92,17 @@
|
||||||
39,0,0,0,0,39,0,0,0,0,23,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39
|
39,0,0,0,0,39,0,0,0,0,23,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39
|
||||||
</data>
|
</data>
|
||||||
</layer>
|
</layer>
|
||||||
|
<objectgroup id="10" name="teleporter">
|
||||||
|
<object id="25" x="336" y="96" width="16" height="16">
|
||||||
|
<properties>
|
||||||
|
<property name="area" value="test.grotto"/>
|
||||||
|
<property name="isSolid" type="bool" value="true"/>
|
||||||
|
<property name="needButton" type="bool" value="true"/>
|
||||||
|
<property name="x" type="int" value="12"/>
|
||||||
|
<property name="y" type="int" value="12"/>
|
||||||
|
</properties>
|
||||||
|
</object>
|
||||||
|
</objectgroup>
|
||||||
<objectgroup id="7" name="ring">
|
<objectgroup id="7" name="ring">
|
||||||
<object id="13" x="112" y="144" width="16" height="16"/>
|
<object id="13" x="112" y="144" width="16" height="16"/>
|
||||||
<object id="14" x="112" y="176" width="16" height="16"/>
|
<object id="14" x="112" y="176" width="16" height="16"/>
|
||||||
|
|
|
@ -5,7 +5,8 @@ return {
|
||||||
["optionBox"] = {"message", "title", "avatar", "option1", "option2", "option3", "flag"},
|
["optionBox"] = {"message", "title", "avatar", "option1", "option2", "option3", "flag"},
|
||||||
["playSFX"] = {"sfx"},
|
["playSFX"] = {"sfx"},
|
||||||
["getRings"] = {"number"},
|
["getRings"] = {"number"},
|
||||||
["getItems"] = {"type", "item", "number"}
|
["getItems"] = {"type", "item", "number"},
|
||||||
|
["teleport"] = {"area", "x", "y"}
|
||||||
--[name] = {args...},
|
--[name] = {args...},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,5 +5,6 @@ return {
|
||||||
["optionBox"] = require("game.events.event.dialogbox"),
|
["optionBox"] = require("game.events.event.dialogbox"),
|
||||||
["playSFX"] = require("game.events.event.playSFX"),
|
["playSFX"] = require("game.events.event.playSFX"),
|
||||||
["getRings"] = require("game.events.event.getRings"),
|
["getRings"] = require("game.events.event.getRings"),
|
||||||
["getItems"] = require("game.events.event.getItems")
|
["getItems"] = require("game.events.event.getItems"),
|
||||||
|
["teleport"] = require("game.events.event.teleport")
|
||||||
}
|
}
|
19
sonic-radiance.love/game/events/event/teleport.lua
Normal file
19
sonic-radiance.love/game/events/event/teleport.lua
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
local StepParent = require "game.events.event.parent"
|
||||||
|
local SimpleMessageStep = StepParent:extend()
|
||||||
|
local defTransitions = require "core.modules.transitions"
|
||||||
|
|
||||||
|
function SimpleMessageStep:new(controller, args)
|
||||||
|
SimpleMessageStep.super.new(self, controller, args)
|
||||||
|
end
|
||||||
|
|
||||||
|
function SimpleMessageStep:start()
|
||||||
|
core.screen:startTransition(defTransitions.default, defTransitions.default,
|
||||||
|
function() self.events.scene.world:teleport(self.arguments.area, self.arguments.x, self.arguments.y) end,
|
||||||
|
0, 0)
|
||||||
|
end
|
||||||
|
|
||||||
|
function SimpleMessageStep:update(dt)
|
||||||
|
self:finish()
|
||||||
|
end
|
||||||
|
|
||||||
|
return SimpleMessageStep;
|
|
@ -8,6 +8,7 @@ Obj.Ring = require(cwd .. "ring")
|
||||||
Obj.ItemBox = require(cwd .. "itembox")
|
Obj.ItemBox = require(cwd .. "itembox")
|
||||||
Obj.RingBox = require(cwd .. "ringbox")
|
Obj.RingBox = require(cwd .. "ringbox")
|
||||||
Obj.Encounter = require(cwd .. "encounter")
|
Obj.Encounter = require(cwd .. "encounter")
|
||||||
|
Obj.Teleporter = require(cwd .. "teleport")
|
||||||
|
|
||||||
Obj.index = {}
|
Obj.index = {}
|
||||||
Obj.index["player"] = Obj.Player
|
Obj.index["player"] = Obj.Player
|
||||||
|
@ -16,6 +17,7 @@ Obj.index["ring"] = Obj.Ring
|
||||||
Obj.index["itembox"] = Obj.ItemBox
|
Obj.index["itembox"] = Obj.ItemBox
|
||||||
Obj.index["ringbox"] = Obj.RingBox
|
Obj.index["ringbox"] = Obj.RingBox
|
||||||
Obj.index["encounter"] = Obj.Encounter
|
Obj.index["encounter"] = Obj.Encounter
|
||||||
|
Obj.index["teleporter"] = Obj.Teleporter
|
||||||
|
|
||||||
Obj.collisions = {}
|
Obj.collisions = {}
|
||||||
Obj.collisions["wall"] = require(cwd .. "wall")
|
Obj.collisions["wall"] = require(cwd .. "wall")
|
||||||
|
|
16
sonic-radiance.love/scenes/overworld/actors/teleport.lua
Normal file
16
sonic-radiance.love/scenes/overworld/actors/teleport.lua
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
local cwd = (...):gsub('%.teleport$', '') .. "."
|
||||||
|
local Gizmo = require(cwd .. "gizmo")
|
||||||
|
local Teleporter = Gizmo:extend()
|
||||||
|
|
||||||
|
function Teleporter:new(world, x, y, w, h)
|
||||||
|
Teleporter.super.new(self, world, x, y, w, h, nil)
|
||||||
|
end
|
||||||
|
|
||||||
|
function Teleporter:applyProperties()
|
||||||
|
Teleporter.super.applyProperties(self)
|
||||||
|
self.event = {
|
||||||
|
{"teleport", "", self.properties.area, self.properties.x, self.properties.y},
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return Teleporter
|
|
@ -21,6 +21,15 @@ function RPGWorld:savePosition()
|
||||||
game.position.area = self.area
|
game.position.area = self.area
|
||||||
end
|
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()
|
function RPGWorld:restoreActions()
|
||||||
self.encounter:destroy()
|
self.encounter:destroy()
|
||||||
local currentMap = self.map:getMapAtPoint(self.players[1].actor.x, self.players[1].actor.y)
|
local currentMap = self.map:getMapAtPoint(self.players[1].actor.x, self.players[1].actor.y)
|
||||||
|
|
Loading…
Reference in a new issue