Exemple #1
0
    def composite_result_payload(self, context, payload):
        # ResultJudge

        if payload.get("rule", None) in ["nawabari"]:
            scores = context["game"].get("nawabari_scores_pct", None)
            print("nawabari scores = %s" % scores)
            if scores is not None:
                payload["my_team_final_percent"] = scores[0]
                payload["his_team_final_percent"] = scores[1]

        if payload.get("rule", None) in ["area", "yagura", "hoko"]:
            scores = context["game"].get("ranked_scores", None)
            print("ranked scores = %s" % scores)
            if scores is not None:
                payload["my_team_count"] = scores[0]
                payload["his_team_count"] = scores[1]

        scores = context["game"].get("earned_scores", None)
        if 0:  # scores is not None:
            payload["my_team_final_point"] = scores[0]
            payload["his_team_final_point"] = scores[1]

        # ResultDetail

        me = IkaUtils.getMyEntryFromContext(context)
        if me is None:
            return

        payload["result"] = IkaUtils.getWinLoseText(
            context["game"]["won"], win_text="win", lose_text="lose", unknown_text=None
        )

        if "weapon" in me:
            weapon = self.encode_weapon_name(me["weapon"])
            if weapon:
                payload["weapon"] = weapon

        if context["game"]["is_fes"]:
            payload["gender"] = me["gender_en"]
            payload["fest_title"] = str(me["prefix_en"]).lower()

        self._set_values(
            [  # 'type', 'stat.ink Field', 'IkaLog Field'
                ["int", "rank_in_team", "rank_in_team"],
                ["int", "kill", "kills"],
                ["int", "death", "deaths"],
                ["int", "level", "rank"],
                ["int", "my_point", "score"],
            ],
            payload,
            me,
        )

        players = []
        for e in context["game"]["players"]:
            player = {}
            player["team"] = "my" if (e["team"] == me["team"]) else "his"
            player["is_me"] = "yes" if e["me"] else "no"
            self._set_values(
                [  # 'type', 'stat.ink Field', 'IkaLog Field'
                    ["int", "rank_in_team", "rank_in_team"],
                    ["int", "kill", "kills"],
                    ["int", "death", "deaths"],
                    ["int", "level", "rank"],
                    ["int", "point", "score"],
                ],
                player,
                e,
            )

            if "weapon" in e:
                weapon = self.encode_weapon_name(e["weapon"])
                if weapon:
                    player["weapon"] = weapon

            if payload.get("rule", "nawabari") != "nawabari":
                if "udemae_pre" in e:
                    player["rank"] = str(e["udemae_pre"]).lower()

            players.append(player)

        payload["players"] = players

        # ResultGears

        if ("result_gears" in context["scenes"]) and ("gears" in context["scenes"]["result_gears"]):
            try:
                gears_list = []
                for e in context["scenes"]["result_gears"]["gears"]:
                    primary_ability = e.get("main", None)
                    secondary_abilities = [e.get("sub1", None), e.get("sub2", None), e.get("sub3", None)]

                    gear = {"secondary_abilities": []}
                    if primary_ability is not None:
                        gear["primary_ability"] = primary_ability

                    # when:
                    #   "Run Speed Up" "Locked" "Empty"
                    # should be: (json-like)
                    #   [ "run_speed_up", null ]
                    #       - "Locked":  send `null`
                    #       - "Empty":   not send
                    #       - Otherwise: predefined id string ("key")
                    for ability in secondary_abilities:
                        if (ability is None) or (ability == "empty"):
                            continue

                        if ability == "locked":
                            gear["secondary_abilities"].append(None)
                        else:
                            gear["secondary_abilities"].append(ability)

                    gears_list.append(gear)

                payload["gears"] = {"headgear": gears_list[0], "clothing": gears_list[1], "shoes": gears_list[2]}
            except:
                IkaUtils.dprint("%s: Failed in ResultGears payload. Fix me..." % self)
                IkaUtils.dprint(traceback.format_exc())

        # ResultUdemae

        if payload.get("rule", "nawabari") != "nawabari":
            self._set_values(
                [  # 'type', 'stat.ink Field', 'IkaLog Field'
                    ["str_lower", "rank", "result_udemae_str_pre"],
                    ["int", "rank_exp", "result_udemae_exp_pre"],
                    ["str_lower", "rank_after", "result_udemae_str"],
                    ["int", "rank_exp_after", "result_udemae_exp"],
                ],
                payload,
                context["game"],
            )

        knockout = context["game"].get("knockout", None)
        if (payload.get("rule", "nawabari") != "nawabari") and (knockout is not None):
            payload["knock_out"] = {True: "yes", False: "no"}[knockout]

        # ResultGears

        if "result_gears" in context["scenes"]:
            self._set_values(
                [["int", "cash_after", "cash"]],  # 'type', 'stat.ink Field', 'IkaLog Field'
                payload,
                context["scenes"]["result_gears"],
            )

        # ResultFesta
        if payload.get("lobby", None) == "fest":
            self._set_values(
                [  # 'type', 'stat.ink Field', 'IkaLog Field'
                    ["int", "fest_exp", "result_festa_exp_pre"],
                    ["int", "fest_exp_after", "result_festa_exp"],
                ],
                payload,
                context["game"],
            )

            if payload.get("fest_title", None) is not None:
                current_title = payload["fest_title"]
                if context["game"].get("result_festa_title_changed", False):
                    try:
                        index = fes_rank_titles.index(current_title)
                        current_title = fes_rank_titles[index + 1]
                    except IndexError:
                        IkaUtils.dprint("%s: IndexError at fes_rank_titles" % self)

                payload["fest_title_after"] = current_title.lower()

        # Screenshots

        if self.img_result_detail is not None:
            img_scoreboard = anonymize(self.img_result_detail, anonOthers=self.anon_others, anonAll=self.anon_all)
            payload["image_result"] = self.encode_image(img_scoreboard)
        else:
            IkaUtils.dprint("%s: img_result_detail is empty." % self)

        if self.img_judge is not None:
            payload["image_judge"] = self.encode_image(self.img_judge)
        else:
            IkaUtils.dprint("%s: img_judge is empty." % self)
