Ejemplo n.º 1
0
        public async Task <IActionResult> GetInventory([FromBody] GetInventory.Request req)
        {
            var db = PDBSM.PersonalDBContext(SelfHost.playerInfo.playerId);

            var query = db.ItemInventories.Where(i =>
                                                 i.playerId == SelfHost.playerInfo.playerId
                                                 );

            var inventorySrc = await query.ToListAsync();

            var inventoryDst = new List <GetInventory.Response.Item>();

            inventorySrc.ForEach(
                i => inventoryDst.Add(new GetInventory.Response.Item()
            {
                itemId = i.itemId,
                isNew  = i.isNew,
            })
                );

            MasterData.DefaultOwnedItems.ForEach(itemId =>

                                                 inventoryDst.Add(new GetInventory.Response.Item()
            {
                itemId = itemId,
                isNew  = false,
            })
                                                 );

            var res = new GetInventory.Response();

            res.inventory = inventoryDst;
            return(Ok(res));
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> GetInventory([FromBody] GetInventory.Request req)
        {
            var accountAccessToken = SelfHost.accountAccessToken;
            var playerId           = SelfHost.playerInfo.playerId;
            var db = PDBSM.PersonalDBContext(playerId);

            var inventoryDst = new List <GetInventory.Response.Model>();

            var inventorySrc = await evolib.GiveAndTake.BalanceAsync(
                MasterData,
                db,
                accountAccessToken,
                playerId);

            inventorySrc.ForEach(
                a => inventoryDst.Add(new GetInventory.Response.Model
            {
                type     = a.type,
                assetsId = a.assetsId,
                amount   = a.amount,
            })
                );

            var res = new GetInventory.Response();

            res.inventory = inventoryDst;
            return(Ok(res));
        }
        public async Task <IActionResult> SetOpenType([FromBody] SetOpenType.Request req)
        {
            var db = PDBSM.PersonalDBContext(SelfHost.playerInfo.playerId);

            var pbi = await db.PlayerBasicInformations.FindAsync(SelfHost.playerInfo.playerId);

            if (pbi == null)
            {
                return(BuildErrorResponse(Error.LowCode.ServerInternalError));
            }

            pbi.openType = req.openType.Value;
            await db.SaveChangesAsync();

            Logger.Logging(
                new LogObj().AddChild(new LogModels.SetOpenType
            {
                PlayerId = pbi.playerId,
                Date     = DateTime.UtcNow,
                OpenType = pbi.openType,
            })
                );

            await new Player(SelfHost.playerInfo.playerId).Invalidate();

            return(Ok(new SetOpenType.Response
            {
                openType = pbi.openType,
            }));
        }
Ejemplo n.º 4
0
        public async Task <IActionResult> GetStatus([FromBody] GetStatus.Request req)
        {
            var res = new GetStatus.Response();

            res.playerId = req.playerId.Value;
            res.list     = new List <AchievementStatusInfo>();

            var db = PDBSM.PersonalDBContext(res.playerId);

            var query = db.Achievements.Where(
                x => x.playerId == res.playerId);
            var records = await query.ToListAsync();

            foreach (var recordData in records)
            {
                AchievementStatusInfo statusInfo = new AchievementStatusInfo();
                statusInfo.achievementId = recordData.achievementId;
                statusInfo.value         = recordData.value;
                statusInfo.notified      = recordData.notified;
                statusInfo.obtained      = recordData.obtained;
                statusInfo.obtainedDate  = recordData.obtainedDate;

                res.list.Add(statusInfo);
            }

            return(Ok(res));
        }
Ejemplo n.º 5
0
        public async Task <IActionResult> SetMobileSuitOptions([FromBody] SetMobileSuitOptions.Request req)
        {
            foreach (var opt in req.options)
            {
                if (opt.mobileSuitId != CommonMobileSuitId &&
                    null == MasterData.GetMobileSuit(opt.mobileSuitId))
                {
                    return(BuildErrorResponse(Error.LowCode.BadParameter));
                }
            }

            var db = PDBSM.PersonalDBContext(SelfHost.playerInfo.playerId);


            var query   = db.MobileSuitOptions.Where(r => r.playerId == SelfHost.playerInfo.playerId);
            var recList = await query.ToListAsync();

            foreach (var opt in req.options)
            {
                var rec = recList.Find(r => r.mobileSuitId == opt.mobileSuitId);
                if (rec == null)
                {
                    continue;
                }

                for (var i = 0; i < opt.values.Length; i++)
                {
                    rec[i] = opt.values[i];
                }
            }

            await db.SaveChangesAsync();

            return(Ok(new SetMobileSuitOptions.Response()));
        }
Ejemplo n.º 6
0
        public async Task <IActionResult> FavoriteFriend([FromBody] ProtocolModels.Social.FavoriteFriend.Request req)
        {
            var db = PDBSM.PersonalDBContext(SelfHost.playerInfo.playerId);

            var record = await db.FavoriteFriends.FindAsync(SelfHost.playerInfo.playerId, req.playerId);

            if (record == null)
            {
                if (req.favorite.Value)
                {
                    await db.FavoriteFriends.AddAsync(new evolib.Databases.personal.FavoriteFriend
                    {
                        playerId         = SelfHost.playerInfo.playerId,
                        favoritePlayerId = req.playerId.Value,
                    });

                    await db.SaveChangesAsync();
                }
            }
            else
            {
                if (!req.favorite.Value)
                {
                    db.FavoriteFriends.Remove(record);
                    await db.SaveChangesAsync();
                }
            }

            var res = new ProtocolModels.Social.FavoriteFriend.Response();

            await GetFriendsResponse(res);

            return(Ok(res));
        }
        public async Task <IActionResult> Discipline(long playerId)
        {
            var db  = PDBSM.PersonalDBContext(playerId);
            var rec = await db.Disciplines.Where(r => r.playerId == playerId).FirstOrDefaultAsync();

            if (rec == null || rec.level == evolib.Discipline.Level.None)
            {
                return(Ok(new DisciplineInfo
                {
                    playerId = playerId,
                    level = evolib.Discipline.Level.None,
                    title = "",
                    text = "",
                    expirationDate = DateTime.MinValue,
                }));
            }

            return(Ok(new DisciplineInfo
            {
                playerId = rec.playerId,
                level = rec.level,
                title = rec.title,
                text = rec.text,
                expirationDate = rec.expirationDate,
            }));
        }
Ejemplo n.º 8
0
        public async Task <IActionResult> SetAppOption([FromBody] SetAppOption.Request req)
        {
            var db = PDBSM.PersonalDBContext(SelfHost.playerInfo.playerId);

            var reco = await db.AppOptions.FindAsync(SelfHost.playerInfo.playerId, req.category);

            if (reco == null)
            {
                return(BuildErrorResponse(Error.LowCode.BadParameter));
            }

            Logger.Logging(
                new LogObj().AddChild(new LogModels.SetAppOption
            {
                PlayerId = SelfHost.playerInfo.playerId,
                Date     = DateTime.UtcNow,
                Category = req.category,
                Values   = req.values,
            })
                );

            for (var i = 0; i < req.values.Length; i++)
            {
                reco[i] = req.values[i];
            }
            await db.SaveChangesAsync();

            return(Ok(new SetAppOption.Response()));
        }
        public async Task <IActionResult> GetList([FromBody] GetList.Request req)
        {
            var res = new GetList.Response();

            var playerId = SelfHost.playerInfo.playerId;
            var db       = PDBSM.PersonalDBContext(playerId);

            var srcList = await evolib.GivenHistory.GetAsync(playerId, db);

            res.list = new List <GetList.Response.History>();

            srcList.ForEach(
                i => res.list.Add(new GetList.Response.History
            {
                id        = i.Id,
                datetime  = i.obtainedDate,
                type      = i.type,
                presentId = (i.presentId != null) ? i.presentId : "",
                amount    = i.amount,
                giveType  = i.giveType,
                text      = (i.text != null) ? i.text : "",
            })
                );

            return(Ok(res));
        }
Ejemplo n.º 10
0
        public async Task <IActionResult> SearchPlayer([FromBody] SearchPlayer.Request req)
        {
            var res = new SearchPlayer.Response();

            res.items = new List <SearchPlayer.Response.Item>();

            var pbi = await Logic.SearchPlayer.ByPlayerName(req.searchKey, PDBSM, Common2DB);

            if (pbi == null)
            {
                pbi = await Logic.SearchPlayer.ByAccount(req.searchKey, PDBSM, Common1DB);

                if (pbi == null)
                {
                    return(Ok(res));
                }
            }

            res.player = new SearchPlayer.Response.Player()
            {
                playerId     = pbi.playerId,
                playerName   = pbi.playerName,
                initialLevel = pbi.initialLevel,
            };

            await MasterDataLoader.LoadAsync();

            var masterData = MasterDataLoader.LatestMasterData;

            if (masterData == null)
            {
                return(Ok(res));
            }

            var ownedRecords
                = await PDBSM.PersonalDBContext(pbi.playerId).ItemInventories.Where(r => r.playerId == pbi.playerId).ToListAsync();


            foreach (var itemId in masterData.AllItemIds)
            {
                var item = masterData.GetItemFromItemId(itemId);

                res.items.Add(new SearchPlayer.Response.Item()
                {
                    itemId      = item.itemId,
                    itemType    = item.itemType.ToString(),
                    displayName = item.displayName,
                    owned       = null != ownedRecords.Find(r => r.itemId == item.itemId) ||
                                  masterData.CheckDefaultOwnedItem(item.itemId),
                    isDefault = masterData.CheckDefaultOwnedItem(item.itemId),
                });
            }

            return(Ok(res));
        }
        public async Task <IActionResult> SetFirstOnetime([FromBody] SetFirstOnetime.Request req)
        {
            var db = PDBSM.PersonalDBContext(SelfHost.playerInfo.playerId);

            var pbi = await db.PlayerBasicInformations.FindAsync(SelfHost.playerInfo.playerId);

            if (pbi == null)
            {
                return(BuildErrorResponse(Error.LowCode.ServerInternalError));
            }

            if (0 != (pbi.initialLevel & PlayerInformation.InitialLevelFlg.Name))
            {
                return(BuildErrorResponse(Error.LowCode.BadRequest));
            }

            if (MasterData.CheckNgWords(req.playerName))
            {
                return(BuildErrorResponse(Error.LowCode.NgWord));
            }


            try
            {
                await Common2DB.PlayerNames.AddAsync(new PlayerName
                {
                    playerName = req.playerName,
                    playerId   = pbi.playerId,
                });

                await Common2DB.SaveChangesAsync();
            }
            catch            //(Exception ex)
            {
                return(BuildErrorResponse(Error.LowCode.OverlapName));
            }

            pbi.playerName    = req.playerName;
            pbi.initialLevel |= PlayerInformation.InitialLevelFlg.Name;
            await db.SaveChangesAsync();

            await new Player(SelfHost.playerInfo.playerId).Invalidate();

            var session = new Session(SelfHost.sessionId);

            session.Model.initialLevel = pbi.initialLevel;
            await session.SaveAsync();

            return(Ok(new SetFirstOnetime.Response
            {
                initialLevel = pbi.initialLevel,
            }));
        }
Ejemplo n.º 12
0
        public async Task <IActionResult> Discipline([FromBody] Discipline.Request req)
        {
            var db  = PDBSM.PersonalDBContext(req.playerId);
            var rec = await db.Disciplines.Where(r => r.playerId == req.playerId).FirstOrDefaultAsync();

            if (rec == null)
            {
                rec = new evolib.Databases.personal.Discipline
                {
                    playerId = req.playerId,
                };
                await db.Disciplines.AddAsync(rec);
            }

            rec.level          = req.level;
            rec.title          = req.title ?? "";
            rec.text           = req.text ?? "";
            rec.expirationDate = req.expirationDate;
            await db.SaveChangesAsync();

            if (evolib.Discipline.Level.Ban <= rec.level)
            {
                var player = new evolib.Kvs.Models.Player(req.playerId);
                if (await player.FetchAsync())
                {
                    var session = new evolib.Kvs.Models.Session(player.Model.sessionId);
                    session.Model.banned = true;
                    await session.SaveAsync(TimeSpan.FromSeconds(60));
                }
            }

            if (evolib.Discipline.Level.None != rec.level)
            {
                Logger.Logging(new LogObj().AddChild(new LogModels.Discipline
                {
                    playerId       = rec.playerId,
                    level          = rec.level,
                    title          = rec.title,
                    text           = rec.text,
                    expirationDate = rec.expirationDate,
                }));
            }

            return(Ok(new Discipline.Response
            {
                playerId = rec.playerId,
                level = rec.level,
                title = rec.title,
                text = rec.text,
                expirationDate = rec.expirationDate,
            }));
        }
Ejemplo n.º 13
0
        public async Task <IActionResult> SetStampSlot([FromBody] SetStampSlot.Request req)
        {
            var db = PDBSM.PersonalDBContext(SelfHost.playerInfo.playerId);

            if (!await Validation(req.mobileSuitIds,
                                  evolib.Item.Type.Stamp,
                                  req.stampItemIds,
                                  db))
            {
                return(BuildErrorResponse(Error.LowCode.BadParameter));
            }

            var playerId = SelfHost.playerInfo.playerId;

            var rs = new DbRecordsStocker();
            await rs.Init(PDBSM, new List <long>() { playerId }, req.mobileSuitIds);

            var res = new SetStampSlot.Response();

            res.settings = new List <Setting>();

            for (int i = 0; i < req.mobileSuitIds.Count; i++)
            {
                var msId = req.mobileSuitIds[i];

                var result = rs.Get(playerId, msId, MasterData);
                await result.AddToDb(PDBSM);

                result.msRecord.stampSlotItemId1 = req.stampItemIds[0];
                result.msRecord.stampSlotItemId2 = req.stampItemIds[1];
                result.msRecord.stampSlotItemId3 = req.stampItemIds[2];
                result.msRecord.stampSlotItemId4 = req.stampItemIds[3];

                res.settings.Add(result.ToSetting());

                Logger.Logging(
                    new LogObj().AddChild(new LogModels.ChangePalletItem
                {
                    PlayerId = playerId,
                    Date     = DateTime.UtcNow,
                    UnitId   = msId,
                    ItemType = evolib.Item.Type.Stamp,
                    ItemIds  = req.stampItemIds,
                })
                    );
            }

            await db.SaveChangesAsync();

            return(Ok(res));
        }
Ejemplo n.º 14
0
        public async Task <IActionResult> GetList([FromBody] GetList.Request req)
        {
            var playerId = SelfHost.playerInfo.playerId;
            var db       = PDBSM.PersonalDBContext(playerId);

            var srcList = await evolib.ChallengeList.GetAsync(playerId, MasterData, db);

            var ret = new GetList.Response();

            ret.list = srcList.Select(r =>
            {
                var isPaidChallenge = false;
                var unlocked        = true;
                if (r.type != evolib.Challenge.Type.Beginner)
                {
                    // TODO: 抽選で有償枠に入ったチャレンジの時にtrueを設定
                    isPaidChallenge = false;

                    unlocked = r.unlocked;
                }

                return(new ChallengeStatus()
                {
                    challengeId = r.challengeId,
                    num = r.value,
                    completed = (r.status == evolib.Challenge.Status.Clear),
                    type = r.type,
                    isPaidChallenge = isPaidChallenge,
                    unlocked = unlocked,
                    expirationDate = r.expirationDate,
                });
            })
                       .ToList();

            var beginnerTarget = srcList
                                 .FirstOrDefault(r => r.type == evolib.Challenge.Type.Beginner &&
                                                 r.unlocked && r.status != evolib.Challenge.Status.Clear);

            ret.currentSheet = String.Empty;
            if (beginnerTarget != null)
            {
                var challengeInfo = MasterData.GetChallenge(beginnerTarget.challengeId);
                if (challengeInfo != null)
                {
                    ret.currentSheet = challengeInfo.sheetId;
                }
            }

            return(Ok(ret));
        }
Ejemplo n.º 15
0
        public async Task <IActionResult> PassExpSave([FromBody] PassExpSave.Request req)
        {
            var res = new PassExpSave.Response();

            // プレイヤー毎
            foreach (var addData in req.passExp)
            {
                var playerId = addData.playerId;
                var db       = PDBSM.PersonalDBContext(playerId);

                foreach (var info in addData.expInfo)
                {
                    var reco = await db.BattlePasses.FindAsync(playerId, info.passId);

                    if (reco == null)
                    {
                        var userData = new evolib.Databases.personal.BattlePass();
                        userData.playerId    = playerId;
                        userData.passId      = info.passId;
                        userData.isPremium   = false;
                        userData.totalExp    = (UInt64)info.addExp;
                        userData.createdDate = DateTime.UtcNow;
                        userData.updatedDate = DateTime.UtcNow;
                        // passIdと経験値からレベルを計算
                        userData.SetLevelDetail(MasterData);

                        // TODO:MasterDataからレベルに応じて報酬アイテムを獲得させる

                        // パス購入前のExp初加算時なので有償アイテムレベルは初期値
                        userData.rewardLevel = 0;

                        await db.BattlePasses.AddAsync(userData);
                    }
                    else
                    {
                        reco.totalExp   += (UInt64)info.addExp;
                        reco.updatedDate = DateTime.UtcNow;
                        reco.SetLevelDetail(MasterData);

                        // TODO:MasterDataからレベルに応じて報酬アイテムを獲得させる
                    }
                }
                // 1プレイヤー保存
                await db.SaveChangesAsync();

                await new Player(playerId).Invalidate();
            }

            return(Ok(res));
        }
        public async Task <IActionResult> ChangePretendOffline([FromBody] ChangePretendOffline.Request req)
        {
            var db = PDBSM.PersonalDBContext(SelfHost.playerInfo.playerId);

            var pbi = await db.PlayerBasicInformations.FindAsync(SelfHost.playerInfo.playerId);

            if (pbi == null)
            {
                return(BuildErrorResponse(Error.LowCode.ServerInternalError));
            }

            pbi.pretendOffline = req.enabled.Value;
            await db.SaveChangesAsync();

            Logger.Logging(
                new LogObj().AddChild(new LogModels.ChangePretendOffline
            {
                PlayerId       = pbi.playerId,
                Date           = DateTime.UtcNow,
                PretendOffline = pbi.pretendOffline,
            })
                );

            var session = new Session(SelfHost.sessionId);

            session.Model.pretendedOffline = req.enabled.Value;
            await session.SaveAsync();

            if (session.Model.pretendedOffline)
            {
                var onlineState = new OnlineState(SelfHost.playerInfo.playerId);
                await onlineState.DeleteAsync();
            }
            else
            {
                var onlineState = new OnlineState(SelfHost.playerInfo.playerId);
                onlineState.Model.state     = req.onlineState;
                onlineState.Model.sessionId = SelfHost.sessionId;
                await onlineState.SaveAsync();
            }

            await new Player(SelfHost.playerInfo.playerId).Invalidate();

            return(Ok(new ChangePretendOffline.Response
            {
                enabled = req.enabled.Value,
            }));
        }
Ejemplo n.º 17
0
        public async Task <IActionResult> SetMvpCelebration([FromBody] SetMvpCelebration.Request req)
        {
            var db = PDBSM.PersonalDBContext(SelfHost.playerInfo.playerId);

            if (!await Validation(new List <string>()
            {
                req.mobileSuitId
            },
                                  evolib.Item.Type.MvpCelebration,
                                  new List <string>()
            {
                req.mvpCelebrationItemId
            },
                                  db))
            {
                return(BuildErrorResponse(Error.LowCode.BadParameter));
            }

            var playerId = SelfHost.playerInfo.playerId;
            var msId     = req.mobileSuitId;

            var rs = new DbRecordsStocker();
            await rs.Init(PDBSM, new List <long>() { playerId }, new List <string>() { msId });

            var result = rs.Get(playerId, msId, MasterData);
            await result.AddToDb(PDBSM);

            result.msRecord.mvpCelebrationItemId = req.mvpCelebrationItemId;

            await db.SaveChangesAsync();

            Logger.Logging(
                new LogObj().AddChild(new LogModels.ChangeCustomItem
            {
                PlayerId = playerId,
                Date     = DateTime.UtcNow,
                UnitId   = msId,
                ItemType = evolib.Item.Type.MvpCelebration,
                ItemId   = req.mvpCelebrationItemId,
            })
                );

            return(Ok(new SetMvpCelebration.Response
            {
                setting = result.ToSetting(),
            }));
        }
Ejemplo n.º 18
0
        public async Task <IActionResult> GetList([FromBody] GetList.Request req)
        {
            var res = new GetList.Response();

            int takeNum = req.getNum.Value;
            int skipNum = req.pageNum * takeNum;

            var now = DateTime.UtcNow;

            var db    = PDBSM.PersonalDBContext(SelfHost.playerInfo.playerId);
            var query = db.PresentBoxs.Where(i =>
                                             i.playerId == SelfHost.playerInfo.playerId &&
                                             i.beginDate <now &&
                                                          i.endDate> now
                                             );
            var source = await query.ToListAsync();

            source.Sort((a, b) => (a.endDate.CompareTo(b.endDate)));

            var count = source.Count;

            res.count = count;

            var dataSrc = new List <PresentBox>();

            dataSrc.AddRange(source.Skip(skipNum).Take(takeNum));

            var dataDst = new List <GetList.Response.Present>();

            dataSrc.ForEach(
                i => dataDst.Add(new GetList.Response.Present()
            {
                id        = i.Id,
                datetime  = i.endDate,
                type      = i.type,
                presentId = (i.presentId != null) ? i.presentId : "",
                amount    = i.amount,
                giveType  = i.giveType,
                text      = (i.text != null) ? i.text : "",
            })
                );

            res.list = dataDst;

            return(Ok(res));
        }
        private async Task <List <UseMobileSuitInfo> > getUseMobileSuitSeasonTop3List(long playerId)
        {
            var useMsTop3 = new List <UseMobileSuitInfo>();

            evolib.Services.MasterData.ISeason currentSeason = MasterData.GetCurrentSeason();

            //現在のシーズンが取得出来なかったなら、機体の使用率のリストを空で終了する
            if (currentSeason == null)
            {
                return(useMsTop3);
            }

            int seasonNoOfRankMatch = currentSeason.seasonNo;

            var db = PDBSM.PersonalDBContext(playerId);

            // 戦績から現在のシーズンの機体の使用時間のリストを取得する(使用時間の長い順にソート)
            var useMsList = await db.CareerRecords
                            .Where(x =>
                                   x.playerId == playerId &&
                                   x.matchType == evolib.Battle.MatchType.Rank &&
                                   x.seasonNo == seasonNoOfRankMatch &&
                                   x.recordItemId == evolib.CareerRecord.RECORD_ID_PLAY_TIME)
                            .OrderByDescending(x => x.value)
                            .ToListAsync();

            // プレイヤーがシーズンでプレイした時間(全機体の使用時間の合計)を取得する
            double totalUseTime = useMsList.Sum(x => x.value);

            // プレイヤーの使用時間の長い機体TOP3を取得する
            foreach (var playTime in useMsList)
            {
                useMsTop3.Add(new UseMobileSuitInfo
                {
                    mobileSuitId = playTime.mobileSuitId,
                    useRate      = (totalUseTime <= 0.0f) ? 0.0f :  (float)((playTime.value / totalUseTime) * 100.0f),
                });

                if (3 <= useMsTop3.Count())
                {
                    break;
                }
            }

            return(useMsTop3);
        }
        public async Task <IActionResult> GetSelf([FromBody] GetSelf.Request req)
        {
            var res = new GetSelf.Response();

            var playerId = SelfHost.playerInfo.playerId;
            var db       = PDBSM.PersonalDBContext(playerId);

            // カジュアルマッチの戦績取得
            {
                int seasonNoOfCasualMatch = 0;
                var casualMatchRecords    = await db.CareerRecords
                                            .Where(x =>
                                                   x.playerId == playerId &&
                                                   x.matchType == evolib.Battle.MatchType.Casual &&
                                                   x.seasonNo == seasonNoOfCasualMatch)
                                            .ToListAsync();

                res.casual = createRecordInfoList(casualMatchRecords);
            }

            // ランクマッチの戦績取得
            {
                evolib.Services.MasterData.ISeason currentSeason = MasterData.GetCurrentSeason();

                //現在のシーズンが取得出来なかったなら、ランクマッチの戦績リストを空で終了する
                if (currentSeason == null)
                {
                    res.rank = new List <RecordInfo>();
                }
                else
                {
                    int seasonNoOfRankMatch = currentSeason.seasonNo;

                    var rankMatchRecords = await db.CareerRecords
                                           .Where(x =>
                                                  x.playerId == playerId &&
                                                  x.matchType == evolib.Battle.MatchType.Rank &&
                                                  x.seasonNo == seasonNoOfRankMatch)
                                           .ToListAsync();

                    res.rank = createRecordInfoList(rankMatchRecords);
                }
            }

            return(Ok(res));
        }
Ejemplo n.º 21
0
        public async Task <IActionResult> AddAssets([FromBody] AddAssets.Request req)
        {
            var db  = PDBSM.PersonalDBContext(req.playerId.Value);
            var pbi = await db.PlayerBasicInformations.FindAsync(req.playerId);

            if (pbi == null)
            {
                return(BuildErrorResponse("BadParameter"));
            }

            await MasterDataLoader.LoadAsync();

            var masterData = MasterDataLoader.LatestMasterData;

            if (masterData == null)
            {
                return(BuildErrorResponse("Server Side Err."));
            }

            if (GiveAndTake.GiveResult.Ok != await GiveAndTake.GiveAsync(
                    masterData,
                    db,
                    "",
                    req.playerId.Value,
                    new GiveAndTake.GiveModel
            {
                model = new GiveAndTake.Model
                {
                    type = GiveAndTake.Type.Assets,
                    assetsId = req.assetsId,
                    amount = req.amount,
                },
                historyModel = new GiveAndTake.HistoryModel
                {
                    giveType = evolib.PresentBox.Type.Management,
                    text = "AddAssets",
                },
            }
                    ))
            {
                return(BuildErrorResponse("BadParameter"));
            }

            return(Ok());
        }
Ejemplo n.º 22
0
        public async Task <IActionResult> TakePresent([FromBody] TakePresent.Request req)
        {
            var res = new TakePresent.Response();

            var db  = PDBSM.PersonalDBContext(req.playerId.Value);
            var pbi = await db.PlayerBasicInformations.FindAsync(req.playerId);

            if (pbi == null)
            {
                return(BuildErrorResponse("BadParameter"));
            }

            await MasterDataLoader.LoadAsync();

            var masterData = MasterDataLoader.LatestMasterData;

            if (masterData == null)
            {
                return(BuildErrorResponse("Server Side Err."));
            }

            var setting = new evolib.PresentBox.Setting
            {
                beginDate = req.beginDate,
                endDate   = req.endDate,
                text      = req.text,
            };

            var model = new evolib.PresentBox.Model
            {
                type        = req.type,
                id          = req.id,
                amount      = req.amount,
                presentType = req.presentType,
                setting     = setting,
            };

            // プレゼントボックスに保存する
            var result = await evolib.PresentBox.TakeAsync(
                masterData, db,
                req.playerId.Value,
                model);

            return(Ok(res));
        }
Ejemplo n.º 23
0
        public async Task <IActionResult> ResetInitialLevelFlg([FromBody] ResetInitialLevelFlg.Request req)
        {
            var db  = PDBSM.PersonalDBContext(req.playerId.Value);
            var pbi = await db.PlayerBasicInformations.FindAsync(req.playerId);

            if (pbi == null)
            {
                return(BuildErrorResponse("BadParameter"));
            }

            pbi.initialLevel &= ~(1 << req.flgIndex);
            await db.SaveChangesAsync();

            var res = new ResetInitialLevelFlg.Response();

            res.playerId     = req.playerId.Value;
            res.initialLevel = pbi.initialLevel;
            return(Ok(res));
        }
Ejemplo n.º 24
0
        public async Task <IActionResult> ViewedFriendRequestsPage([FromBody] ViewedFriendRequestsPage.Request req)
        {
            var db = PDBSM.PersonalDBContext(SelfHost.playerInfo.playerId);

            var dateLog = await db.DateLogs.FindAsync(SelfHost.playerInfo.playerId);

            if (dateLog == null)
            {
                dateLog = new DateLog(SelfHost.playerInfo.playerId);
                await db.DateLogs.AddAsync(dateLog);
            }

            dateLog.FriendRequestPageLastView = DateTime.UtcNow;
            await db.SaveChangesAsync();

            var res = new ViewedFriendRequestsPage.Response();

            return(Ok(res));
        }
        public async Task <IActionResult> SetPlayerIcon([FromBody] SetPlayerIcon.Request req)
        {
            var db = PDBSM.PersonalDBContext(SelfHost.playerInfo.playerId);

            var item = MasterData.GetItemFromItemId(req.playerIconItemId);

            if (item == null || item.itemType != Item.Type.PlayerIcon)
            {
                return(BuildErrorResponse(Error.LowCode.BadParameter));
            }

            if (!MasterData.CheckDefaultOwnedItem(req.playerIconItemId) &&          //not default
                !await db.ItemInventories.AnyAsync(                   //don't have
                    i => i.playerId == SelfHost.playerInfo.playerId && i.itemId == req.playerIconItemId))
            {
                //don't have
                return(BuildErrorResponse(Error.LowCode.BadParameter));
            }

            var pbi = await db.PlayerBasicInformations.FindAsync(SelfHost.playerInfo.playerId);

            pbi.playerIconItemId = req.playerIconItemId;
            await db.SaveChangesAsync();

            await new Player(SelfHost.playerInfo.playerId).Invalidate();

            Logger.Logging(
                new LogObj().AddChild(new LogModels.ChangeCustomItem
            {
                PlayerId = SelfHost.playerInfo.playerId,
                Date     = DateTime.UtcNow,
                UnitId   = "",
                ItemType = evolib.Item.Type.PlayerIcon,
                ItemId   = req.playerIconItemId,
            })
                );

            return(Ok(new SetPlayerIcon.Response
            {
                playerIconItemId = req.playerIconItemId,
            }));
        }
Ejemplo n.º 26
0
        public async Task <IActionResult> GetSettingsList([FromBody] GetSettingsList.Request req)
        {
            var res = new GetSettingsList.Response();

            res.settingsList = new List <GetSettingsList.Settings>();

            var rs = new DbRecordsStocker();
            await rs.Init(PDBSM, req.playerIds);


            foreach (var playerId in req.playerIds)
            {
                var settings = new GetSettingsList.Settings
                {
                    playerId = playerId,
                    settings = new List <Setting>(),
                };

                foreach (var msId in MasterData.AllMobileSuitIds)
                {
                    var result = rs.Get(playerId, msId, MasterData);

                    if (SelfHost.hostType == HostType.Player && playerId == SelfHost.playerInfo.playerId)
                    {
                        await result.AddToDb(PDBSM);
                    }

                    settings.settings.Add(result.ToSetting());
                }

                res.settingsList.Add(settings);
            }

            if (SelfHost.hostType == HostType.Player)
            {
                await PDBSM.PersonalDBContext(SelfHost.playerInfo.playerId).SaveChangesAsync();
            }

            return(Ok(res));
        }
        public async Task <IActionResult> ChangePlayerName([FromBody] ChangePlayerName.Request req)
        {
            var db = PDBSM.PersonalDBContext(SelfHost.playerInfo.playerId);

            var pbi = await db.PlayerBasicInformations.FindAsync(SelfHost.playerInfo.playerId);

            if (pbi == null)
            {
                return(BuildErrorResponse(Error.LowCode.ServerInternalError));
            }

            if (MasterData.CheckNgWords(req.playerName))
            {
                return(BuildErrorResponse(Error.LowCode.NgWord));
            }

            // TODO ここは仕様が決まってから

            return(Ok(new ChangePlayerName.Response
            {
                playerName = pbi.playerName,
            }));
        }
Ejemplo n.º 28
0
        public async Task <IActionResult> GetPassStatus([FromBody] GetPassStatus.Request req)
        {
            var res = new GetPassStatus.Response();

            // user data
            var db    = PDBSM.PersonalDBContext(SelfHost.playerInfo.playerId);
            var query = db.BattlePasses.Where(i =>
                                              i.playerId == SelfHost.playerInfo.playerId
                                              );
            var dataSrc = await query.ToListAsync();

            //
            var battlePasses = MasterData.GetEnableBattlePass();
            var dataDst      = new List <GetPassStatus.PassStatus>();

            foreach (var pass in battlePasses)
            {
                var temp = new GetPassStatus.PassStatus();
                temp.passId    = pass.id;
                temp.totalExp  = 0;
                temp.isPremium = false;
                foreach (var data in dataSrc)
                {
                    if (data.passId == pass.id)
                    {
                        temp.passId    = data.passId;
                        temp.totalExp  = data.totalExp;
                        temp.isPremium = data.isPremium;
                        break;
                    }
                }
                dataDst.Add(temp);
            }
            res.passStatusArray = dataDst;

            return(Ok(res));
        }
Ejemplo n.º 29
0
        public async Task <IActionResult> Watched2([FromBody] Watched2.Request req)
        {
            var db = PDBSM.PersonalDBContext(SelfHost.playerInfo.playerId);

            var query = db.ItemInventories.Where(i =>
                                                 i.playerId == SelfHost.playerInfo.playerId
                                                 );

            var items = await query.ToListAsync();

            items.ForEach(item =>
            {
                if (item.isNew != false && null != req.itemIds.Find(id => id == item.itemId))
                {
                    item.isNew = false;
                }
            });
            await db.SaveChangesAsync();


            var res = new Watched2.Response();

            return(Ok(res));
        }
        public async Task <IActionResult> TutorialEnd([FromBody] TutorialEnd.Request req)
        {
            var db = PDBSM.PersonalDBContext(SelfHost.playerInfo.playerId);

            var pbi = await db.PlayerBasicInformations.FindAsync(SelfHost.playerInfo.playerId);

            if (pbi == null)
            {
                return(BuildErrorResponse(Error.LowCode.ServerInternalError));
            }

            pbi.initialLevel |= PlayerInformation.InitialLevelFlg.Tutorial;
            await db.SaveChangesAsync();

            var session = new Session(SelfHost.sessionId);

            session.Model.initialLevel = pbi.initialLevel;
            await session.SaveAsync();

            return(Ok(new TutorialEnd.Response
            {
                initialLevel = pbi.initialLevel,
            }));
        }