diff --git a/Data/Scripts/005_Sprites/003_Sprite_Character.rb b/Data/Scripts/005_Sprites/003_Sprite_Character.rb index 2178062bb..00796a278 100644 --- a/Data/Scripts/005_Sprites/003_Sprite_Character.rb +++ b/Data/Scripts/005_Sprites/003_Sprite_Character.rb @@ -67,6 +67,8 @@ class Sprite_Character < RPG::Sprite @reflection = Sprite_Reflection.new(self, character, viewport) end @surfbase = Sprite_SurfBase.new(self, character, viewport) if character == $game_player + self.zoom_x = TilemapRenderer::ZOOM_X + self.zoom_y = TilemapRenderer::ZOOM_Y update end @@ -153,8 +155,12 @@ class Sprite_Character < RPG::Sprite pbDayNightTint(self) end end - self.x = @character.screen_x - self.y = @character.screen_y + this_x = @character.screen_x + this_x = ((this_x - (Graphics.width / 2)) * TilemapRenderer::ZOOM_X) + (Graphics.width / 2) if TilemapRenderer::ZOOM_X != 1 + self.x = this_x + this_y = @character.screen_y + this_y = ((this_y - (Graphics.height / 2)) * TilemapRenderer::ZOOM_Y) + (Graphics.height / 2) if TilemapRenderer::ZOOM_Y != 1 + self.y = this_y self.z = @character.screen_z(@ch) self.opacity = @character.opacity self.blend_type = @character.blend_type diff --git a/Data/Scripts/005_Sprites/004_Sprite_Reflection.rb b/Data/Scripts/005_Sprites/004_Sprite_Reflection.rb index 993dffba4..8ae3ec550 100644 --- a/Data/Scripts/005_Sprites/004_Sprite_Reflection.rb +++ b/Data/Scripts/005_Sprites/004_Sprite_Reflection.rb @@ -48,15 +48,15 @@ class Sprite_Reflection # Just-in-time creation of sprite @sprite = Sprite.new(@viewport) if !@sprite if @sprite - x = @rsprite.x - @rsprite.ox - y = @rsprite.y - @rsprite.oy - y -= 32 if @rsprite.character.character_name[/offset/i] + x = @rsprite.x - @rsprite.ox * TilemapRenderer::ZOOM_X + y = @rsprite.y - @rsprite.oy * TilemapRenderer::ZOOM_Y + y -= Game_Map::TILE_HEIGHT * TilemapRenderer::ZOOM_Y if @rsprite.character.character_name[/offset/i] @height = $PokemonGlobal.bridge if !@fixedheight - y += @height * 16 + y += @height * TilemapRenderer::ZOOM_Y * Game_Map::TILE_HEIGHT / 2 width = @rsprite.src_rect.width height = @rsprite.src_rect.height - @sprite.x = x + (width / 2) - @sprite.y = y + height + (height / 2) + @sprite.x = x + (width / 2) * TilemapRenderer::ZOOM_X + @sprite.y = y + (height + (height / 2)) * TilemapRenderer::ZOOM_Y @sprite.ox = width / 2 @sprite.oy = (height / 2) - 2 # Hard-coded 2 pixel shift up @sprite.oy -= @rsprite.character.bob_height * 2 diff --git a/Data/Scripts/005_Sprites/005_Sprite_SurfBase.rb b/Data/Scripts/005_Sprites/005_Sprite_SurfBase.rb index 457111518..094d0277a 100644 --- a/Data/Scripts/005_Sprites/005_Sprite_SurfBase.rb +++ b/Data/Scripts/005_Sprites/005_Sprite_SurfBase.rb @@ -63,8 +63,14 @@ class Sprite_SurfBase sy = ((@event.direction - 2) / 2) * ch @sprite.src_rect.set(sx, sy, cw, ch) if $game_temp.surf_base_coords - @sprite.x = ((($game_temp.surf_base_coords[0] * Game_Map::REAL_RES_X) - @event.map.display_x + 3) / 4) + (Game_Map::TILE_WIDTH / 2) - @sprite.y = ((($game_temp.surf_base_coords[1] * Game_Map::REAL_RES_Y) - @event.map.display_y + 3) / 4) + (Game_Map::TILE_HEIGHT / 2) + 16 + spr_x = ((($game_temp.surf_base_coords[0] * Game_Map::REAL_RES_X) - @event.map.display_x).to_f / Game_Map::X_SUBPIXELS).round + spr_x += (Game_Map::TILE_WIDTH / 2) + spr_x = ((spr_x - (Graphics.width / 2)) * TilemapRenderer::ZOOM_X) + (Graphics.width / 2) if TilemapRenderer::ZOOM_X != 1 + @sprite.x = spr_x + spr_y = ((($game_temp.surf_base_coords[1] * Game_Map::REAL_RES_Y) - @event.map.display_y).to_f / Game_Map::Y_SUBPIXELS).round + spr_y += (Game_Map::TILE_HEIGHT / 2) + 16 + spr_y = ((spr_y - (Graphics.height / 2)) * TilemapRenderer::ZOOM_Y) + (Graphics.height / 2) if TilemapRenderer::ZOOM_Y != 1 + @sprite.y = spr_y else @sprite.x = @rsprite.x @sprite.y = @rsprite.y diff --git a/Data/Scripts/006_Map renderer/001_TilemapRenderer.rb b/Data/Scripts/006_Map renderer/001_TilemapRenderer.rb index 904f8a2e8..bcaf77f91 100644 --- a/Data/Scripts/006_Map renderer/001_TilemapRenderer.rb +++ b/Data/Scripts/006_Map renderer/001_TilemapRenderer.rb @@ -15,6 +15,8 @@ class TilemapRenderer DISPLAY_TILE_HEIGHT = Game_Map::TILE_HEIGHT rescue 32 SOURCE_TILE_WIDTH = 32 SOURCE_TILE_HEIGHT = 32 + ZOOM_X = DISPLAY_TILE_WIDTH / SOURCE_TILE_WIDTH + ZOOM_Y = DISPLAY_TILE_HEIGHT / SOURCE_TILE_HEIGHT TILESET_TILES_PER_ROW = 8 AUTOTILES_COUNT = 8 # Counting the blank tile as an autotile TILES_PER_AUTOTILE = 48 @@ -245,7 +247,9 @@ class TilemapRenderer def set_bitmap(filename, tile_id, autotile, animated, priority, bitmap) self.bitmap = bitmap - self.src_rect = Rect.new(0, 0, DISPLAY_TILE_WIDTH, DISPLAY_TILE_HEIGHT) + self.src_rect = Rect.new(0, 0, SOURCE_TILE_WIDTH, SOURCE_TILE_HEIGHT) + self.zoom_x = ZOOM_X + self.zoom_y = ZOOM_Y @filename = filename @tile_id = tile_id @is_autotile = autotile @@ -420,7 +424,7 @@ class TilemapRenderer tile.z = 0 else priority = tile.priority - tile.z = (priority == 0) ? 0 : (y * DISPLAY_TILE_HEIGHT) + (priority * 32) + 32 + tile.z = (priority == 0) ? 0 : (y * SOURCE_TILE_HEIGHT) + (priority * SOURCE_TILE_HEIGHT) + SOURCE_TILE_HEIGHT end end @@ -453,8 +457,8 @@ class TilemapRenderer # Check for tile movement current_map_display_x = ($game_map.display_x.to_f / Game_Map::X_SUBPIXELS).round current_map_display_y = ($game_map.display_y.to_f / Game_Map::Y_SUBPIXELS).round - new_tile_offset_x = current_map_display_x / DISPLAY_TILE_WIDTH - new_tile_offset_y = current_map_display_y / DISPLAY_TILE_HEIGHT + new_tile_offset_x = (current_map_display_x / SOURCE_TILE_WIDTH) * ZOOM_X + new_tile_offset_y = (current_map_display_y / SOURCE_TILE_HEIGHT) * ZOOM_Y if new_tile_offset_x != @tile_offset_x if new_tile_offset_x > @tile_offset_x # Take tile stacks off the right and insert them at the beginning (left) @@ -503,8 +507,8 @@ class TilemapRenderer @tile_offset_y = new_tile_offset_y end # Check for pixel movement - new_pixel_offset_x = current_map_display_x % SOURCE_TILE_WIDTH - new_pixel_offset_y = current_map_display_y % SOURCE_TILE_HEIGHT + new_pixel_offset_x = (current_map_display_x % SOURCE_TILE_WIDTH) * ZOOM_X + new_pixel_offset_y = (current_map_display_y % SOURCE_TILE_HEIGHT) * ZOOM_Y if new_pixel_offset_x != @pixel_offset_x @screen_moved = true @pixel_offset_x = new_pixel_offset_x @@ -564,7 +568,9 @@ class TilemapRenderer $map_factory.maps.each do |map| # Calculate x/y ranges of tile sprites that represent them map_display_x = (map.display_x.to_f / Game_Map::X_SUBPIXELS).round + map_display_x = ((map_display_x + (Graphics.width / 2)) * ZOOM_X) - (Graphics.width / 2) if ZOOM_X != 1 map_display_y = (map.display_y.to_f / Game_Map::Y_SUBPIXELS).round + map_display_y = ((map_display_y + (Graphics.height / 2)) * ZOOM_Y) - (Graphics.height / 2) if ZOOM_Y != 1 map_display_x_tile = map_display_x / DISPLAY_TILE_WIDTH map_display_y_tile = map_display_y / DISPLAY_TILE_HEIGHT start_x = [-map_display_x_tile, 0].max