From fa6e81f529aa209b508844a46dd862b854346d87 Mon Sep 17 00:00:00 2001 From: SIMAILA Djalim Date: Mon, 9 Jan 2023 17:10:39 +0100 Subject: [PATCH] SubmitGameData done --- .../logic/data_persistance/data_access.py | 4 ++++ truthseeker/logic/game_logic.py | 19 ++++++++++++++++--- truthseeker/routes/routes_api.py | 12 ++++++++---- 3 files changed, 28 insertions(+), 7 deletions(-) diff --git a/truthseeker/logic/data_persistance/data_access.py b/truthseeker/logic/data_persistance/data_access.py index a50d0f5..0141532 100644 --- a/truthseeker/logic/data_persistance/data_access.py +++ b/truthseeker/logic/data_persistance/data_access.py @@ -42,6 +42,10 @@ def getTraitFromText(text): trait_lid = session.query(tables.Locale).filter_by(TEXT=text).one().TEXT_ID return session.query(tables.Trait).filter_by(NAME_LID=trait_lid).one().TRAIT_ID +def getTraitFromTraitId(trait_id): + trait = session.query(tables.Trait).filter_by(TRAIT_ID=trait_id).one() + return trait + def getTraits(lang): traits = [] for trait in session.query(tables.Trait).all(): diff --git a/truthseeker/logic/game_logic.py b/truthseeker/logic/game_logic.py index 300efcb..801e0ca 100644 --- a/truthseeker/logic/game_logic.py +++ b/truthseeker/logic/game_logic.py @@ -32,7 +32,7 @@ class Member: self.username = username self.socket = None self.progress = 0 - self.has_submitted = False + self.results = None def __str__(self) -> str: return "Member[username={}]".format(self.username) @@ -60,6 +60,20 @@ class Game: self.owner = Member(username) self.members.append(self.owner) return self.owner + + def generateGameResults(self): + data = {} + npcs = data["npcs"] = {} + for npc_id in self.gamedata["npcs"]: + npcs[npc_id] = {} + npcs[npc_id]["name"] = self.gamedata["npcs"][npc_id]["name"] + traitId = self.reaction_table[npc_id] + trait = getTraitFromTraitId(traitId) + npcs[npc_id]["reaction"] = getTextFromLid("FR",trait.NAME_LID) + player_results = data["player"] = {} + for member in self.members: + player_results[member.username] = member.results + return data def generate_data(self): #TODO Get language from player @@ -91,12 +105,11 @@ class Game: return results except: return False - def has_finished(self): for member in self.members: - if member.progress != 5 : return False + if member.results == None : return False return True def __str__(self) -> str: diff --git a/truthseeker/routes/routes_api.py b/truthseeker/routes/routes_api.py index bce6fa8..df0e6db 100644 --- a/truthseeker/routes/routes_api.py +++ b/truthseeker/routes/routes_api.py @@ -125,7 +125,6 @@ def gameProgress(): game.get_member(username).progress += 1 APP.socketio_app.emit("gameprogress", [flask.session["username"]], room="game."+game.game_id) - if game.has_finished() : APP.socketio_app.emit("gamefinshed",room="game."+game.game_id) return {"error": 0} @@ -140,18 +139,23 @@ def checkAnwser(): member = game.get_member(flask.session["username"]) - if member.has_submitted == True: + if member.results != None: return {"error": 1, "msg": "answers already submitted for this member"} playerResponses = flask.request.values.get("responses") if playerResponses == None: return {"error": 1, "msg": "no responses were sent"} + results = game.getPlayerResults(json.loads(playerResponses)) if results == False: return {"error": 1, "msg": "invalid npc sent"} - response = {"error": 0} member.has_submitted = True - response["results"] = results + member.results = results + if game.has_finished(): + jsonGameResults = game.generateGameResults() + APP.socketio_app.emit("gamefinshed",jsonGameResults,room="game."+game.game_id) + response = {"error": 0} return response +