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