mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-07 21:24:59 +00:00
Made checks of map connections go through a single method, which can be used to modify connections on the fly
This commit is contained in:
@@ -67,26 +67,23 @@ class PokemonMapFactory
|
|||||||
|
|
||||||
def getNewMap(playerX, playerY)
|
def getNewMap(playerX, playerY)
|
||||||
id = $game_map.map_id
|
id = $game_map.map_id
|
||||||
conns = MapFactoryHelper.getMapConnections
|
MapFactoryHelper.eachConnectionForMap(id) do |conn|
|
||||||
if conns[id]
|
mapidB = nil
|
||||||
conns[id].each do |conn|
|
newx = 0
|
||||||
mapidB = nil
|
newy = 0
|
||||||
newx = 0
|
if conn[0] == id
|
||||||
newy = 0
|
mapidB = conn[3]
|
||||||
if conn[0] == id
|
mapB = MapFactoryHelper.getMapDims(conn[3])
|
||||||
mapidB = conn[3]
|
newx = conn[4] - conn[1] + playerX
|
||||||
mapB = MapFactoryHelper.getMapDims(conn[3])
|
newy = conn[5] - conn[2] + playerY
|
||||||
newx = conn[4] - conn[1] + playerX
|
else
|
||||||
newy = conn[5] - conn[2] + playerY
|
mapidB = conn[0]
|
||||||
else
|
mapB = MapFactoryHelper.getMapDims(conn[0])
|
||||||
mapidB = conn[0]
|
newx = conn[1] - conn[4] + playerX
|
||||||
mapB = MapFactoryHelper.getMapDims(conn[0])
|
newy = conn[2] - conn[5] + playerY
|
||||||
newx = conn[1] - conn[4] + playerX
|
end
|
||||||
newy = conn[2] - conn[5] + playerY
|
if newx >= 0 && newx < mapB[0] && newy >= 0 && newy < mapB[1]
|
||||||
end
|
return [getMap(mapidB), newx, newy]
|
||||||
if newx >= 0 && newx < mapB[0] && newy >= 0 && newy < mapB[1]
|
|
||||||
return [getMap(mapidB), newx, newy]
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
return nil
|
return nil
|
||||||
@@ -117,27 +114,24 @@ class PokemonMapFactory
|
|||||||
return if @fixup
|
return if @fixup
|
||||||
@fixup = true
|
@fixup = true
|
||||||
id = $game_map.map_id
|
id = $game_map.map_id
|
||||||
conns = MapFactoryHelper.getMapConnections
|
MapFactoryHelper.eachConnectionForMap(id) do |conn|
|
||||||
if conns[id]
|
if conn[0] == id
|
||||||
conns[id].each do |conn|
|
mapA = getMap(conn[0])
|
||||||
if conn[0] == id
|
newdispx = ((conn[4] - conn[1]) * Game_Map::REAL_RES_X) + mapA.display_x
|
||||||
mapA = getMap(conn[0])
|
newdispy = ((conn[5] - conn[2]) * Game_Map::REAL_RES_Y) + mapA.display_y
|
||||||
newdispx = ((conn[4] - conn[1]) * Game_Map::REAL_RES_X) + mapA.display_x
|
if hasMap?(conn[3]) || MapFactoryHelper.mapInRangeById?(conn[3], newdispx, newdispy)
|
||||||
newdispy = ((conn[5] - conn[2]) * Game_Map::REAL_RES_Y) + mapA.display_y
|
mapB = getMap(conn[3])
|
||||||
if hasMap?(conn[3]) || MapFactoryHelper.mapInRangeById?(conn[3], newdispx, newdispy)
|
mapB.display_x = newdispx if mapB.display_x != newdispx
|
||||||
mapB = getMap(conn[3])
|
mapB.display_y = newdispy if mapB.display_y != newdispy
|
||||||
mapB.display_x = newdispx if mapB.display_x != newdispx
|
end
|
||||||
mapB.display_y = newdispy if mapB.display_y != newdispy
|
else
|
||||||
end
|
mapA = getMap(conn[3])
|
||||||
else
|
newdispx = ((conn[1] - conn[4]) * Game_Map::REAL_RES_X) + mapA.display_x
|
||||||
mapA = getMap(conn[3])
|
newdispy = ((conn[2] - conn[5]) * Game_Map::REAL_RES_Y) + mapA.display_y
|
||||||
newdispx = ((conn[1] - conn[4]) * Game_Map::REAL_RES_X) + mapA.display_x
|
if hasMap?(conn[0]) || MapFactoryHelper.mapInRangeById?(conn[0], newdispx, newdispy)
|
||||||
newdispy = ((conn[2] - conn[5]) * Game_Map::REAL_RES_Y) + mapA.display_y
|
mapB = getMap(conn[0])
|
||||||
if hasMap?(conn[0]) || MapFactoryHelper.mapInRangeById?(conn[0], newdispx, newdispy)
|
mapB.display_x = newdispx if mapB.display_x != newdispx
|
||||||
mapB = getMap(conn[0])
|
mapB.display_y = newdispy if mapB.display_y != newdispy
|
||||||
mapB.display_x = newdispx if mapB.display_x != newdispx
|
|
||||||
mapB.display_y = newdispy if mapB.display_y != newdispy
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -234,11 +228,8 @@ class PokemonMapFactory
|
|||||||
|
|
||||||
def areConnected?(mapID1, mapID2)
|
def areConnected?(mapID1, mapID2)
|
||||||
return true if mapID1 == mapID2
|
return true if mapID1 == mapID2
|
||||||
conns = MapFactoryHelper.getMapConnections
|
MapFactoryHelper.eachConnectionForMap(mapID1) do |conn|
|
||||||
if conns[mapID1]
|
return true if conn[0] == mapID2 || conn[3] == mapID2
|
||||||
conns[mapID1].each do |conn|
|
|
||||||
return true if conn[0] == mapID2 || conn[3] == mapID2
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
@@ -248,18 +239,15 @@ class PokemonMapFactory
|
|||||||
if thisMapID == otherMapID # Both events share the same map
|
if thisMapID == otherMapID # Both events share the same map
|
||||||
return [otherX - thisX, otherY - thisY]
|
return [otherX - thisX, otherY - thisY]
|
||||||
end
|
end
|
||||||
conns = MapFactoryHelper.getMapConnections
|
MapFactoryHelper.eachConnectionForMap(thisMapID) do |conn|
|
||||||
if conns[thisMapID]
|
if conn[0] == otherMapID
|
||||||
conns[thisMapID].each do |conn|
|
posX = conn[4] - conn[1] + otherX - thisX
|
||||||
if conn[0] == otherMapID
|
posY = conn[5] - conn[2] + otherY - thisY
|
||||||
posX = conn[4] - conn[1] + otherX - thisX
|
return [posX, posY]
|
||||||
posY = conn[5] - conn[2] + otherY - thisY
|
elsif conn[3] == otherMapID
|
||||||
return [posX, posY]
|
posX = conn[1] - conn[4] + otherX - thisX
|
||||||
elsif conn[3] == otherMapID
|
posY = conn[2] - conn[5] + otherY - thisY
|
||||||
posX = conn[1] - conn[4] + otherX - thisX
|
return [posX, posY]
|
||||||
posY = conn[2] - conn[5] + otherY - thisY
|
|
||||||
return [posX, posY]
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
return [0, 0]
|
return [0, 0]
|
||||||
@@ -330,24 +318,21 @@ class PokemonMapFactory
|
|||||||
def getRealTilePos(mapID, x, y)
|
def getRealTilePos(mapID, x, y)
|
||||||
id = mapID
|
id = mapID
|
||||||
return [id, x, y] if getMapNoAdd(id).valid?(x, y)
|
return [id, x, y] if getMapNoAdd(id).valid?(x, y)
|
||||||
conns = MapFactoryHelper.getMapConnections
|
MapFactoryHelper.eachConnectionForMap(id) do |conn|
|
||||||
if conns[id]
|
if conn[0] == id
|
||||||
conns[id].each do |conn|
|
newX = x + conn[4] - conn[1]
|
||||||
if conn[0] == id
|
newY = y + conn[5] - conn[2]
|
||||||
newX = x + conn[4] - conn[1]
|
next if newX < 0 || newY < 0
|
||||||
newY = y + conn[5] - conn[2]
|
dims = MapFactoryHelper.getMapDims(conn[3])
|
||||||
next if newX < 0 || newY < 0
|
next if newX >= dims[0] || newY >= dims[1]
|
||||||
dims = MapFactoryHelper.getMapDims(conn[3])
|
return [conn[3], newX, newY]
|
||||||
next if newX >= dims[0] || newY >= dims[1]
|
else
|
||||||
return [conn[3], newX, newY]
|
newX = x + conn[1] - conn[4]
|
||||||
else
|
newY = y + conn[2] - conn[5]
|
||||||
newX = x + conn[1] - conn[4]
|
next if newX < 0 || newY < 0
|
||||||
newY = y + conn[2] - conn[5]
|
dims = MapFactoryHelper.getMapDims(conn[0])
|
||||||
next if newX < 0 || newY < 0
|
next if newX >= dims[0] || newY >= dims[1]
|
||||||
dims = MapFactoryHelper.getMapDims(conn[0])
|
return [conn[0], newX, newY]
|
||||||
next if newX >= dims[0] || newY >= dims[1]
|
|
||||||
return [conn[0], newX, newY]
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
return nil
|
return nil
|
||||||
@@ -455,6 +440,12 @@ module MapFactoryHelper
|
|||||||
return conns[id] ? true : false
|
return conns[id] ? true : false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.eachConnectionForMap(id)
|
||||||
|
conns = MapFactoryHelper.getMapConnections
|
||||||
|
return if !conns[id]
|
||||||
|
conns[id].each { |conn| yield conn }
|
||||||
|
end
|
||||||
|
|
||||||
# Gets the height and width of the map with id
|
# Gets the height and width of the map with id
|
||||||
def self.getMapDims(id)
|
def self.getMapDims(id)
|
||||||
# Create cache if doesn't exist
|
# Create cache if doesn't exist
|
||||||
|
|||||||
Reference in New Issue
Block a user