Exemple #2
0
    def composite_result_payload(self, context, payload):
        # ResultJudge

        if payload.get('rule', None) in ['nawabari']:
            scores = context['game'].get('nawabari_scores_pct', None)
            print('nawabari scores = %s' % scores)
            if scores is not None:
                payload['my_team_final_percent'] = scores[0]
                payload['his_team_final_percent'] = scores[1]

        if payload.get('rule', None) in ['area', 'yagura', 'hoko']:
            scores = context['game'].get('ranked_scores', None)
            print('ranked scores = %s' % scores)
            if scores is not None:
                payload['my_team_count'] = scores[0]
                payload['his_team_count'] = scores[1]

        scores = context['game'].get('earned_scores', None)
        if 0:  # scores is not None:
            payload['my_team_final_point'] = scores[0]
            payload['his_team_final_point'] = scores[1]

        # ResultDetail

        me = IkaUtils.getMyEntryFromContext(context)
        if me is None:
            return

        payload['result'] = IkaUtils.getWinLoseText(
            context['game']['won'],
            win_text='win',
            lose_text='lose',
            unknown_text=None
        )

        if 'weapon' in me:
            weapon = self.encode_weapon_name(me['weapon'])
            if weapon:
                payload['weapon'] = weapon

        if context['game']['is_fes']:
            payload['gender'] = me['gender_en']
            payload['fest_title'] = str(me['prefix_en']).lower()

        self._set_values(
            [  # 'type', 'stat.ink Field', 'IkaLog Field'
                ['int', 'rank_in_team', 'rank_in_team'],
                ['int', 'kill', 'kills'],
                ['int', 'death', 'deaths'],
                ['int', 'level', 'rank'],
                ['int', 'my_point', 'score'],
            ], payload, me)

        players = []
        for e in context['game']['players']:
            player = {}
            player['team'] = 'my' if (e['team'] == me['team']) else 'his'
            player['is_me'] = 'yes' if e['me'] else 'no'
            self._set_values(
                [  # 'type', 'stat.ink Field', 'IkaLog Field'
                    ['int', 'rank_in_team', 'rank_in_team'],
                    ['int', 'kill', 'kills'],
                    ['int', 'death', 'deaths'],
                    ['int', 'level', 'rank'],
                    ['int', 'point', 'score'],
                ], player, e)

            if 'weapon' in e:
                weapon = self.encode_weapon_name(e['weapon'])
                if weapon:
                    player['weapon'] = weapon

            if payload.get('rule') != 'nawabari':
                if 'udemae_pre' in e:
                    player['rank'] = str(e['udemae_pre']).lower()

            players.append(player)

        payload['players'] = players

        # ResultGears

        if ('result_gears' in context['scenes']) and ('gears' in context['scenes']['result_gears']):
            try:
                gears_list = []
                for e in context['scenes']['result_gears']['gears']:
                    primary_ability = e.get('main', None)
                    secondary_abilities = [
                        e.get('sub1', None),
                        e.get('sub2', None),
                        e.get('sub3', None),
                    ]

                    gear = {'secondary_abilities': []}
                    if primary_ability is not None:
                        gear['primary_ability'] = primary_ability

                    # when:
                    #   "Run Speed Up" "Locked" "Empty"
                    # should be: (json-like)
                    #   [ "run_speed_up", null ]
                    #       - "Locked":  send `null`
                    #       - "Empty":   not send
                    #       - Otherwise: predefined id string ("key")
                    for ability in secondary_abilities:
                        if (ability is None) or (ability == 'empty'):
                            continue

                        if (ability == 'locked'):
                            gear['secondary_abilities'].append(None)
                        else:
                            gear['secondary_abilities'].append(ability)

                    gears_list.append(gear)

                payload['gears'] = {
                    'headgear': gears_list[0],
                    'clothing': gears_list[1],
                    'shoes': gears_list[2],
                }
            except:
                IkaUtils.dprint(
                    '%s: Failed in ResultGears payload. Fix me...' % self)
                IkaUtils.dprint(traceback.format_exc())

        # ResultUdemae

        if payload.get('rule') != 'nawabari':
            self._set_values(
                [  # 'type', 'stat.ink Field', 'IkaLog Field'
                    ['str_lower', 'rank', 'result_udemae_str_pre'],
                    ['int', 'rank_exp', 'result_udemae_exp_pre'],
                    ['str_lower', 'rank_after', 'result_udemae_str'],
                    ['int', 'rank_exp_after', 'result_udemae_exp'],
                ], payload, context['game'])

        knockout = context['game'].get('knockout', None)
        if (payload.get('rule') != 'nawabari') and (knockout is not None):
            payload['knock_out'] = {True: 'yes', False: 'no'}[knockout]

        # ResultGears

        if 'result_gears' in context['scenes']:
            self._set_values(
                [  # 'type', 'stat.ink Field', 'IkaLog Field'
                    ['int', 'cash_after', 'cash'],
                ], payload, context['scenes']['result_gears'])

        # ResultFesta
        if payload.get('lobby', None) == 'fest':
            self._set_values(
                [  # 'type', 'stat.ink Field', 'IkaLog Field'
                    ['int', 'fest_exp', 'result_festa_exp_pre'],
                    ['int', 'fest_exp_after', 'result_festa_exp'],
                ], payload, context['game'])

            if payload.get('fest_title', None) is not None:
                current_title = payload['fest_title']
                if context['game'].get('result_festa_title_changed', False):
                    try:
                        index = fes_rank_titles.index(current_title)
                        current_title = fes_rank_titles[index + 1]
                    except IndexError:
                        IkaUtils.dprint(
                            '%s: IndexError at fes_rank_titles' % self)

                payload['fest_title_after'] = current_title.lower()

        # Screenshots

        if self.img_result_detail is not None:
            img_scoreboard = anonymize(
                self.img_result_detail,
                anonOthers = self.anon_others,
                anonAll = self.anon_all,
            )
            payload['image_result'] = self.encode_image(img_scoreboard)
        else:
            IkaUtils.dprint('%s: img_result_detail is empty.' % self)

        if self.img_judge is not None:
            payload['image_judge'] = self.encode_image(self.img_judge)
        else:
            IkaUtils.dprint('%s: img_judge is empty.' % self)
