-
Notifications
You must be signed in to change notification settings - Fork 53
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
7 changed files
with
79 additions
and
53 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,13 +1,18 @@ | ||
from pokemongo_bot import logger | ||
def action_before_catch_pokemon(hook_params): | ||
logger.log("[#] A Wild {} appeared! [CP {}] [Potential {}]".format(hook_params["name"], hook_params["cp"], | ||
hook_params["pokemon_potential"]), "yellow") | ||
from pokemongo_bot import logger, event_manager | ||
from pokemongo_bot.event_manager import manager | ||
|
||
@manager.on("before_catch_pokemon") | ||
def action_before_catch_pokemon(event, bot, name=None, cp=None, pokemon_potential=None, **kwargs): | ||
logger.log("[#] A Wild {} appeared! [CP {}] [Potential {}]".format(name, cp, pokemon_potential, "yellow")) | ||
|
||
@manager.on("catch_pokemon") | ||
def action_catch_pokemon(hook_params): | ||
pass | ||
|
||
def action_after_catch_pokemon(hook_params): | ||
logger.log("[x] Captured {} [CP {}]".format(hook_params["name"], hook_params["cp"]), "green") | ||
@manager.on("after_catch_pokemon") | ||
def action_after_catch_pokemon(event, bot, name=None, cp=None, **kwargs): | ||
logger.log("[x] Captured {} [CP {}]".format(name, cp, "green")) | ||
|
||
def action_use_pokeball(hook_params): | ||
logger.log("[x] Using {}... ({} left!)".format(hook_params["pokeball_name"], hook_params["number_left"])) | ||
@manager.on("use_pokeball") | ||
def action_use_pokeball(event, bot, pokeball_name=None, number_left=None, **kwargs): | ||
logger.log("[x] Using {}... ({} left!)".format(pokeball_name, number_left)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
class Event(object): | ||
|
||
def __init__(self, name): | ||
self.name = name | ||
self.listeners = set() | ||
|
||
def add_listener(self, listener): | ||
self.listeners.add(listener) | ||
|
||
def remove_listener(self, listener): | ||
self.listeners.discard(listener) | ||
|
||
def fire(self, *args, **kwargs): | ||
for listener in self.listeners: | ||
listener(self.name, *args, **kwargs) | ||
|
||
class EventManager(object): | ||
|
||
def __init__(self): | ||
self.events = {} | ||
|
||
def add_listener(self, name, listener): | ||
if name not in self.events: | ||
self.events[name] = Event(name) | ||
self.events[name].add_listener(listener) | ||
|
||
# decorator for event handlers | ||
# pylint: disable=invalid-name | ||
def on(self, *trigger_list): | ||
def register_handler(function): | ||
for trigger in trigger_list: | ||
self.add_listener(trigger, function) | ||
return function | ||
return register_handler | ||
|
||
# fire an event and call all event handlers | ||
def fire(self, event_name, *args, **kwargs): | ||
if event_name in self.events: | ||
self.events[event_name].fire(*args, **kwargs) | ||
|
||
# fire an event and call all event handlers, injecting the context as 2nd parameter | ||
def fire_with_context(self, event_name, bot, *args, **kwargs): | ||
if event_name in self.events: | ||
kwargs['bot'] = bot | ||
self.fire(event_name, *args, **kwargs) | ||
|
||
def remove_listener(self, name, listener): | ||
if name in self.events: | ||
self.events[name].remove_listener(listener) | ||
|
||
# This will only be loaded once | ||
# To use, add the following code to plugins: | ||
# from event_manager import manager | ||
# pylint: disable=invalid-name | ||
manager = EventManager() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters