From 71f5ee54dea0e3028bf14a8db831bed83a1f6820 Mon Sep 17 00:00:00 2001 From: SIMAILA Djalim Date: Mon, 9 Jan 2023 14:20:18 +0100 Subject: [PATCH] added answer check --- truthseeker/logic/game_logic.py | 16 ++++++++++++---- truthseeker/routes/routes_api.py | 29 ++++++++++++++++++++++++++++- 2 files changed, 40 insertions(+), 5 deletions(-) diff --git a/truthseeker/logic/game_logic.py b/truthseeker/logic/game_logic.py index dc75193..300efcb 100644 --- a/truthseeker/logic/game_logic.py +++ b/truthseeker/logic/game_logic.py @@ -32,6 +32,7 @@ class Member: self.username = username self.socket = None self.progress = 0 + self.has_submitted = False def __str__(self) -> str: return "Member[username={}]".format(self.username) @@ -82,6 +83,16 @@ class Game: reaction_id = self.reaction_table[npc_id][int(reaction)] return read_image(f"./truthseeker/static/images/npc/{npc_id}/{reaction_id}.png") + def getPlayerResults(self,responses: dict): + results = {} + try: + for npc_id in responses: + results[npc_id] = responses[npc_id] == str(self.reaction_table[npc_id]) + return results + except: + return False + + def has_finished(self): for member in self.members: @@ -142,10 +153,7 @@ def generateNpcText(npc: tables.Npc, lang: str) -> dict: return data def generateNpcReactions(npc : tables.Npc) ->list: - data = [] - data.append(getNpcRandomTraitId(npc)) - data.append(getNpcRandomTraitId(npc)) - return data + return getNpcRandomTraitId(npc) def generatePlaceData(npcs :list, places: list, lang : str) -> dict: data = {} diff --git a/truthseeker/routes/routes_api.py b/truthseeker/routes/routes_api.py index f4299ab..bce6fa8 100644 --- a/truthseeker/routes/routes_api.py +++ b/truthseeker/routes/routes_api.py @@ -1,5 +1,5 @@ import flask - +import json from truthseeker import APP from truthseeker.logic import game_logic from truthseeker.utils import check_username @@ -128,3 +128,30 @@ def gameProgress(): if game.has_finished() : APP.socketio_app.emit("gamefinshed",room="game."+game.game_id) return {"error": 0} + +@routes_api.route("/submitAnswers", methods=["GET", "POST"]) +def checkAnwser(): + if not flask.session: + return {"error": 1, "msg": "No session"} + game = game_logic.get_game(flask.session["game_id"]) + + if game == None: + return {"error": 1, "msg": "this game doesn't exist"} + + member = game.get_member(flask.session["username"]) + + if member.has_submitted == True: + 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 + return response