From b656d2b48f51194570f1749c1c23ccfa79321aef Mon Sep 17 00:00:00 2001 From: Jeffrey Kirchner Date: Wed, 15 Nov 2023 15:48:57 -0800 Subject: [PATCH 1/2] show attack animation on server. fixes #239. --- .../subject/subject_home/the_stage/avatars.js | 45 ++++++++++--------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/main/templates/subject/subject_home/the_stage/avatars.js b/main/templates/subject/subject_home/the_stage/avatars.js index 0cef5e05..b5afd7fc 100644 --- a/main/templates/subject/subject_home/the_stage/avatars.js +++ b/main/templates/subject/subject_home/the_stage/avatars.js @@ -1042,34 +1042,35 @@ take_update_attack_avatar: function take_update_attack_avatar(message_data) app.avatar_attack_modal.hide(); app.working = false; } + } - //transfer beam - let elements = []; + //transfer beam + let elements = []; - let fist_texture = app.pixi_textures["fist_left_tex"]; + let fist_texture = app.pixi_textures["fist_left_tex"]; - if(app.session.world_state_avatars.session_players[source_player_id].current_location.x < - app.session.world_state_avatars.session_players[target_player_id].current_location.x) - { - fist_texture = app.pixi_textures["fist_right_tex"]; - } - - let element = {source_change:"", - target_change:"", - texture: fist_texture} + if(app.session.world_state_avatars.session_players[source_player_id].current_location.x < + app.session.world_state_avatars.session_players[target_player_id].current_location.x) + { + fist_texture = app.pixi_textures["fist_right_tex"]; + } - elements.push(element); + let element = {source_change:"", + target_change:"", + texture: fist_texture} - element = {source_change:"-" + app.session.parameter_set.attack_cost, - target_change:"-" + app.session.parameter_set.attack_damage, - texture:app.pixi_textures["health_tex"] } + elements.push(element); - elements.push(element); - - app.add_transfer_beam(app.session.world_state_avatars.session_players[source_player_id].current_location, - app.session.world_state_avatars.session_players[target_player_id].current_location, - elements); - } + element = {source_change:"-" + app.session.parameter_set.attack_cost, + target_change:"-" + app.session.parameter_set.attack_damage, + texture:app.pixi_textures["health_tex"] } + + elements.push(element); + + app.add_transfer_beam(app.session.world_state_avatars.session_players[source_player_id].current_location, + app.session.world_state_avatars.session_players[target_player_id].current_location, + elements); + } else From 73baf0120c03d9d9a8ccd1f8cd3dd00f7f1af46a Mon Sep 17 00:00:00 2001 From: Jeffrey Kirchner Date: Thu, 16 Nov 2023 13:12:41 -0800 Subject: [PATCH 2/2] store hat trade data. fixes #244. --- .../subject_updates.py | 51 +++++++++++-------- main/models/session.py | 19 ++++++- 2 files changed, 47 insertions(+), 23 deletions(-) diff --git a/main/consumers/staff/session_consumer_mixins/subject_updates.py b/main/consumers/staff/session_consumer_mixins/subject_updates.py index 1b978373..7ed62eaa 100644 --- a/main/consumers/staff/session_consumer_mixins/subject_updates.py +++ b/main/consumers/staff/session_consumer_mixins/subject_updates.py @@ -1325,6 +1325,7 @@ async def hat_avatar(self, event): error_mesage = "" try: + session = await Session.objects.aget(id=self.session_id) player_id = self.session_players_local[event["player_key"]]["id"] source_player_id = event["message_text"]["source_player_id"] target_player_id = event["message_text"]["target_player_id"] @@ -1341,13 +1342,17 @@ async def hat_avatar(self, event): result["type"] = type if type == "proposal_received": + + source_player_id_s = str(source_player_id) + target_player_id_s = str(target_player_id) + result["source_player_id"] = source_player_id result["target_player_id"] = target_player_id - source_player = self.world_state_avatars_local['session_players'][str(source_player_id)] - target_player = self.world_state_avatars_local['session_players'][str(target_player_id)] + source_player = self.world_state_avatars_local['session_players'][source_player_id_s] + target_player = self.world_state_avatars_local['session_players'][target_player_id_s] - target_avatar = self.world_state_local['avatars'][str(target_player_id)] + target_avatar = self.world_state_local['avatars'][target_player_id_s] #source player group source_player_group_id = self.parameter_set_local["parameter_set_players"][str(source_player["parameter_set_player_id"])]["parameter_set_group"] @@ -1363,6 +1368,17 @@ async def hat_avatar(self, event): await Session.objects.filter(id=self.session_id).aupdate(world_state=self.world_state_local) + #store data + current_period = await session.aget_current_session_period() + + summary_data_source = current_period.summary_data[source_player_id_s] + summary_data_target = current_period.summary_data[target_player_id_s] + + summary_data_source["hat_accept_to_" + target_player_id_s] += 1 + summary_data_target["hat_accept_from_" + source_player_id_s] += 1 + + await current_period.asave() + result["status"] ="success" result["error_message"] = [] @@ -1435,6 +1451,7 @@ async def hat_avatar_cancel(self, event): error_mesage = "" try: + session = await Session.objects.aget(id=self.session_id) player_id = self.session_players_local[event["player_key"]]["id"] source_player_id = event["message_text"]["source_player_id"] target_player_id = event["message_text"]["target_player_id"] @@ -1446,30 +1463,22 @@ async def hat_avatar_cancel(self, event): # if type == "proposal": source_player = self.world_state_avatars_local['session_players'][str(source_player_id)] - target_player = self.world_state_avatars_local['session_players'][str(target_player_id)] - # source_avatar = self.world_state_local['avatars'][str(source_player_id)] - # target_avatar = self.world_state_local['avatars'][str(target_player_id)] - - # # self.world_state_avatars_local["session_players"][str(player_id)]["cool_down"] = self.parameter_set_local["cool_down_length"] - # else: - # source_player = self.world_state_avatars_local['session_players'][str(target_player_id)] - # target_player = self.world_state_avatars_local['session_players'][str(player_id)] - - # source_avatar = self.world_state_local['avatars'][str(target_player_id)] - # target_avatar = self.world_state_local['avatars'][str(player_id)] - - # self.world_state_avatars_local["session_players"][str(target_player_id)]["cool_down"] = self.parameter_set_local["cool_down_length"] + source_player_id_s = str(source_player_id) + target_player_id_s = str(target_player_id) source_player['cool_down'] = self.parameter_set_local["cool_down_length"] - source_player['interaction'] = 0 - target_player['interaction'] = 0 + #store data + current_period = await session.aget_current_session_period() + + summary_data_source = current_period.summary_data[source_player_id_s] + summary_data_target = current_period.summary_data[target_player_id_s] - source_player['frozen'] = False - target_player['frozen'] = False + summary_data_source["hat_reject_to_" + target_player_id_s] += 1 + summary_data_target["hat_reject_from_" + source_player_id_s] += 1 - source_player['tractor_beam_target'] = None + await current_period.asave() result = {"status" : status, "error_message" : error_mesage} diff --git a/main/models/session.py b/main/models/session.py index f152917f..9758e2fa 100644 --- a/main/models/session.py +++ b/main/models/session.py @@ -182,6 +182,12 @@ def setup_summary_data(self): v["attacks_from_" + k_s] = 0 v["attacks_cost_at_" + k_s] = 0 v["attacks_damage_from_" + k_s] = 0 + + v["hat_accept_to_" + k_s] = 0 + v["hat_reject_to_" + k_s] = 0 + + v["hat_accept_from_" + k_s] = 0 + v["hat_reject_from_" + k_s] = 0 for l in main.globals.Goods.choices: v["send_avatar_to_avatar_" + k_s + "_good_" + l[0]] = 0 @@ -422,8 +428,12 @@ def get_download_summary_csv(self): for k in main.globals.Goods.choices: temp_header.append("Send " + k[0] + " to House " + str(player_number+1)) - + temp_header.append("Hat To " + str(player_number+1) + ' Accept') + temp_header.append("Hat To " + str(player_number+1) + ' Reject') + temp_header.append("Hat From " + str(player_number+1) + ' Accept') + temp_header.append("Hat From " + str(player_number+1) + ' Reject') + #patch harvests for patch_number, patch in enumerate(world_state["patches"]): temp_header.append("Patch Harvests Count " + str(patch_number+1)) @@ -475,8 +485,13 @@ def get_download_summary_csv(self): for l in main.globals.Goods.choices: temp_row.append(temp_p["send_avatar_to_house_" + parameter_set_player_id + "_good_" + l[0]]) - + temp_row.append(temp_p["hat_accept_to_" + k]) + temp_row.append(temp_p["hat_reject_to_" + k]) + + temp_row.append(temp_p["hat_accept_from_" + k]) + temp_row.append(temp_p["hat_reject_from_" + k]) + #patch harvests for patch_number, patch in enumerate(world_state["patches"]): temp_row.append(temp_p["patch_harvests_count_" + patch])