mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-08 05:34:58 +00:00
Merged Events and EncounterModifier into module EventHandlers
This commit is contained in:
@@ -156,7 +156,7 @@ class Scene_Map
|
||||
@spritesetGlobal.update
|
||||
pbDayNightTint(@map_renderer)
|
||||
@map_renderer.update
|
||||
Events.onMapUpdate.trigger(self)
|
||||
EventHandlers.trigger(:on_frame_update)
|
||||
end
|
||||
|
||||
def update
|
||||
@@ -214,7 +214,7 @@ class Scene_Map
|
||||
elsif $game_temp.interact_calling
|
||||
$game_temp.interact_calling = false
|
||||
$game_player.straighten
|
||||
Events.onAction.trigger(self)
|
||||
EventHandlers.trigger(:on_player_interact)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -60,7 +60,38 @@ class Event
|
||||
end
|
||||
|
||||
#===============================================================================
|
||||
#
|
||||
# Same as class Event, but each registered proc has a name (a symbol) so it can
|
||||
# be referenced individually.
|
||||
#===============================================================================
|
||||
class NamedEvent
|
||||
def initialize
|
||||
@callbacks = {}
|
||||
end
|
||||
|
||||
# Adds an event handler procedure from the event.
|
||||
def add(key, proc)
|
||||
@callbacks[key] = proc if !@callbacks.has_key?(key)
|
||||
end
|
||||
|
||||
# Removes an event handler procedure from the event.
|
||||
def remove(key)
|
||||
@callbacks.delete(key)
|
||||
end
|
||||
|
||||
# Clears the event of event handlers.
|
||||
def clear
|
||||
@callbacks.clear
|
||||
end
|
||||
|
||||
# Triggers the event and calls all its event handlers. Normally called only
|
||||
# by the code where the event occurred.
|
||||
def trigger(*args)
|
||||
@callbacks.each_value { |callback| callback.call(*args) }
|
||||
end
|
||||
end
|
||||
|
||||
#===============================================================================
|
||||
# Unused.
|
||||
#===============================================================================
|
||||
class HandlerHash
|
||||
def initialize(mod)
|
||||
@@ -144,7 +175,8 @@ end
|
||||
|
||||
#===============================================================================
|
||||
# A stripped-down version of class HandlerHash which only deals with symbols and
|
||||
# doesn't care about whether those symbols actually relate to a defined thing.
|
||||
# doesn't care about whether those symbols are defined as constants in a class
|
||||
# or module.
|
||||
#===============================================================================
|
||||
class HandlerHash2
|
||||
def initialize
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
#===============================================================================
|
||||
# This module stores events that can happen during the game. A procedure can
|
||||
# subscribe to an event by adding itself to the event. It will then be called
|
||||
# whenever the event occurs. Existing events are:
|
||||
#-------------------------------------------------------------------------------
|
||||
# :on_game_map_setup - When a Game_Map is set up. Typically changes map data.
|
||||
# :on_new_spriteset_map - When a Spriteset_Map is created. Adds more things to
|
||||
# show in the overworld.
|
||||
# :on_frame_update - Once per frame. Various frame/time counters.
|
||||
# :on_leave_map - When leaving a map. End weather/expired effects.
|
||||
# :on_enter_map - Upon entering a new map. Set up new effects, end expired
|
||||
# effects.
|
||||
# :on_map_or_spriteset_change - Upon entering a new map or when spriteset was
|
||||
# made. Show things on-screen.
|
||||
#-------------------------------------------------------------------------------
|
||||
# :on_player_change_direction - When the player turns in a different direction.
|
||||
# :on_leave_tile - When any event or the player starts to move from a tile.
|
||||
# :on_step_taken - When any event or the player finishes a step.
|
||||
# :on_player_step_taken - When the player finishes a step/ends surfing, except
|
||||
# as part of a move route. Step-based counters.
|
||||
# :on_player_step_taken_can_transfer - When the player finishes a step/ends
|
||||
# surfing, except as part of a move route. Step-based effects that can
|
||||
# transfer the player elsewhere.
|
||||
# :on_player_interact - When the player presses the Use button in the
|
||||
# overworld.
|
||||
#-------------------------------------------------------------------------------
|
||||
# :on_trainer_load - When an NPCTrainer is generated (to battle against or as
|
||||
# a registered partner). Various modifications to that trainer and their
|
||||
# Pokémon.
|
||||
# :on_wild_species_chosen - When a species/level have been chosen for a wild
|
||||
# encounter. Changes the species/level (e.g. roamer, Poké Radar chain).
|
||||
# :on_wild_pokemon_created - When a Pokemon object has been created for a wild
|
||||
# encounter. Various modifications to that Pokémon.
|
||||
# :on_calling_wild_battle - When a wild battle is called. Prevents that wild
|
||||
# battle and instead starts a different kind of battle (e.g. Safari Zone).
|
||||
# :on_start_battle - Just before a battle starts. Memorize/reset information
|
||||
# about party Pokémon, which is used after battle for evolution checks.
|
||||
# :on_end_battle - Just after a battle ends. Evolution checks, Pickup/Honey
|
||||
# Gather, blacking out.
|
||||
# :on_wild_battle_end - After a wild battle. Updates Poké Radar chain info.
|
||||
#===============================================================================
|
||||
module EventHandlers
|
||||
@@events = {}
|
||||
|
||||
# Add a named callback for the given event.
|
||||
def self.add(event, key, proc)
|
||||
@@events[event] = NamedEvent.new if !@@events.has_key?(event)
|
||||
@@events[event].add(key, proc)
|
||||
end
|
||||
|
||||
# Remove a named callback from the given event.
|
||||
def self.remove(event, key)
|
||||
@@events[event]&.remove(key)
|
||||
end
|
||||
|
||||
# Clear all callbacks for the given event.
|
||||
def self.clear(key)
|
||||
@@events[key]&.clear
|
||||
end
|
||||
|
||||
# Trigger all callbacks from an Event if it has been defined.
|
||||
def self.trigger(event, *args)
|
||||
return @@events[event]&.trigger(*args)
|
||||
end
|
||||
end
|
||||
@@ -1,172 +0,0 @@
|
||||
#===============================================================================
|
||||
# This module stores events that can happen during the game. A procedure can
|
||||
# subscribe to an event by adding itself to the event. It will then be called
|
||||
# whenever the event occurs.
|
||||
#===============================================================================
|
||||
module Events
|
||||
@@OnMapCreate = Event.new
|
||||
@@OnMapUpdate = Event.new
|
||||
@@OnMapChange = Event.new
|
||||
@@OnMapChanging = Event.new
|
||||
@@OnMapSceneChange = Event.new
|
||||
@@OnSpritesetCreate = Event.new
|
||||
@@OnAction = Event.new
|
||||
@@OnStepTaken = Event.new
|
||||
@@OnLeaveTile = Event.new
|
||||
@@OnStepTakenFieldMovement = Event.new
|
||||
@@OnStepTakenTransferPossible = Event.new
|
||||
@@OnStartBattle = Event.new
|
||||
@@OnEndBattle = Event.new
|
||||
@@OnWildPokemonCreate = Event.new
|
||||
@@OnWildBattleOverride = Event.new
|
||||
@@OnWildBattleEnd = Event.new
|
||||
@@OnTrainerPartyLoad = Event.new
|
||||
@@OnChangeDirection = Event.new
|
||||
|
||||
# Fires whenever a map is created. Event handler receives two parameters: the
|
||||
# map (RPG::Map) and the tileset (RPG::Tileset)
|
||||
def self.onMapCreate; @@OnMapCreate; end
|
||||
def self.onMapCreate=(v); @@OnMapCreate = v; end
|
||||
|
||||
# Fires each frame during a map update.
|
||||
def self.onMapUpdate; @@OnMapUpdate; end
|
||||
def self.onMapUpdate=(v); @@OnMapUpdate = v; end
|
||||
|
||||
# Fires whenever one map is about to change to a different one. Event handler
|
||||
# receives the new map ID and the Game_Map object representing the new map.
|
||||
# When the event handler is called, $game_map still refers to the old map.
|
||||
def self.onMapChanging; @@OnMapChanging; end
|
||||
def self.onMapChanging=(v); @@OnMapChanging = v; end
|
||||
|
||||
# Fires whenever the player moves to a new map. Event handler receives the old
|
||||
# map ID or 0 if none. Also fires when the first map of the game is loaded
|
||||
def self.onMapChange; @@OnMapChange; end
|
||||
def self.onMapChange=(v); @@OnMapChange = v; end
|
||||
|
||||
# Fires whenever the map scene is regenerated and soon after the player moves
|
||||
# to a new map.
|
||||
# Parameters:
|
||||
# e[0] - Scene_Map object.
|
||||
# e[1] - Whether the player just moved to a new map (either true or false). If
|
||||
# false, some other code had called $scene.createSpritesets to
|
||||
# regenerate the map scene without transferring the player elsewhere
|
||||
def self.onMapSceneChange; @@OnMapSceneChange; end
|
||||
def self.onMapSceneChange=(v); @@OnMapSceneChange = v; end
|
||||
|
||||
# Fires whenever a spriteset is created.
|
||||
# Parameters:
|
||||
# e[0] - Spriteset being created. e[0].map is the map associated with the
|
||||
# spriteset (not necessarily the current map).
|
||||
# e[1] - Viewport used for tilemap and characters
|
||||
def self.onSpritesetCreate; @@OnSpritesetCreate; end
|
||||
def self.onSpritesetCreate=(v); @@OnSpritesetCreate = v; end
|
||||
|
||||
# Triggers when the player presses the Action button on the map.
|
||||
def self.onAction; @@OnAction; end
|
||||
def self.onAction=(v); @@OnAction = v; end
|
||||
|
||||
# Fires whenever the player takes a step.
|
||||
def self.onStepTaken; @@OnStepTaken; end
|
||||
def self.onStepTaken=(v); @@OnStepTaken = v; end
|
||||
|
||||
# Fires whenever the player or another event leaves a tile.
|
||||
# Parameters:
|
||||
# e[0] - Event that just left the tile.
|
||||
# e[1] - Map ID where the tile is located (not necessarily
|
||||
# the current map). Use "$map_factory.getMap(e[1])" to
|
||||
# get the Game_Map object corresponding to that map.
|
||||
# e[2] - X-coordinate of the tile
|
||||
# e[3] - Y-coordinate of the tile
|
||||
def self.onLeaveTile; @@OnLeaveTile; end
|
||||
def self.onLeaveTile=(v); @@OnLeaveTile = v; end
|
||||
|
||||
# Fires whenever the player or another event enters a tile.
|
||||
# Parameters:
|
||||
# e[0] - Event that just entered a tile.
|
||||
def self.onStepTakenFieldMovement; @@OnStepTakenFieldMovement; end
|
||||
def self.onStepTakenFieldMovement=(v); @@OnStepTakenFieldMovement = v; end
|
||||
|
||||
# Fires whenever the player takes a step. The event handler may possibly move
|
||||
# the player elsewhere.
|
||||
# Parameters:
|
||||
# e[0] - Array that contains a single boolean value. If an event handler moves
|
||||
# the player to a new map, it should set this value to true. Other
|
||||
# event handlers should check this parameter's value.
|
||||
def self.onStepTakenTransferPossible; @@OnStepTakenTransferPossible; end
|
||||
def self.onStepTakenTransferPossible=(v); @@OnStepTakenTransferPossible = v; end
|
||||
|
||||
def self.onStartBattle; @@OnStartBattle; end
|
||||
def self.onStartBattle=(v); @@OnStartBattle = v; end
|
||||
|
||||
def self.onEndBattle; @@OnEndBattle; end
|
||||
def self.onEndBattle=(v); @@OnEndBattle = v; end
|
||||
|
||||
# Triggers whenever a wild Pokémon is created
|
||||
# Parameters:
|
||||
# e[0] - Pokémon being created
|
||||
def self.onWildPokemonCreate; @@OnWildPokemonCreate; end
|
||||
def self.onWildPokemonCreate=(v); @@OnWildPokemonCreate = v; end
|
||||
|
||||
# Triggers at the start of a wild battle. Event handlers can provide their
|
||||
# own wild battle routines to override the default behavior.
|
||||
def self.onWildBattleOverride; @@OnWildBattleOverride; end
|
||||
def self.onWildBattleOverride=(v); @@OnWildBattleOverride = v; end
|
||||
|
||||
# Triggers whenever a wild Pokémon battle ends
|
||||
# Parameters:
|
||||
# e[0] - Pokémon species
|
||||
# e[1] - Pokémon level
|
||||
# e[2] - Battle result (1-win, 2-loss, 3-escaped, 4-caught, 5-draw)
|
||||
def self.onWildBattleEnd; @@OnWildBattleEnd; end
|
||||
def self.onWildBattleEnd=(v); @@OnWildBattleEnd = v; end
|
||||
|
||||
# Triggers whenever an NPC trainer's Pokémon party is loaded
|
||||
# Parameters:
|
||||
# e[0] - Trainer
|
||||
# e[1] - Items possessed by the trainer
|
||||
# e[2] - Party
|
||||
def self.onTrainerPartyLoad; @@OnTrainerPartyLoad; end
|
||||
def self.onTrainerPartyLoad=(v); @@OnTrainerPartyLoad = v; end
|
||||
|
||||
# Fires whenever the player changes direction.
|
||||
def self.onChangeDirection; @@OnChangeDirection; end
|
||||
def self.onChangeDirection=(v); @@OnChangeDirection = v; end
|
||||
end
|
||||
|
||||
#===============================================================================
|
||||
#
|
||||
#===============================================================================
|
||||
def pbOnSpritesetCreate(spriteset, viewport)
|
||||
Events.onSpritesetCreate.trigger(nil, spriteset, viewport)
|
||||
end
|
||||
|
||||
#===============================================================================
|
||||
# This module stores encounter-modifying events that can happen during the game.
|
||||
# A procedure can subscribe to an event by adding itself to the event. It will
|
||||
# then be called whenever the event occurs.
|
||||
#===============================================================================
|
||||
module EncounterModifier
|
||||
@@procs = []
|
||||
@@procsEnd = []
|
||||
|
||||
def self.register(p)
|
||||
@@procs.push(p)
|
||||
end
|
||||
|
||||
def self.registerEncounterEnd(p)
|
||||
@@procsEnd.push(p)
|
||||
end
|
||||
|
||||
def self.trigger(encounter)
|
||||
@@procs.each do |prc|
|
||||
encounter = prc.call(encounter)
|
||||
end
|
||||
return encounter
|
||||
end
|
||||
|
||||
def self.triggerEncounterEnd
|
||||
@@procsEnd.each do |prc|
|
||||
prc.call
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user