コード例 #1
0
        public bool StoreUserScore(UserScoreParam param, ref UserRankInfo rankInfo)
        {
            using (var connection = new SQLiteConnection(ConnectionString))// 「DataSource=:memory:」にするとオンメモリのDBとして動作
            {
                // データベースに接続
                connection.Open();

                using (var context = new DataContext(connection))
                {
                    User user = User.Find(context, param.Sereal);

                    if (user == null)
                    {
                        connection.Close();
                        return(false);
                    }
                    UserScore score = new UserScore(user);
                    score.Point = param.Point;
                    bool ret = score.Commit(connection);

                    if (rankInfo != null)
                    {
                        rankInfo.UserId = score.UserId;
                        rankInfo.Name   = user.Name;
                        rankInfo.Point  = score.Point;
                        rankInfo.Rank   = score.Rank(context);
                    }

                    connection.Close();
                    return(ret);
                }
            }
        }
コード例 #2
0
        public void UploadScore(int point)
        {
            Debug.Assert(IsActive);
            Debug.Assert(UserInfo.Sereal != 0);
            UserScoreParam scoreInfo = new UserScoreParam();

            scoreInfo.Sereal = UserInfo.Sereal;
            scoreInfo.Point  = point;

            MessageMan.SendSystemMessage(MessageCommand.UploadUserScore, scoreInfo);
        }
コード例 #3
0
            public bool RecieveMessage(MessageManager manager, MessageHeader header, byte[] data)
            {
                Debug.Assert(data != null);
                string text = Encoding.UTF8.GetString(data);

                Console.WriteLine("Recieve " + header.Name);

                MessageCommand param;

                try
                {
                    param = (MessageCommand)Enum.Parse(typeof(MessageCommand), header.Name);
                }
                catch (Exception e)
                {
                    Console.WriteLine(header.Name + " is unmanaged " + e);
                    return(false);
                }
                switch (param)
                {
                case MessageCommand.Login:
                    UserInfo userInfo = JsonConvert.DeserializeObject <UserInfo>(text);

                    int userId = DBManager.UpdateUserData(userInfo);
                    if (userId > 0)
                    {
                        UserInfoResponse userInfoRespon = new UserInfoResponse(userInfo, userId);

                        // アップデートした情報を返す
                        manager.SendSystemMessage(MessageCommand.ResUserInfo, userInfoRespon);

                        lock (Server.ClientDataCollection)
                        {
                            foreach (var client in Server.ClientDataCollection)
                            {
                                if (client.Manager == manager)
                                {
                                    client.Serieal = userInfo.Sereal;
                                    client.Name    = userInfo.Name;
                                    client.UserId  = userId;
                                    break;
                                }
                            }
                        }
                    }
                    else
                    {
                        Console.WriteLine("Login Failed");
                        return(false);
                    }
                    break;

//                case "UploadScore":
                case MessageCommand.UploadUserScore:
                    UserScoreParam scoreParam = JsonConvert.DeserializeObject <UserScoreParam>(text);

                    UserRankInfo rankInfo = new UserRankInfo();

                    if (DBManager.StoreUserScore(scoreParam, ref rankInfo))
                    {
                        // アップデートした情報を返す
                        manager.SendSystemMessage(MessageCommand.ResUserRank, rankInfo);
                    }
                    else
                    {
                        Console.WriteLine("Login Failed");
                        return(false);
                    }

                    break;

//                case "ReqScoreRanking":
                case MessageCommand.GetScoreRanking:
                    RankingRequest rankingReq = JsonConvert.DeserializeObject <RankingRequest>(text);
                    UserRankInfo[] rankInfos  = DBManager.GetRanking(rankingReq);

                    if (rankInfos != null)
                    {
                        // アップデートした情報を返す
                        manager.SendSystemMessage(MessageCommand.ResScoreRanking, rankInfos);

                        Server.UserScoreRankDataCollection.Clear();

                        foreach (var info in rankInfos)
                        {
                            Server.UserScoreRankDataCollection.Add(new UserScoreRankData(info));
                        }
                    }
                    else
                    {
                        Console.WriteLine("Login Failed");
                        return(false);
                    }
                    break;

                default:
                    Console.WriteLine(header.Name + " is unmanaged");
                    //                        break;
                    return(false);
                }
                return(true);
            }