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)
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)
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