public static async Task <dynamic> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req, ILogger log) { try{ string body = await req.ReadAsStringAsync(); var context = JsonConvert.DeserializeObject <FunctionExecutionContext <dynamic> >(body); var request = JsonConvert.DeserializeObject <FunctionExecutionContext <DevelopConsumeStaminaApiRequest> >(body).FunctionArgument; var stamina = await StaminaUtil.ConsumeAsync(context, request.consumeStamina); return(PlayFabSimpleJson.SerializeObject(new DevelopConsumeStaminaApiResponse() { stamina = stamina })); }catch (PMApiException e) { // レスポンスの作成 var response = new PMApiResponseBase() { errorCode = e.errorCode, message = e.message }; return(PlayFabSimpleJson.SerializeObject(response)); } }
public static async Task <dynamic> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req, ILogger log) { try{ string body = await req.ReadAsStringAsync(); var context = JsonConvert.DeserializeObject <FunctionExecutionContext <dynamic> >(body); var request = JsonConvert.DeserializeObject <FunctionExecutionContext <UpdateUserMonsterFormationApiRequest> >(body).FunctionArgument; var userData = await DataProcessor.GetUserDataAsync(context); var userMonsterPartyList = userData.userMonsterPartyList ?? new List <UserMonsterPartyInfo>(); var index = userMonsterPartyList.FindIndex(u => u.partyId == request.partyId); if (index < 0) { // 存在しない場合は新規作成して追加 var userMonsterParty = new UserMonsterPartyInfo() { id = UserDataUtil.CreateUserDataId(), partyId = request.partyId, userMonsterIdList = request.userMonsterIdList, }; userMonsterPartyList.Add(userMonsterParty); } else { // すでに存在する場合は更新 userMonsterPartyList[index].userMonsterIdList = request.userMonsterIdList; } await DataProcessor.UpdateUserDataAsync(context, new Dictionary <UserDataKey, object>() { { UserDataKey.userMonsterPartyList, userMonsterPartyList } }); var response = new UpdateUserMonsterFormationApiResponse() { }; return(PlayFabSimpleJson.SerializeObject(response)); }catch (PMApiException e) { // レスポンスの作成 var response = new PMApiResponseBase() { errorCode = e.errorCode, message = e.message }; return(PlayFabSimpleJson.SerializeObject(response)); } }
public static async Task <dynamic> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req, ILogger log) { try{ string body = await req.ReadAsStringAsync(); var context = JsonConvert.DeserializeObject <FunctionExecutionContext <dynamic> >(body); var request = JsonConvert.DeserializeObject <FunctionExecutionContext <LoginApiRequest> >(body).FunctionArgument; // 初ログイン時処理 var userData = await DataProcessor.GetUserDataAsync(context); if (userData.lastLoginDateTime == default(DateTime)) { await DataProcessor.UpdateUserDataAsync(context, new Dictionary <UserDataKey, object>(){ { UserDataKey.rank, 1 }, }); } // ログイン日時の更新 var now = DateTimeUtil.Now(); await DataProcessor.UpdateUserDataAsync(context, new Dictionary <UserDataKey, object>(){ { UserDataKey.lastLoginDateTime, now } }); // スタミナの更新 await StaminaUtil.SetStamina(context); var response = new LoginApiResponse() { }; return(PlayFabSimpleJson.SerializeObject(response)); }catch (PMApiException e) { // レスポンスの作成 var response = new PMApiResponseBase() { errorCode = e.errorCode, message = e.message }; return(PlayFabSimpleJson.SerializeObject(response)); } }
public static async Task <dynamic> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req, ILogger log) { try{ string body = await req.ReadAsStringAsync(); var context = JsonConvert.DeserializeObject <FunctionExecutionContext <dynamic> >(body); var args = context.FunctionArgument; // 引数でテーブル名を渡す dynamic dropTableName = null; if (args != null && args["dropTableName"] != null) { dropTableName = args["dropTableName"]; } // ドロップテーブルからアイテムを取得する var evaluateResult = await EvaluateRandomResultTable(context, dropTableName); // プレイヤーにアイテムを付与する var grantResult = await ItemGiver.GrantItemsToUserAsync(context, new List <string>() { evaluateResult }); // レスポンスの作成 var response = new DropItemApiResponse() { itemInstanceList = grantResult, }; return(PlayFabSimpleJson.SerializeObject(response)); }catch (PMApiException e) { // レスポンスの作成 var response = new PMApiResponseBase() { errorCode = e.errorCode, message = e.message }; return(PlayFabSimpleJson.SerializeObject(response)); } }
public static async Task <dynamic> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req, ILogger log) { try{ string body = await req.ReadAsStringAsync(); var context = JsonConvert.DeserializeObject <FunctionExecutionContext <dynamic> >(body); var request = JsonConvert.DeserializeObject <FunctionExecutionContext <MonsterLevelUpApiRequest> >(body).FunctionArgument; // 対象のモンスターを取得 var userInventory = await DataProcessor.GetUserInventoryAsync(context); var userMonster = userInventory.userMonsterList.FirstOrDefault(u => u.id == request.userMonsterId); PMApiUtil.ErrorIf(userMonster == null, PMErrorCode.Unknown, "invalid userMonsterId"); // 経験値を十分に保持しているかチェック var exp = userInventory.userPropertyList.FirstOrDefault(u => u.propertyId == (long)PropertyType.MonsterExp); PMApiUtil.ErrorIf(exp == null || exp.num < request.exp, PMErrorCode.Unknown, "not enough exp"); // 何レベになるか計算 var levelUpTableList = await DataProcessor.GetMasterAsyncOf <MonsterLevelUpTableMB>(context); var afterExp = userMonster.customData.exp + request.exp; var targetLevelUpTable = levelUpTableList.OrderBy(m => m.id).LastOrDefault(m => m.totalRequiredExp <= afterExp); PMApiUtil.ErrorIf(targetLevelUpTable == null, PMErrorCode.Unknown, "invalid levelUpTable"); var afterLevel = targetLevelUpTable.level; // 対象のモンスターがマスタに存在するかチェック var monsterList = await DataProcessor.GetMasterAsyncOf <MonsterMB>(context); var monster = monsterList.FirstOrDefault(m => m.id == userMonster.monsterId); PMApiUtil.ErrorIf(monster == null, PMErrorCode.Unknown, "invalie monsterId"); // モンスターをレベルアップ var afterStatus = MonsterUtil.GetMonsterStatus(monster, afterLevel); var customData = new UserMonsterCustomData() { level = afterLevel, exp = afterExp, hp = afterStatus.hp, attack = afterStatus.attack, heal = afterStatus.heal, grade = userMonster.customData.grade, }; await DataProcessor.UpdateUserMonsterCustomDataAsync(context, userMonster.id, customData); // 経験値を消費 await DataProcessor.ConsumeItemAsync(context, exp.id, request.exp); // 強化後のレベルを返す var response = new MonsterLevelUpApiResponse() { level = afterLevel }; return(PlayFabSimpleJson.SerializeObject(response)); }catch (PMApiException e) { // レスポンスの作成 var response = new PMApiResponseBase() { errorCode = e.errorCode, message = e.message }; return(PlayFabSimpleJson.SerializeObject(response)); } }