コード例 #1
0
ファイル: materialselect.py プロジェクト: hitandaway100/caba
    def process(self):
        self.__cardlist = None

        args = self.getUrlArgs('/compositionmaterial/')
        try:
            self.__baseid = int(args.get(0))
        except:
            if settings_sub.IS_LOCAL:
                raise CabaretError(u'引数が想定外です', CabaretError.Code.ILLEGAL_ARGS)
            url = UrlMaker.composition()
            self.appRedirect(self.makeAppLinkUrlRedirect(url))
            return

        v_player = self.getViewerPlayer()
        model_mgr = self.getModelMgr()

        # ベースカード.
        basecard = BackendApi.get_cards([self.__baseid],
                                        model_mgr,
                                        using=settings.DB_READONLY)
        if not basecard or basecard[0].card.uid != v_player.id:
            if settings_sub.IS_LOCAL:
                raise CabaretError(u'不正なキャストです.%d' % self.__baseid)
            url = UrlMaker.composition()
            self.appRedirect(self.makeAppLinkUrlRedirect(url))
            return
        basecard = basecard[0]
        self.html_param['basecard'] = Objects.card(self, basecard)
        self.__basecard = basecard

        self.loadSortParams(
            default_sortby=Defines.CardSortType.RARE,
            default_ckind_type=Defines.CardKind.ListFilterType.ALL_KIND)

        # プレイヤー情報.
        self.html_param['player'] = Objects.player(self, v_player)

        # カード所持数.
        cardnum = BackendApi.get_cardnum(v_player.id,
                                         model_mgr,
                                         using=settings.DB_READONLY)
        self.html_param['cardnum'] = cardnum

        # カード.
        self.putCardList()

        # 確認ページのUrl.
        url = UrlMaker.compositionyesno(self.__baseid)
        self.html_param['url_yesno'] = self.makeAppLinkUrl(url)

        self.writeCompositionHtml('composition/materialselect')
コード例 #2
0
ファイル: anim.py プロジェクト: hitandaway100/caba
 def process(self):
     v_player = self.getViewerPlayer()
     model_mgr = self.getModelMgr()
     
     # 合成結果.
     compositiondata = BackendApi.get_compositiondata(model_mgr, v_player.id, using=settings.DB_READONLY)
     
     # ベースカード.
     basecardset = BackendApi.get_cards([compositiondata.result_baseid], model_mgr, using=settings.DB_READONLY)
     if not basecardset or basecardset[0].card.mid != compositiondata.mid:
         if settings_sub.IS_LOCAL:
             raise CabaretError(u'教育したキャストが見つかりません.')
         url = UrlMaker.composition()
         self.appRedirect(self.makeAppLinkUrlRedirect(url))
         return
     basecardset = basecardset[0]
     
     # 素材カード.
     materialcardsetlist = BackendApi.get_cards(compositiondata.result_materialidlist, model_mgr, using=settings.DB_READONLY, deleted=True)
     
     exp_pre = compositiondata.result_exp_pre
     exp_add = compositiondata.result_exp
     level_pre = compositiondata.result_lvpre
     level_add = compositiondata.result_lvup
     skilllevelup = compositiondata.result_skilllvup
     is_great_success = compositiondata.result_flag_great_success
     params = BackendApi.make_composition_effectparams(self, basecardset, materialcardsetlist, exp_pre, exp_add, level_pre, level_add, skilllevelup, is_great_success)
     
     # 結果へのURL.
     url = UrlMaker.compositionresult()
     params['backUrl'] = self.makeAppLinkUrl(url)
     
     self.appRedirectToEffect('education/effect.html', params)
コード例 #3
0
    def process(self):
        args = self.getUrlArgs('/compositiondo/')
        try:
            if settings_sub.IS_BENCH:
                requestkey = OSAUtil.makeSessionID()
            else:
                self.__baseid = int(args.get(0))
                self.__materialidlist = self.getMaterialIdList()
                requestkey = urllib.unquote(args.get(1))
        except:
            raise CabaretError(u'引数が想定外です', CabaretError.Code.ILLEGAL_ARGS)

        v_player = self.getViewerPlayer()

        try:
            model_mgr = db_util.run_in_transaction(Handler.tr_write,
                                                   v_player.id, self.__baseid,
                                                   self.__materialidlist,
                                                   requestkey)
            model_mgr.write_end()
        except CabaretError, e:
            if e.code == CabaretError.Code.ALREADY_RECEIVED:
                pass
            else:
                if settings_sub.IS_LOCAL:
                    raise CabaretError(u'合成できませんでした.%s' %
                                       CabaretError.getCodeString(e.code))
                url = UrlMaker.composition()
                self.appRedirect(self.makeAppLinkUrlRedirect(url))
                return
コード例 #4
0
ファイル: baseselect.py プロジェクト: hitandaway100/caba
 def makeUrlSelf(self):
     return UrlMaker.composition()
