104 lines
3.1 KiB
Python
104 lines
3.1 KiB
Python
|
|
from bot import loaded_modules_dict
|
||
|
|
from os import path, pardir
|
||
|
|
|
||
|
|
module_name = path.basename(path.normpath(path.join(path.abspath(__file__), pardir, pardir)))
|
||
|
|
widget_name = path.basename(path.abspath(__file__))[:-3]
|
||
|
|
|
||
|
|
|
||
|
|
def main_widget(*args, **kwargs):
|
||
|
|
module = args[0]
|
||
|
|
dispatchers_steamid = kwargs.get("dispatchers_steamid", None)
|
||
|
|
active_dataset = module.dom.data.get("module_game_environment", {}).get("active_dataset", None)
|
||
|
|
|
||
|
|
template_frontend = module.templates.get_template('gametime_widget/view_frontend.html')
|
||
|
|
gametime = module.game_environment.get_last_recorded_gametime_dict()
|
||
|
|
gametime.update({
|
||
|
|
"is_bloodmoon": "",
|
||
|
|
"is_bloodday": ""
|
||
|
|
})
|
||
|
|
|
||
|
|
next_bloodmoon_date = (
|
||
|
|
module.dom.data
|
||
|
|
.get("module_game_environment", {})
|
||
|
|
.get(active_dataset, {})
|
||
|
|
.get("gamestats", {})
|
||
|
|
.get("BloodMoonDay", None)
|
||
|
|
)
|
||
|
|
|
||
|
|
data_to_emit = module.template_render_hook(
|
||
|
|
module,
|
||
|
|
template=template_frontend,
|
||
|
|
last_recorded_gametime=gametime,
|
||
|
|
next_bloodmoon_date=next_bloodmoon_date
|
||
|
|
)
|
||
|
|
|
||
|
|
module.webserver.send_data_to_client_hook(
|
||
|
|
module,
|
||
|
|
payload=data_to_emit,
|
||
|
|
data_type="widget_content",
|
||
|
|
clients=[dispatchers_steamid],
|
||
|
|
target_element={
|
||
|
|
"id": "gametime_widget",
|
||
|
|
"type": "div",
|
||
|
|
"selector": "body > header > div > div"
|
||
|
|
}
|
||
|
|
)
|
||
|
|
|
||
|
|
|
||
|
|
def update_widget(*args, **kwargs):
|
||
|
|
module = args[0]
|
||
|
|
updated_values_dict = kwargs.get("updated_values_dict", None)
|
||
|
|
original_values_dict = kwargs.get("original_values_dict", None)
|
||
|
|
|
||
|
|
gametime = updated_values_dict.get("last_recorded_gametime", None)
|
||
|
|
old_gametime = original_values_dict.get("last_recorded_gametime", None)
|
||
|
|
if gametime is None:
|
||
|
|
module.trigger_action_hook(module, event_data=["gettime", {}])
|
||
|
|
return False
|
||
|
|
|
||
|
|
if gametime == old_gametime:
|
||
|
|
pass
|
||
|
|
# return
|
||
|
|
|
||
|
|
active_dataset = module.dom.data.get("module_game_environment", {}).get("active_dataset", None)
|
||
|
|
next_bloodmoon_date = (
|
||
|
|
module.dom.data
|
||
|
|
.get("module_game_environment", {})
|
||
|
|
.get(active_dataset, {})
|
||
|
|
.get("gamestats", {})
|
||
|
|
.get("BloodMoonDay", None)
|
||
|
|
)
|
||
|
|
|
||
|
|
template_frontend = module.templates.get_template('gametime_widget/view_frontend.html')
|
||
|
|
data_to_emit = module.template_render_hook(
|
||
|
|
module,
|
||
|
|
template=template_frontend,
|
||
|
|
last_recorded_gametime=gametime,
|
||
|
|
next_bloodmoon_date=next_bloodmoon_date
|
||
|
|
)
|
||
|
|
|
||
|
|
module.webserver.send_data_to_client_hook(
|
||
|
|
module,
|
||
|
|
payload=data_to_emit,
|
||
|
|
data_type="widget_content",
|
||
|
|
clients=module.webserver.connected_clients.keys(),
|
||
|
|
target_element={
|
||
|
|
"id": "gametime_widget",
|
||
|
|
"type": "div",
|
||
|
|
"selector": "body > header > div > div"
|
||
|
|
}
|
||
|
|
)
|
||
|
|
return gametime
|
||
|
|
|
||
|
|
|
||
|
|
widget_meta = {
|
||
|
|
"description": "displays the in-game time and day",
|
||
|
|
"main_widget": main_widget,
|
||
|
|
"handlers": {
|
||
|
|
"module_game_environment/%map_identifier%/last_recorded_gametime": update_widget
|
||
|
|
},
|
||
|
|
"enabled": True
|
||
|
|
}
|
||
|
|
|
||
|
|
loaded_modules_dict["module_" + module_name].register_widget(widget_name, widget_meta)
|