Exemple #3
0
    def composite_result_payload(self, context, payload):
        # ResultJudge

        if payload.get('rule', None) in ['nawabari']:
            scores = context['game'].get('nawabari_scores_pct', None)
            print('nawabari scores = %s' % scores)
            if scores is not None:
                payload['my_team_final_percent'] = scores[0]
                payload['his_team_final_percent'] = scores[1]

        if payload.get('rule', None) in ['area', 'yagura', 'hoko']:
            scores = context['game'].get('ranked_scores', None)
            print('ranked scores = %s' % scores)
            if scores is not None:
                payload['my_team_count'] = scores[0]
                payload['his_team_count'] = scores[1]

        scores = context['game'].get('earned_scores', None)
        if 0:  # scores is not None:
            payload['my_team_final_point'] = scores[0]
            payload['his_team_final_point'] = scores[1]

        # ResultDetail

        me = IkaUtils.getMyEntryFromContext(context)
        if me is None:
            return

        payload['result'] = IkaUtils.getWinLoseText(context['game']['won'],
                                                    win_text='win',
                                                    lose_text='lose',
                                                    unknown_text=None)

        if 'weapon' in me:
            weapon = self.encode_weapon_name(me['weapon'])
            if weapon:
                payload['weapon'] = weapon

        if context['game']['is_fes']:
            payload['gender'] = me['gender_en']
            payload['fest_title'] = str(me['prefix_en']).lower()

        self._set_values(
            [  # 'type', 'stat.ink Field', 'IkaLog Field'
                ['int', 'rank_in_team', 'rank_in_team'],
                ['int', 'kill', 'kills'],
                ['int', 'death', 'deaths'],
                ['int', 'level', 'rank'],
                ['int', 'my_point', 'score'],
            ],
            payload,
            me)

        players = []
        for e in context['game']['players']:
            player = {}
            player['team'] = 'my' if (e['team'] == me['team']) else 'his'
            player['is_me'] = 'yes' if e['me'] else 'no'
            self._set_values(
                [  # 'type', 'stat.ink Field', 'IkaLog Field'
                    ['int', 'rank_in_team', 'rank_in_team'],
                    ['int', 'kill', 'kills'],
                    ['int', 'death', 'deaths'],
                    ['int', 'level', 'rank'],
                    ['int', 'point', 'score'],
                ],
                player,
                e)

            if 'weapon' in e:
                weapon = self.encode_weapon_name(e['weapon'])
                if weapon:
                    player['weapon'] = weapon

            if payload.get('rule', 'nawabari') != 'nawabari':
                if 'udemae_pre' in e:
                    player['rank'] = str(e['udemae_pre']).lower()

            players.append(player)

        payload['players'] = players

        # ResultGears

        if ('result_gears' in context['scenes']) and (
                'gears' in context['scenes']['result_gears']):
            try:
                gears_list = []
                for e in context['scenes']['result_gears']['gears']:
                    primary_ability = e.get('main', None)
                    secondary_abilities = [
                        e.get('sub1', None),
                        e.get('sub2', None),
                        e.get('sub3', None),
                    ]

                    gear = {'secondary_abilities': []}
                    if primary_ability is not None:
                        gear['primary_ability'] = primary_ability

                    # when:
                    #   "Run Speed Up" "Locked" "Empty"
                    # should be: (json-like)
                    #   [ "run_speed_up", null ]
                    #       - "Locked":  send `null`
                    #       - "Empty":   not send
                    #       - Otherwise: predefined id string ("key")
                    for ability in secondary_abilities:
                        if (ability is None) or (ability == 'empty'):
                            continue

                        if (ability == 'locked'):
                            gear['secondary_abilities'].append(None)
                        else:
                            gear['secondary_abilities'].append(ability)

                    gears_list.append(gear)

                payload['gears'] = {
                    'headgear': gears_list[0],
                    'clothing': gears_list[1],
                    'shoes': gears_list[2],
                }
            except:
                IkaUtils.dprint(
                    '%s: Failed in ResultGears payload. Fix me...' % self)
                IkaUtils.dprint(traceback.format_exc())

        # ResultUdemae

        if payload.get('rule', 'nawabari') != 'nawabari':
            self._set_values(
                [  # 'type', 'stat.ink Field', 'IkaLog Field'
                    ['str_lower', 'rank', 'result_udemae_str_pre'],
                    ['int', 'rank_exp', 'result_udemae_exp_pre'],
                    ['str_lower', 'rank_after', 'result_udemae_str'],
                    ['int', 'rank_exp_after', 'result_udemae_exp'],
                ],
                payload,
                context['game'])

        knockout = context['game'].get('knockout', None)
        if (payload.get('rule', 'nawabari') != 'nawabari') and (knockout
                                                                is not None):
            payload['knock_out'] = {True: 'yes', False: 'no'}[knockout]

        # ResultGears

        if 'result_gears' in context['scenes']:
            self._set_values(
                [  # 'type', 'stat.ink Field', 'IkaLog Field'
                    ['int', 'cash_after', 'cash'],
                ],
                payload,
                context['scenes']['result_gears'])

        # ResultFesta
        if payload.get('lobby', None) == 'fest':
            self._set_values(
                [  # 'type', 'stat.ink Field', 'IkaLog Field'
                    ['int', 'fest_exp', 'result_festa_exp_pre'],
                    ['int', 'fest_exp_after', 'result_festa_exp'],
                ],
                payload,
                context['game'])

            if payload.get('fest_title', None) is not None:
                current_title = payload['fest_title']
                if context['game'].get('result_festa_title_changed', False):
                    try:
                        index = fes_rank_titles.index(current_title)
                        current_title = fes_rank_titles[index + 1]
                    except IndexError:
                        IkaUtils.dprint('%s: IndexError at fes_rank_titles' %
                                        self)

                payload['fest_title_after'] = current_title.lower()

        # Screenshots

        if self.img_result_detail is not None:
            img_scoreboard = anonymize(
                self.img_result_detail,
                anonOthers=self.anon_others,
                anonAll=self.anon_all,
            )
            payload['image_result'] = self.encode_image(img_scoreboard)
        else:
            IkaUtils.dprint('%s: img_result_detail is empty.' % self)

        if self.img_judge is not None:
            payload['image_judge'] = self.encode_image(self.img_judge)
        else:
            IkaUtils.dprint('%s: img_judge is empty.' % self)
Exemple #4
0
#  ======
#  Copyright (C) 2015 Takeshi HASEGAWA
#
#  Licensed under the Apache License, Version 2.0 (the "License");
#  you may not use this file except in compliance with the License.
#  You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.
#

import cv2
import sys
from ikalog.utils.anonymizer import anonymize

if __name__ == "__main__":
    img = cv2.imread(sys.argv[1])
    if (img is None):
        print("could not read image")
        sys.exit()

    v = anonymize(img, anonOthers=True)

    cv2.imshow('Scene', v)
    k = cv2.waitKey()