Ejemplo n.º 1
0
 def get(self, *args, **kwargs):
     user = self.get_current_user()
     try:
         page = int(self.get_argument("page", 1))
         display = int(self.get_argument("count", 25))
     except ValueError:
         page = 1
         display = 25
     ranks = Team.ranks()
     teamcount = len(ranks)
     pcount = ceil(teamcount / display)
     if pcount < page:
         page = pcount
     end_count = display * page
     start_count = end_count - display
     teams = []
     for i, team in enumerate(ranks):
         if i >= start_count and i < end_count:
             teams.append(team)
     if scoreboard_visible(user):
         self.render(
             "scoreboard/teams.html",
             timer=self.timer(),
             hide_scoreboard=self.application.settings["hide_scoreboard"],
             teams=teams,
             page=page,
             display=display,
             teamcount=teamcount,
         )
     elif not user:
         self.redirect("/login")
     else:
         self.render("public/404.html")
 def summary_table(self):
     ''' Render the "leaderboard" snippit '''
     self.render('scoreboard/summary_table.html', teams=Team.ranks())
Ejemplo n.º 3
0
    def update_gamestate(self, app):
        game_state = {
            "teams": {},
            "levels": {},
            "boxes": {},
            "hint_count": len(Hint.all()),
            "flag_count": len(Flag.all()),
            "box_count": len(Box.all()),
            "level_count": len(GameLevel.all()),
        }
        teams = Team.ranks()
        for team in teams:
            if len(team.members) > 0:
                millis = int(round(time.time() * 1000))
                game_state["teams"][team.name] = {
                    "uuid": team.uuid,
                    "flags": [str(flag) for flag in team.flags],
                    "game_levels": [str(lvl) for lvl in team.game_levels],
                    "members_count": len(team.members),
                    "hints_count": len(team.hints),
                    "bot_count":
                    BotManager.instance().count_by_team(team.name),
                    "money": team.money,
                }

                highlights = {"money": 0, "flag": 0, "bot": 0, "hint": 0}
                for item in highlights:
                    value = team.get_score(item)
                    game_state["teams"][team.name][item] = value
                    game_history = app.settings["scoreboard_history"]
                    if team.name in game_history:
                        prev = game_history[team.name][item]
                        if prev < value:
                            highlights[item] = millis
                        else:
                            highlights[item] = game_history[
                                team.name]["highlights"][item]
                highlights["now"] = millis
                game_state["teams"][team.name]["highlights"] = highlights
                app.settings["scoreboard_history"][
                    team.name] = game_state["teams"].get(team.name)
        for level in GameLevel.all():
            game_state["levels"][level.name] = {
                "type": level.type,
                "number": level.number,
                "teams": {},
                "boxes": {},
                "box_count": len(level.boxes),
                "flag_count": len(level.flags),
            }
            for team in teams:
                game_state["levels"][level.name]["teams"][team.name] = {
                    "lvl_count": len(team.level_flags(level.number)),
                    "lvl_unlock": level in team.game_levels,
                }
            for box in level.boxes:
                game_state["levels"][level.name]["boxes"][box.uuid] = {
                    "name": box.name,
                    "teams": {},
                    "flag_count": len(box.flags),
                }
                for team in teams:
                    game_state["levels"][level.name]["boxes"][
                        box.uuid]["teams"][team.name] = {
                            "box_count": len(team.box_flags(box))
                        }
        app.settings["scoreboard_state"] = game_state
Ejemplo n.º 4
0
 def summary_table(self):
     """ Render the "leaderboard" snippit """
     self.render("scoreboard/summary_table.html", teams=Team.ranks())