def testGetProductsList(self):
        def _verify_products(products, p_settings):
            for p in products:
                p_s = p_settings.get(p.pid)
                self.assertEquals(p.quantity, p_s.get("quantity"))
                self.assertEquals(p.price, p_s.get("price"))
                self.assertEquals(p.currency, p_s.get("currency"))

        session_id, msg = self.create_player(os_type=OSType.Value("IOS"))
        req = ProductsReq()
        resp = self.post_message(req, ProductsResp, session_id=session_id)
        self.assertEquals(resp.result_code,
                          GetProductsResultCode.Value("GET_PRODUCTS_SUCCESS"))
        iap = PURCHASE_ITEMS.get(OSType.Value("IOS"))
        _verify_products(resp.products, iap)

        # update player os_type to Android
        player = Player(id=msg.player_info.userId)
        player.load()
        player.os_type = OSType.Value("Android")
        player.store()

        resp = self.post_message(req, ProductsResp, session_id=session_id)
        self.assertEquals(resp.result_code,
                          GetProductsResultCode.Value("GET_PRODUCTS_SUCCESS"))
        iab = PURCHASE_ITEMS.get(OSType.Value("Android"))
        _verify_products(resp.products, iab)
Exemple #2
0
 def init_player(self, msg):
     # TODO - verify with 3rd party?
     kwargs = {"is_new": True,
               "name": msg.name,
               self.player_index: self.get_pip_id(msg)}
     player = Player(**kwargs)
     player.store()
     log.info("Create player with basic info: %s" % str(kwargs))
     return player
 def give_reward(self, user_id, product_info):
     qt = product_info.get("quantity")
     player = Player(id=user_id)
     if player.exist():
         player.load()
         player.gems += qt
         player.store()
         log.info("%s purchase - add %s gems to player(%s)" %
                  (self.os_type, qt, user_id))
     return True
def init_player(attr):
    p = Player.load_by_attribute("agc_id", attr.get("agc_id"))
    p = p and p[0]
    if not p:
        # create players if player not exist
        params = {"default_creatures": random_creatures(),
                  "is_new": True}
        params.update(attr)
        p = Player(**params)
        p.store()
    update_latest_login_players(p.id)
Exemple #5
0
    def pay(self, speed_turns):
        pay_data = {'drops':[]}
        player = Player(id=self.player_id).load()
        passed_dungeons = PassedDungeons(player_id=self.player_id).load()
        if not passed_dungeons.slugs: passed_dungeons.slugs = []
        if self.dungeon_slug not in passed_dungeons.slugs:
            passed_dungeons.slugs.append(self.dungeon_slug)
            passed_dungeons.store()
            self.eggs.extend(self._dungeon_eggs)
        coins = self.coins
        gems = 0
        self.calc_speed_eggs(speed_turns)
        for egg in self.eggs:
            egg = simplejson.loads(egg)
            if egg['type'] == GameRule.FAERIE_EGG or egg['type'] == GameRule.SELF_EGG:
                c_data = egg['creature']
                c = CreatureInstance(player_id=self.player_id).create(c_data['slug'],
                                              level=c_data.get('level', 1),
                                              xp=c_data.get('xp', 0),
                                              plusHP=c_data.get('plusHP', 0),
                                              plusAttack=c_data.get('plusAttack', 0),
                                              plusSpeed=c_data.get('plusSpeed', 0),
                                              plusLuck=c_data.get('plusLuck', 0),
                    )
                c.store()
                pay_data['drops'].append({'type': egg['type'], 'slug': c_data['slug']})
            elif egg['type'] == GameRule.MATERIAL_EGG:
                m = egg.get('material')
                setattr(player, m, getattr(player, m) + 1)
                pay_data['drops'].append({'type': egg['type'], 'slug': m})
            elif egg['type'] == GameRule.COIN_EGG:
                coins += egg.get('coins')
            elif egg['type'] == GameRule.GEM_EGG:
                gems += egg.get('gems')
        player.set_progress(self.progress)
        player.add_xp(self.xp)
        player.coins += coins
        player.gems += gems

        pay_data['xp'] = self.xp
        pay_data['coins'] = self.coins
        pay_data['gems'] = gems

        player.store()
        return pay_data, player