コード例 #5
0
ファイル: result.py プロジェクト: hitandaway100/caba
    def process(self):
        v_player = self.getViewerPlayer()
        model_mgr = self.getModelMgr()

        # 合成結果.
        compositiondata = BackendApi.get_compositiondata(
            model_mgr, v_player.id, using=settings.DB_READONLY)

        # ベースカード.
        basecardset = BackendApi.get_cards([compositiondata.result_baseid],
                                           model_mgr,
                                           using=settings.DB_READONLY)
        if not basecardset or basecardset[0].card.mid != compositiondata.mid:
            if settings_sub.IS_LOCAL:
                raise CabaretError(u'教育したキャストが見つかりません.')
            url = UrlMaker.composition()
            self.appRedirect(self.makeAppLinkUrlRedirect(url))
            return
        basecardset = basecardset[0]

        self.html_param['basecard_post'] = Objects.card(self, basecardset)
        compositiondata.set_to_card(basecardset.card)
        self.html_param['basecard_pre'] = Objects.card(self, basecardset)

        # 素材カード.
        materialcardsetlist = BackendApi.get_cards(
            compositiondata.result_materialidlist,
            model_mgr,
            using=settings.DB_READONLY,
            deleted=True)
        self.html_param['cardlist'] = [
            Objects.card(self, cardset) for cardset in materialcardsetlist
        ]

        # 経験値とレベル.
        self.html_param['exp'] = compositiondata.result_exp
        self.html_param['levelup'] = compositiondata.result_lvup

        # お金.
        self.html_param['cost'] = compositiondata.result_cost_gold

        # スキル.
        self.html_param['skilllevelup'] = compositiondata.result_skilllvup

        # 成功 or 大成功.
        self.html_param[
            'is_great_success'] = compositiondata.result_flag_great_success

        # 上昇値.
        level_pre = compositiondata.result_lvpre
        level_add = compositiondata.result_lvup
        power_add = 0
        if 0 < level_add:
            basemaster = basecardset.master
            pow_pre = CardUtil.calcPower(basemaster.gtype,
                                         basemaster.basepower,
                                         basemaster.maxpower, level_pre,
                                         basemaster.maxlevel,
                                         basecardset.card.takeover)
            pow_post = CardUtil.calcPower(basemaster.gtype,
                                          basemaster.basepower,
                                          basemaster.maxpower,
                                          level_pre + level_add,
                                          basemaster.maxlevel,
                                          basecardset.card.takeover)
            power_add = pow_post - pow_pre
        self.html_param['power_add'] = power_add
        self.html_param['level_add'] = level_add
        self.html_param['skilllevel_add'] = compositiondata.result_skilllvup

        # 続けて合成のURL.
        url = UrlMaker.compositionmaterial(basecardset.id)
        self.html_param['url_continue'] = self.makeAppLinkUrl(url)

        self.writeAppHtml('composition/complete')
コード例 #6
0
ファイル: apphandler.py プロジェクト: hitandaway100/caba
 def __makePrizeGetLinkParamComposition(self, itype, iid):
     return self.__makePrizeGetLinkParam(UrlMaker.composition(), u'教育する')
コード例 #7
0
    def process(self):
        self.__include_rare = False

        args = self.getUrlArgs('/compositionyesno/')
        try:
            self.__baseid = int(args.get(0))
            self.__materialidlist = self.getMaterialIdList()
        except:
            if settings_sub.IS_LOCAL:
                raise CabaretError(u'引数が想定外です', CabaretError.Code.ILLEGAL_ARGS)
            url = UrlMaker.composition()
            self.appRedirect(self.makeAppLinkUrlRedirect(url))
            return

        v_player = self.getViewerPlayer()
        model_mgr = self.getModelMgr()

        # ベースカード.
        basecard = BackendApi.get_cards([self.__baseid],
                                        model_mgr,
                                        using=settings.DB_READONLY)
        if not basecard or basecard[0].card.uid != v_player.id:
            if settings_sub.IS_LOCAL:
                raise CabaretError(u'不正なキャストです.%d' % self.__baseid)
            url = UrlMaker.composition()
            self.appRedirect(self.makeAppLinkUrlRedirect(url))
            return
        basecard = basecard[0]
        self.html_param['basecard'] = Objects.card(self, basecard)

        self.loadSortParams()

        # プレイヤー情報.
        self.html_param['player'] = Objects.player(self, v_player)

        # カード.
        self.putCardList()
        if not self._put_cardlist:
            if settings_sub.IS_LOCAL:
                raise CabaretError(u'素材が選ばれていません')
            url = UrlMaker.composition()
            self.appRedirect(self.makeAppLinkUrlRedirect(url))
            return

        card_masters = {
            m.master
            for m in self._put_cardlist
            if m.master.ckind == Defines.CardKind.SKILL
        }

        is_not_skillup = False
        for card_master in card_masters:
            if card_master.id != Defines.MasterData.TIARA_ID and card_master.rare < basecard.master.rare:
                is_not_skillup = True
                break
        self.html_param['not_skillup'] = is_not_skillup

        # 消費ゴールド.
        cost = BackendApi.calc_composition_cost(basecard, self._put_cardlist)
        self.html_param['cost'] = cost
        self.html_param['cost_over'] = v_player.gold < cost
        self.html_param['gold_post'] = v_player.gold - cost

        self.html_param['cardnum'] = BackendApi.get_cardnum(
            v_player.id, model_mgr, using=settings.DB_READONLY)

        # 書き込みへのURL.
        str_cardidlist = ','.join(
            [str(cardset.card.id) for cardset in self._put_cardlist])
        url = UrlMaker.compositiondo(self.__baseid, v_player.req_confirmkey)
        self.html_param['url_do'] = self.makeAppLinkUrl(
            OSAUtil.addQuery(url, Defines.URLQUERY_CARD, str_cardidlist))

        self.html_param['flag_include_rare'] = self.__include_rare

        self.writeAppHtml('composition/yesno')
コード例 #8
0
ファイル: mission.py プロジェクト: hitandaway100/caba
 def _getJumpUrlServiceLevel(self, missionmaster):
     return UrlMaker.composition()
コード例 #9
0
ファイル: mission.py プロジェクト: hitandaway100/caba
 def _getJumpUrlDoComposition(self, missionmaster):
     return UrlMaker.composition()