Esempio n. 1
0
 def combat_state(self):
     req = self.req()
     char = self.character(req.user())
     combat_id = req.args
     try:
         combat = CombatInterface(self.app(), combat_id)
         self.call("web.response_json", combat.state_for_interface(char, req.param("marker")))
     except CombatUnavailable as e:
         self.call("combat.unavailable-exception-char", combat_id, char, e)
         self.call("web.not_found")
Esempio n. 2
0
 def combat_interface(self):
     req = self.req()
     char = self.character(req.user())
     combat_id = req.args
     try:
         combat = CombatInterface(self.app(), combat_id)
         combat.ping()
         # Show combat interface to user
         rules = self.conf("combats-%s.rules" % combat.rules, {})
         vars = {
             "combat": combat_id,
             "load_extjs": {
                 "full": True
             },
             "generic": rules.get("generic", 1),
         }
         if vars["generic"]:
             vars["generic_myavatar"] = rules.get("generic_myavatar", 1)
             if vars["generic_myavatar"]:
                 vars["generic_myavatar_width"] = rules.get("generic_myavatar_width", 300)
             vars["generic_enemyavatar"] = rules.get("generic_enemyavatar", 1)
             if vars["generic_enemyavatar"]:
                 vars["generic_enemyavatar_width"] = rules.get("generic_enemyavatar_width", 300)
             vars["generic_log"] = rules.get("generic_log", 1)
             if vars["generic_log"]:
                 layout = vars["generic_log_layout"] = rules.get("generic_log_layout", 0)
                 if layout == 0:
                     vars["generic_combat_height"] = rules.get("generic_combat_height", 300)
                 elif layout == 1:
                     vars["generic_log_height"] = rules.get("generic_log_height", 300)
                 vars["generic_log_resize"] = "true" if rules.get("generic_log_resize", True) else "false"
             if rules.get("generic_gobutton", True):
                 vars["generic_gobutton"] = True
                 vars["generic_gobutton_text"] = jsencode(rules.get("generic_gobutton_text", "Go"))
             for pos in ["aboveavatar", "belowavatar"]:
                 params = rules.get(pos)
                 if params is None:
                     params = []
                     self.call("combats.default-%s" % pos, params)
                     params.sort(cmp=lambda x, y: cmp(x["order"], y["order"]) or cmp(x["id"], y["id"]))
                 vars["generic_%s" % pos] = json.dumps(params)
             vars["generic_target_template"] = json.dumps(rules.get("generic_target_template", [[".", ["glob", "member"], "name"]]))
             vars["generic_member_list_template"] = json.dumps(rules.get("generic_member_list_template", [[".", ["glob", "member"], "name"]]))
         dim_avatar = rules.get("dim_avatar", [120, 220])
         vars["combat_avatar_width"] = dim_avatar[0]
         vars["combat_avatar_height"] = dim_avatar[1]
         content = self.call("combat.parse", combat.rules, "combat-interface.html", vars)
         self.call("combat.response_main_frame", combat.rules, "combat.html", vars, content)
     except CombatUnavailable as e:
         self.call("combat.unavailable-exception-char", combat_id, char, e)
         self.call("web.redirect", "/location")
Esempio n. 3
0
 def combat_action(self):
     req = self.req()
     data = req.param("data")
     try:
         data = json.loads(data)
     except ValueError:
         self.call("web.response_json", {"error": self._("Invalid JSON data submitted")})
     char = self.character(req.user())
     combat_id = req.args
     try:
         combat = CombatInterface(self.app(), combat_id)
         self.call("web.response_json", combat.action(char, data))
     except CombatUnavailable as e:
         self.call("combat.unavailable-exception-char", combat_id, char, e)
         self.call("web.not_found")
Esempio n. 4
0
 def character_state(self, combat_id, character_uuid):
     try:
         combat = CombatInterface(self.app(), combat_id)
         for member in combat.members:
             if member.get("character") == character_uuid:
                 member["combat"] = combat_id
                 return member
     except CombatUnavailable as e:
         return None