mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-06 06:01:46 +00:00
Fixes displaced hat/hair in pokemarts
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -36,6 +36,7 @@ class Game_Map
|
|||||||
attr_reader :display_x # display x-coordinate * 128
|
attr_reader :display_x # display x-coordinate * 128
|
||||||
attr_reader :display_y # display y-coordinate * 128
|
attr_reader :display_y # display y-coordinate * 128
|
||||||
attr_accessor :need_refresh # refresh request flag
|
attr_accessor :need_refresh # refresh request flag
|
||||||
|
attr_accessor :scroll_direction
|
||||||
|
|
||||||
TILE_WIDTH = 32
|
TILE_WIDTH = 32
|
||||||
TILE_HEIGHT = 32
|
TILE_HEIGHT = 32
|
||||||
|
|||||||
@@ -178,6 +178,12 @@ class Game_Player < Game_Character
|
|||||||
self.map.display_y = y * Game_Map::REAL_RES_Y - SCREEN_CENTER_Y
|
self.map.display_y = y * Game_Map::REAL_RES_Y - SCREEN_CENTER_Y
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
def isCentered()
|
||||||
|
x_centered = self.map.display_x == x * Game_Map::REAL_RES_X - SCREEN_CENTER_X
|
||||||
|
y_centered = self.map.display_y == y * Game_Map::REAL_RES_Y - SCREEN_CENTER_Y
|
||||||
|
return x_centered && y_centered
|
||||||
|
end
|
||||||
#-----------------------------------------------------------------------------
|
#-----------------------------------------------------------------------------
|
||||||
# * Move to Designated Position
|
# * Move to Designated Position
|
||||||
# x : x-coordinate
|
# x : x-coordinate
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ class Sprite_Wearable < RPG::Sprite
|
|||||||
attr_accessor :filename
|
attr_accessor :filename
|
||||||
attr_accessor :action
|
attr_accessor :action
|
||||||
attr_accessor :sprite
|
attr_accessor :sprite
|
||||||
|
attr_accessor :must_adjust_scroll
|
||||||
|
|
||||||
def initialize(player_sprite, filename, action, viewport)
|
def initialize(player_sprite, filename, action, viewport)
|
||||||
@player_sprite = player_sprite
|
@player_sprite = player_sprite
|
||||||
@@ -16,6 +17,8 @@ class Sprite_Wearable < RPG::Sprite
|
|||||||
@frameHeight = 80 #@sprite.height / 4
|
@frameHeight = 80 #@sprite.height / 4
|
||||||
@sprite.z = 0
|
@sprite.z = 0
|
||||||
@relative_z=0 #relative to player
|
@relative_z=0 #relative to player
|
||||||
|
@map_scrolled=false #true if the map has scrolled, false if centered on the player
|
||||||
|
@must_adjust_scroll = false #todo temp fix for weird pokemart scrolling glitch
|
||||||
echoln(_INTL("init had at z = {1}, player sprite at {2}",@sprite.z,@player_sprite.z))
|
echoln(_INTL("init had at z = {1}, player sprite at {2}",@sprite.z,@player_sprite.z))
|
||||||
|
|
||||||
#Unused position offset
|
#Unused position offset
|
||||||
@@ -28,6 +31,31 @@ class Sprite_Wearable < RPG::Sprite
|
|||||||
@sprite.y += offsets_array[current_frame][1]
|
@sprite.y += offsets_array[current_frame][1]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def adjustPositionForScreenScrolling
|
||||||
|
return if !$game_map.scrolling? && !(@map_scrolled && @must_adjust_scroll)
|
||||||
|
if $game_player.isCentered()
|
||||||
|
@map_scrolled=false
|
||||||
|
return
|
||||||
|
end
|
||||||
|
@map_scrolled=true if @must_adjust_scroll
|
||||||
|
offset_x = 0
|
||||||
|
offset_y = 0
|
||||||
|
@sprite.z+=10
|
||||||
|
case $game_map.scroll_direction
|
||||||
|
when DIRECTION_RIGHT
|
||||||
|
offset_x=-8
|
||||||
|
when DIRECTION_LEFT
|
||||||
|
offset_x=8
|
||||||
|
when DIRECTION_UP
|
||||||
|
offset_y=16
|
||||||
|
when DIRECTION_DOWN
|
||||||
|
offset_y=-16
|
||||||
|
end
|
||||||
|
@sprite.x+=offset_x
|
||||||
|
@sprite.y+=offset_y
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
def set_sprite_position(action, direction, current_frame)
|
def set_sprite_position(action, direction, current_frame)
|
||||||
@sprite.x = @player_sprite.x - @player_sprite.ox
|
@sprite.x = @player_sprite.x - @player_sprite.ox
|
||||||
@sprite.y = @player_sprite.y - @player_sprite.oy
|
@sprite.y = @player_sprite.y - @player_sprite.oy
|
||||||
@@ -86,6 +114,8 @@ class Sprite_Wearable < RPG::Sprite
|
|||||||
@sprite.x = @player_sprite.x - @player_sprite.ox
|
@sprite.x = @player_sprite.x - @player_sprite.ox
|
||||||
@sprite.y = @player_sprite.y - @player_sprite.oy
|
@sprite.y = @player_sprite.y - @player_sprite.oy
|
||||||
end
|
end
|
||||||
|
adjustPositionForScreenScrolling()
|
||||||
|
|
||||||
@sprite.y -= 2 if current_frame % 2 == 1
|
@sprite.y -= 2 if current_frame % 2 == 1
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,11 @@ class Sprite_Player < Sprite_Character
|
|||||||
getClothedPlayerSprite(true)
|
getClothedPlayerSprite(true)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def toggleWearableScrollAdjustments(value)
|
||||||
|
@hair.must_adjust_scroll = value
|
||||||
|
@hat.must_adjust_scroll = value
|
||||||
|
end
|
||||||
|
|
||||||
def updateCharacterBitmap
|
def updateCharacterBitmap
|
||||||
skinTone = $Trainer.skin_tone ? $Trainer.skin_tone : 0
|
skinTone = $Trainer.skin_tone ? $Trainer.skin_tone : 0
|
||||||
baseBitmapFilename = getBaseOverworldSpriteFilename(@character_name, skinTone)
|
baseBitmapFilename = getBaseOverworldSpriteFilename(@character_name, skinTone)
|
||||||
@@ -78,9 +83,7 @@ class Sprite_Player < Sprite_Character
|
|||||||
return baseBitmap
|
return baseBitmap
|
||||||
end
|
end
|
||||||
|
|
||||||
def positionHair(baseBitmap, hairBirmap, offset)
|
|
||||||
baseBitmap.blt(offset[0], offset[1], hairBirmap, hairBirmap.rect)
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
def update
|
def update
|
||||||
|
|||||||
@@ -236,6 +236,7 @@ class PokemonMart_Scene
|
|||||||
|
|
||||||
def pbStartBuyOrSellScene(buying, stock, adapter)
|
def pbStartBuyOrSellScene(buying, stock, adapter)
|
||||||
# Scroll right before showing screen
|
# Scroll right before showing screen
|
||||||
|
$scene.spritesetGlobal.playersprite.toggleWearableScrollAdjustments(true) # todo temp
|
||||||
scroll_map()
|
scroll_map()
|
||||||
@viewport = Viewport.new(0, 0, Graphics.width, Graphics.height)
|
@viewport = Viewport.new(0, 0, Graphics.width, Graphics.height)
|
||||||
@viewport.z = 99999
|
@viewport.z = 99999
|
||||||
@@ -277,6 +278,8 @@ class PokemonMart_Scene
|
|||||||
@buying = buying
|
@buying = buying
|
||||||
pbRefresh
|
pbRefresh
|
||||||
Graphics.frame_reset
|
Graphics.frame_reset
|
||||||
|
$scene.spritesetGlobal.playersprite.toggleWearableScrollAdjustments(false) # todo temp
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def pbStartBuyScene(stock, adapter)
|
def pbStartBuyScene(stock, adapter)
|
||||||
|
|||||||
Binary file not shown.
Reference in New Issue
Block a user