From b551b178a4d261df879e98ce15299c326bdcbaee Mon Sep 17 00:00:00 2001 From: Bastien Duplessier Date: Sun, 29 Jul 2018 19:01:13 +0200 Subject: [PATCH 1/7] Fixes spritesheets erase and clear commands https://github.com/RMEx/RME/issues/410 --- CHANGELOG.md | 5 +++++ RME.rb | 8 ++++++++ src/EvEx.rb | 8 ++++++++ 3 files changed, 21 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a98859e1..9785e0b7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # RME Changelog +## Release (1.4.1) + +### Bug fixes +- Fix `spritesheet_erase` and `spritesheets_clear` (@BastienDuplessier, reported by @Princesseuh) + ## Release (1.4.0) ### Additions diff --git a/RME.rb b/RME.rb index 3f400156..b6838fa6 100644 --- a/RME.rb +++ b/RME.rb @@ -9954,6 +9954,14 @@ def show(name, rows, columns, index, origin, x, y, zoom_x, zoom_y, opacity, blen self.current = index @dirty = true end + #-------------------------------------------------------------------------- + # * Erase Picture + #-------------------------------------------------------------------------- + def erase + super + @dirty = true + end + end #============================================================================== diff --git a/src/EvEx.rb b/src/EvEx.rb index 5baa88ad..bc4d5850 100644 --- a/src/EvEx.rb +++ b/src/EvEx.rb @@ -3844,6 +3844,14 @@ def show(name, rows, columns, index, origin, x, y, zoom_x, zoom_y, opacity, blen self.current = index @dirty = true end + #-------------------------------------------------------------------------- + # * Erase Picture + #-------------------------------------------------------------------------- + def erase + super + @dirty = true + end + end #============================================================================== From fb969c76b3ce450c619709c5cfa79f24da6e4317 Mon Sep 17 00:00:00 2001 From: Bastien Duplessier Date: Sun, 29 Jul 2018 19:42:21 +0200 Subject: [PATCH 2/7] Fix `event_look_towards?` and `event_look_towards_event?` https://github.com/RMEx/RME/issues/411 --- CHANGELOG.md | 1 + RME.rb | 8 ++++---- src/Commands.rb | 8 ++++---- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9785e0b7..749e21cb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ ### Bug fixes - Fix `spritesheet_erase` and `spritesheets_clear` (@BastienDuplessier, reported by @Princesseuh) +- Fix `event_look_towards?` and `event_look_towards_event?` (@BastienDuplessier, reported by @Azvnrd) ## Release (1.4.0) diff --git a/RME.rb b/RME.rb index b6838fa6..c1d94161 100644 --- a/RME.rb +++ b/RME.rb @@ -13469,13 +13469,13 @@ def event_look_towards?(source, x, y, scope) ex, ey = event_x(source), event_y(source) case event_direction(source) when Direction::UP - distance = ey - y - x_axis = (ex >= x - distance) && (ex <= x + distance) - y_axis = ey > y - when Direction::DOWN distance = y - ey x_axis = (ex >= x - distance) && (ex <= x + distance) y_axis = ey < y + when Direction::DOWN + distance = ey - y + x_axis = (ex >= x - distance) && (ex <= x + distance) + y_axis = ey > y when Direction::LEFT distance = ex - x x_axis = ex > x diff --git a/src/Commands.rb b/src/Commands.rb index 6e3bed33..46a81c96 100644 --- a/src/Commands.rb +++ b/src/Commands.rb @@ -2102,13 +2102,13 @@ def event_look_towards?(source, x, y, scope) ex, ey = event_x(source), event_y(source) case event_direction(source) when Direction::UP - distance = ey - y - x_axis = (ex >= x - distance) && (ex <= x + distance) - y_axis = ey > y - when Direction::DOWN distance = y - ey x_axis = (ex >= x - distance) && (ex <= x + distance) y_axis = ey < y + when Direction::DOWN + distance = ey - y + x_axis = (ex >= x - distance) && (ex <= x + distance) + y_axis = ey > y when Direction::LEFT distance = ex - x x_axis = ex > x From a328715400e3227e276dcf7521b8e5d957deec29 Mon Sep 17 00:00:00 2001 From: Bastien Duplessier Date: Sun, 29 Jul 2018 20:06:21 +0200 Subject: [PATCH 3/7] Fix `pixel_in_event?` and `pixel_in_player?` https://github.com/RMEx/RME/issues/413 --- CHANGELOG.md | 1 + RME.rb | 7 +++++++ src/EvEx.rb | 7 +++++++ 3 files changed, 15 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 749e21cb..726b5bc4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ ### Bug fixes - Fix `spritesheet_erase` and `spritesheets_clear` (@BastienDuplessier, reported by @Princesseuh) - Fix `event_look_towards?` and `event_look_towards_event?` (@BastienDuplessier, reported by @Azvnrd) +- Fix `pixel_in_event?` and `pixel_in_player?` (@BastienDuplessier, reported by @acs-l) ## Release (1.4.0) diff --git a/RME.rb b/RME.rb index c1d94161..3bf00f8d 100644 --- a/RME.rb +++ b/RME.rb @@ -7168,6 +7168,13 @@ def release?(key = :mouse_left, pr = false) return false unless k_sprite k_sprite.release?(key, pr) end + #-------------------------------------------------------------------------- + # * Is pixel in sprite ? + #-------------------------------------------------------------------------- + def pixel_in?(x, y, precise = false) + return false unless k_sprite + precise ? k_sprite.precise_in?(x, y) : k_sprite.in?(x, y) + end end #============================================================================== # ** API diff --git a/src/EvEx.rb b/src/EvEx.rb index bc4d5850..4334d7ff 100644 --- a/src/EvEx.rb +++ b/src/EvEx.rb @@ -1058,6 +1058,13 @@ def release?(key = :mouse_left, pr = false) return false unless k_sprite k_sprite.release?(key, pr) end + #-------------------------------------------------------------------------- + # * Is pixel in sprite ? + #-------------------------------------------------------------------------- + def pixel_in?(x, y, precise = false) + return false unless k_sprite + precise ? k_sprite.precise_in?(x, y) : k_sprite.in?(x, y) + end end #============================================================================== # ** API From 26dfd53ab90500bb5d559c32f8d20462fbd053a0 Mon Sep 17 00:00:00 2001 From: Bastien Duplessier Date: Sun, 29 Jul 2018 20:16:31 +0200 Subject: [PATCH 4/7] Fix `page_runnable?` https://github.com/RMEx/RME/issues/415 --- CHANGELOG.md | 1 + RME.rb | 2 +- src/Commands.rb | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 726b5bc4..c0a1f569 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ - Fix `spritesheet_erase` and `spritesheets_clear` (@BastienDuplessier, reported by @Princesseuh) - Fix `event_look_towards?` and `event_look_towards_event?` (@BastienDuplessier, reported by @Azvnrd) - Fix `pixel_in_event?` and `pixel_in_player?` (@BastienDuplessier, reported by @acs-l) +- Fix `page_runnable?` (@BastienDuplessier, reported by @acs-l) ## Release (1.4.0) diff --git a/RME.rb b/RME.rb index 3bf00f8d..2c8f6d7b 100644 --- a/RME.rb +++ b/RME.rb @@ -12865,7 +12865,7 @@ def fresh_event_id(erased = false) #-------------------------------------------------------------------------- def page_runnable?(map_id, ev_id, page, context=false) return unless self.class == Game_Interpreter - page = Game_Interpreter.get_page(map_id, ev_id, p_id) if page.is_a?(Fixnum) + page = Game_Interpreter.get_page(map_id, ev_id, page) if page.is_a?(Fixnum) return unless page return Game_Interpreter.conditions_met?(map_id, ev_id, page) if context c_map_id = Game_Interpreter.current_map_id diff --git a/src/Commands.rb b/src/Commands.rb index 46a81c96..0393dad8 100644 --- a/src/Commands.rb +++ b/src/Commands.rb @@ -1491,7 +1491,7 @@ def fresh_event_id(erased = false) #-------------------------------------------------------------------------- def page_runnable?(map_id, ev_id, page, context=false) return unless self.class == Game_Interpreter - page = Game_Interpreter.get_page(map_id, ev_id, p_id) if page.is_a?(Fixnum) + page = Game_Interpreter.get_page(map_id, ev_id, page) if page.is_a?(Fixnum) return unless page return Game_Interpreter.conditions_met?(map_id, ev_id, page) if context c_map_id = Game_Interpreter.current_map_id From 730305f34a0b874819dd0a30d3fddd5153a650af Mon Sep 17 00:00:00 2001 From: Bastien Duplessier Date: Sun, 29 Jul 2018 20:45:22 +0200 Subject: [PATCH 5/7] Fix `event_move_with` https://github.com/RMEx/RME/issues/409 --- CHANGELOG.md | 1 + RME.rb | 2 ++ src/Commands.rb | 2 ++ 3 files changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c0a1f569..f051148e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ - Fix `event_look_towards?` and `event_look_towards_event?` (@BastienDuplessier, reported by @Azvnrd) - Fix `pixel_in_event?` and `pixel_in_player?` (@BastienDuplessier, reported by @acs-l) - Fix `page_runnable?` (@BastienDuplessier, reported by @acs-l) +- Fix `event_move_with`, move is not repeatable anymore (@BastienDuplessier, reported by @Zer0xxxxx) ## Release (1.4.0) diff --git a/RME.rb b/RME.rb index 2c8f6d7b..a14bd482 100644 --- a/RME.rb +++ b/RME.rb @@ -13843,7 +13843,9 @@ def player_opacity(value = nil) def event_move_with(id, *code) route = RPG::MoveRoute.new + route.repeat = false route.list = code.map {|i| RPG::MoveCommand.new(i)} + route.list << RPG::MoveCommand.new(0) event(id).force_move_route(route) end diff --git a/src/Commands.rb b/src/Commands.rb index 0393dad8..3f7188fc 100644 --- a/src/Commands.rb +++ b/src/Commands.rb @@ -2469,7 +2469,9 @@ def player_opacity(value = nil) def event_move_with(id, *code) route = RPG::MoveRoute.new + route.repeat = false route.list = code.map {|i| RPG::MoveCommand.new(i)} + route.list << RPG::MoveCommand.new(0) event(id).force_move_route(route) end From 55fb36720c80b254c39c3cfd91e6b3e1d6694bd2 Mon Sep 17 00:00:00 2001 From: Bastien Duplessier Date: Wed, 1 Aug 2018 01:17:16 +0200 Subject: [PATCH 6/7] Fix `invoke_event` don't rebuild all spriteset_map when calling https://github.com/RMEx/RME/issues/382 --- CHANGELOG.md | 1 + RME.rb | 18 ++++++++++++++++-- src/EvEx.rb | 18 ++++++++++++++++-- 3 files changed, 33 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f051148e..12cf1fdb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ - Fix `pixel_in_event?` and `pixel_in_player?` (@BastienDuplessier, reported by @acs-l) - Fix `page_runnable?` (@BastienDuplessier, reported by @acs-l) - Fix `event_move_with`, move is not repeatable anymore (@BastienDuplessier, reported by @Zer0xxxxx) +- Fix `invoke_event` which was stopping animations when called (@BastienDuplessier, reported by @YendaHusk) ## Release (1.4.0) diff --git a/RME.rb b/RME.rb index a14bd482..a2bd5c9b 100644 --- a/RME.rb +++ b/RME.rb @@ -8850,6 +8850,12 @@ def refresh_message @message_window.dispose @message_window = Window_Message.new end + #-------------------------------------------------------------------------- + # * Add Event sprite into spriteset + #-------------------------------------------------------------------------- + def add_event_sprite(event) + @spriteset.add_event_sprite(event) + end #-------------------------------------------------------------------------- # * Update All Windows @@ -9171,14 +9177,15 @@ def add_event(map_id, event_id, new_id,x=nil,y=nil) return unless event event.id = new_id clone_events = @events.clone - clone_events.store(new_id, Game_Event.new(@map_id, event)) + new_event = Game_Event.new(@map_id, event) + clone_events.store(new_id, new_event) x ||= event.x y ||= event.y @events = clone_events @events[new_id].moveto(x, y) @need_refresh = true @max_event_id = [@max_event_id, new_id].max - SceneManager.scene.refresh_spriteset + SceneManager.scene.add_event_sprite(new_event) end #-------------------------------------------------------------------------- # * Clear parallaxes @@ -10219,6 +10226,13 @@ def update_parallax end rm_extender_update_parallax end + #-------------------------------------------------------------------------- + # * Add Event Sprite to Characters + #-------------------------------------------------------------------------- + def add_event_sprite(event) + sp = Sprite_Character.new(@viewport1, event) + @character_sprites.push(sp) + end end #============================================================================== diff --git a/src/EvEx.rb b/src/EvEx.rb index 4334d7ff..e70deb5b 100644 --- a/src/EvEx.rb +++ b/src/EvEx.rb @@ -2740,6 +2740,12 @@ def refresh_message @message_window.dispose @message_window = Window_Message.new end + #-------------------------------------------------------------------------- + # * Add Event sprite into spriteset + #-------------------------------------------------------------------------- + def add_event_sprite(event) + @spriteset.add_event_sprite(event) + end #-------------------------------------------------------------------------- # * Update All Windows @@ -3061,14 +3067,15 @@ def add_event(map_id, event_id, new_id,x=nil,y=nil) return unless event event.id = new_id clone_events = @events.clone - clone_events.store(new_id, Game_Event.new(@map_id, event)) + new_event = Game_Event.new(@map_id, event) + clone_events.store(new_id, new_event) x ||= event.x y ||= event.y @events = clone_events @events[new_id].moveto(x, y) @need_refresh = true @max_event_id = [@max_event_id, new_id].max - SceneManager.scene.refresh_spriteset + SceneManager.scene.add_event_sprite(new_event) end #-------------------------------------------------------------------------- # * Clear parallaxes @@ -4109,6 +4116,13 @@ def update_parallax end rm_extender_update_parallax end + #-------------------------------------------------------------------------- + # * Add Event Sprite to Characters + #-------------------------------------------------------------------------- + def add_event_sprite(event) + sp = Sprite_Character.new(@viewport1, event) + @character_sprites.push(sp) + end end #============================================================================== From 80df4cdaa0fa8e1b805068cfd079f8789a3e3671 Mon Sep 17 00:00:00 2001 From: Bastien Duplessier Date: Fri, 3 Aug 2018 19:56:55 +0200 Subject: [PATCH 7/7] Fix `switch_tileset`, now does not reset ox/oy of events sprites https://github.com/RMEx/RME/issues/418 --- CHANGELOG.md | 1 + RME.rb | 22 +++++++++++++++++++--- src/Commands.rb | 2 +- src/EvEx.rb | 20 ++++++++++++++++++-- 4 files changed, 39 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 12cf1fdb..74125e84 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ - Fix `page_runnable?` (@BastienDuplessier, reported by @acs-l) - Fix `event_move_with`, move is not repeatable anymore (@BastienDuplessier, reported by @Zer0xxxxx) - Fix `invoke_event` which was stopping animations when called (@BastienDuplessier, reported by @YendaHusk) +- Fix `switch_tileset`, now does not reset ox/oy of events sprites (@BastienDuplessier, reported by @YendaHusk) ## Release (1.4.0) diff --git a/RME.rb b/RME.rb index a2bd5c9b..98380eec 100644 --- a/RME.rb +++ b/RME.rb @@ -7545,10 +7545,12 @@ class << self attr_accessor :light_emitter attr_accessor :tone attr_accessor :allow_overlap + attr_accessor :changing_graphics attr_reader :id alias_method :allow_overlap?, :allow_overlap alias_method :rme_collide_with_characters?, :collide_with_characters? + alias_method :rme_set_graphic, :set_graphic #-------------------------------------------------------------------------- # * Initialisation du Buzzer #-------------------------------------------------------------------------- @@ -7577,6 +7579,7 @@ def initialize @rect = Rect.new(0,0,0,0) @sprite_index init_tone + @changing_graphics = false end #-------------------------------------------------------------------------- @@ -7771,6 +7774,13 @@ def collide_with_characters?(x, y) return false if allow_overlap? rme_collide_with_characters?(x, y) end + #-------------------------------------------------------------------------- + # * Change Graphics + #-------------------------------------------------------------------------- + def set_graphic(character_name, character_index) + rme_set_graphic(character_name, character_index) + @changing_graphics = true + end end @@ -8004,8 +8014,14 @@ def initialize(viewport, character = nil) #-------------------------------------------------------------------------- def set_character_bitmap rm_extender_set_character_bitmap - character.ox = self.ox - character.oy = self.oy + if character.changing_graphics || (character.ox.nil? && character.oy.nil?) + character.ox = self.ox + character.oy = self.oy + else + self.ox = character.ox + self.oy = character.oy + end + character.changing_graphics = false @old_buzz = 0 @origin_len_x = self.zoom_x end @@ -11609,7 +11625,7 @@ def get_tileset_id end def switch_tileset(tileset_id) - $game_map.tileset_id = tileset_id + $game_map.change_tileset(tileset_id) end def set_tile(value, x, y, layer) diff --git a/src/Commands.rb b/src/Commands.rb index 3f7188fc..e1c21577 100644 --- a/src/Commands.rb +++ b/src/Commands.rb @@ -221,7 +221,7 @@ def get_tileset_id end def switch_tileset(tileset_id) - $game_map.tileset_id = tileset_id + $game_map.change_tileset(tileset_id) end def set_tile(value, x, y, layer) diff --git a/src/EvEx.rb b/src/EvEx.rb index e70deb5b..d0c909d1 100644 --- a/src/EvEx.rb +++ b/src/EvEx.rb @@ -1435,10 +1435,12 @@ class << self attr_accessor :light_emitter attr_accessor :tone attr_accessor :allow_overlap + attr_accessor :changing_graphics attr_reader :id alias_method :allow_overlap?, :allow_overlap alias_method :rme_collide_with_characters?, :collide_with_characters? + alias_method :rme_set_graphic, :set_graphic #-------------------------------------------------------------------------- # * Initialisation du Buzzer #-------------------------------------------------------------------------- @@ -1467,6 +1469,7 @@ def initialize @rect = Rect.new(0,0,0,0) @sprite_index init_tone + @changing_graphics = false end #-------------------------------------------------------------------------- @@ -1661,6 +1664,13 @@ def collide_with_characters?(x, y) return false if allow_overlap? rme_collide_with_characters?(x, y) end + #-------------------------------------------------------------------------- + # * Change Graphics + #-------------------------------------------------------------------------- + def set_graphic(character_name, character_index) + rme_set_graphic(character_name, character_index) + @changing_graphics = true + end end @@ -1894,8 +1904,14 @@ def initialize(viewport, character = nil) #-------------------------------------------------------------------------- def set_character_bitmap rm_extender_set_character_bitmap - character.ox = self.ox - character.oy = self.oy + if character.changing_graphics || (character.ox.nil? && character.oy.nil?) + character.ox = self.ox + character.oy = self.oy + else + self.ox = character.ox + self.oy = character.oy + end + character.changing_graphics = false @old_buzz = 0 @origin_len_x = self.zoom_x end