mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-07 13:15:01 +00:00
Re-added a way to erase (or change) a map's tiles
This commit is contained in:
@@ -385,6 +385,14 @@ class Game_Map
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def set_tile(x, y, layer, id = 0)
|
||||||
|
self.data[x, y, layer] = id
|
||||||
|
end
|
||||||
|
|
||||||
|
def erase_tile(x, y, layer)
|
||||||
|
set_tile(x, y, layer, 0)
|
||||||
|
end
|
||||||
|
|
||||||
def refresh
|
def refresh
|
||||||
for event in @events.values
|
for event in @events.values
|
||||||
event.refresh
|
event.refresh
|
||||||
|
|||||||
@@ -235,6 +235,7 @@ class TilemapRenderer
|
|||||||
#=============================================================================
|
#=============================================================================
|
||||||
class TileSprite < Sprite
|
class TileSprite < Sprite
|
||||||
attr_accessor :filename
|
attr_accessor :filename
|
||||||
|
attr_accessor :tile_id
|
||||||
attr_accessor :is_autotile
|
attr_accessor :is_autotile
|
||||||
attr_accessor :animated
|
attr_accessor :animated
|
||||||
attr_accessor :priority
|
attr_accessor :priority
|
||||||
@@ -242,10 +243,11 @@ class TilemapRenderer
|
|||||||
attr_accessor :bridge
|
attr_accessor :bridge
|
||||||
attr_accessor :need_refresh
|
attr_accessor :need_refresh
|
||||||
|
|
||||||
def set_bitmap(filename, autotile, animated, priority, bitmap)
|
def set_bitmap(filename, tile_id, autotile, animated, priority, bitmap)
|
||||||
self.bitmap = bitmap
|
self.bitmap = bitmap
|
||||||
self.src_rect = Rect.new(0, 0, DISPLAY_TILE_WIDTH, DISPLAY_TILE_HEIGHT)
|
self.src_rect = Rect.new(0, 0, DISPLAY_TILE_WIDTH, DISPLAY_TILE_HEIGHT)
|
||||||
@filename = filename
|
@filename = filename
|
||||||
|
@tile_id = tile_id
|
||||||
@is_autotile = autotile
|
@is_autotile = autotile
|
||||||
@animated = animated
|
@animated = animated
|
||||||
@priority = priority
|
@priority = priority
|
||||||
@@ -348,8 +350,9 @@ class TilemapRenderer
|
|||||||
def refresh; end
|
def refresh; end
|
||||||
|
|
||||||
def refresh_tile_bitmap(tile, map, tile_id)
|
def refresh_tile_bitmap(tile, map, tile_id)
|
||||||
|
tile.tile_id = tile_id
|
||||||
if tile_id < TILES_PER_AUTOTILE
|
if tile_id < TILES_PER_AUTOTILE
|
||||||
tile.set_bitmap("", false, false, 0, nil)
|
tile.set_bitmap("", tile_id, false, false, 0, nil)
|
||||||
tile.shows_reflection = false
|
tile.shows_reflection = false
|
||||||
tile.bridge = false
|
tile.bridge = false
|
||||||
else
|
else
|
||||||
@@ -375,11 +378,11 @@ class TilemapRenderer
|
|||||||
else # Single extra autotiles
|
else # Single extra autotiles
|
||||||
filename = extra_autotile_arrays[1][tile_id - single_autotile_start_id]
|
filename = extra_autotile_arrays[1][tile_id - single_autotile_start_id]
|
||||||
end
|
end
|
||||||
tile.set_bitmap(filename, true, @autotiles.animated?(filename),
|
tile.set_bitmap(filename, tile_id, true, @autotiles.animated?(filename),
|
||||||
priority, @autotiles[filename])
|
priority, @autotiles[filename])
|
||||||
else
|
else
|
||||||
filename = map.tileset_name
|
filename = map.tileset_name
|
||||||
tile.set_bitmap(filename, false, false, priority, @tilesets[filename])
|
tile.set_bitmap(filename, tile_id, false, false, priority, @tilesets[filename])
|
||||||
end
|
end
|
||||||
tile.shows_reflection = terrain_tag_data&.shows_reflections
|
tile.shows_reflection = terrain_tag_data&.shows_reflections
|
||||||
tile.bridge = terrain_tag_data&.bridge
|
tile.bridge = terrain_tag_data&.bridge
|
||||||
@@ -574,7 +577,7 @@ class TilemapRenderer
|
|||||||
tile_y = j + map_display_y_tile
|
tile_y = j + map_display_y_tile
|
||||||
@tiles[i][j].each_with_index do |tile, layer|
|
@tiles[i][j].each_with_index do |tile, layer|
|
||||||
tile_id = map.data[tile_x, tile_y, layer]
|
tile_id = map.data[tile_x, tile_y, layer]
|
||||||
if do_full_refresh || tile.need_refresh
|
if do_full_refresh || tile.need_refresh || tile.tile_id != tile_id
|
||||||
refresh_tile(tile, i, j, map, layer, tile_id)
|
refresh_tile(tile, i, j, map, layer, tile_id)
|
||||||
else
|
else
|
||||||
refresh_tile_frame(tile, tile_id) if tile.animated && @autotiles.changed
|
refresh_tile_frame(tile, tile_id) if tile.animated && @autotiles.changed
|
||||||
@@ -594,7 +597,7 @@ class TilemapRenderer
|
|||||||
col.each_with_index do |coord, j|
|
col.each_with_index do |coord, j|
|
||||||
next if visited[i][j]
|
next if visited[i][j]
|
||||||
coord.each do |tile|
|
coord.each do |tile|
|
||||||
tile.set_bitmap("", false, false, 0, nil)
|
tile.set_bitmap("", 0, false, false, 0, nil)
|
||||||
tile.shows_reflection = false
|
tile.shows_reflection = false
|
||||||
tile.bridge = false
|
tile.bridge = false
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -136,8 +136,7 @@ Events.onStepTakenFieldMovement += proc { |_sender,e|
|
|||||||
next if tile_id == nil
|
next if tile_id == nil
|
||||||
next if GameData::TerrainTag.try_get(map.terrain_tags[tile_id]).id != :SootGrass
|
next if GameData::TerrainTag.try_get(map.terrain_tags[tile_id]).id != :SootGrass
|
||||||
$player.soot += 1 if event == $game_player && $bag.has?(:SOOTSACK)
|
$player.soot += 1 if event == $game_player && $bag.has?(:SOOTSACK)
|
||||||
# map.data[thistile[1], thistile[2], i] = 0
|
map.erase_tile(thistile[1], thistile[2], i)
|
||||||
# $scene.createSingleSpriteset(map.map_id)
|
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user