From eb4098766c64d35c99977069e73333c3e990ac6f Mon Sep 17 00:00:00 2001 From: gsy1519 <614054460@qq.com> Date: Sun, 26 Mar 2023 00:03:01 +0800 Subject: [PATCH] feat: :sparkles: achieve all rpc services --- logic/Server/CopyInfo.cs | 22 ++++++++++++++++++++++ logic/Server/GameServer.cs | 37 +++++++++++++++---------------------- 2 files changed, 37 insertions(+), 22 deletions(-) diff --git a/logic/Server/CopyInfo.cs b/logic/Server/CopyInfo.cs index f95a711..23455d6 100644 --- a/logic/Server/CopyInfo.cs +++ b/logic/Server/CopyInfo.cs @@ -175,6 +175,17 @@ namespace Server return Protobuf.StudentType.NullStudentType; } } + + public static Preparation.Utility.CharacterType ToStudentType(Protobuf.StudentType characterType) + { + switch (characterType) + { + case Protobuf.StudentType.Athlete: + return Preparation.Utility.CharacterType.Athlete; + default: + return Preparation.Utility.CharacterType.Null; + } + } public static Protobuf.TrickerType ToTrickerType(Preparation.Utility.CharacterType characterType) { switch (characterType) @@ -186,6 +197,17 @@ namespace Server } } + public static Preparation.Utility.CharacterType ToTrickerType(Protobuf.TrickerType characterType) + { + switch (characterType) + { + case Protobuf.TrickerType.Assassin: + return Preparation.Utility.CharacterType.Assassin; + default: + return Preparation.Utility.CharacterType.Null; + } + } + public static MessageOfObj? Auto(GameObj gameObj) { switch (gameObj.Type) diff --git a/logic/Server/GameServer.cs b/logic/Server/GameServer.cs index 00f6810..f263366 100644 --- a/logic/Server/GameServer.cs +++ b/logic/Server/GameServer.cs @@ -142,7 +142,7 @@ namespace Server currentNews.Clear(); } currentGameInfo.GameState = gameState; - currentGameInfo.AllMessage = new(); // 还没写 + currentGameInfo.AllMessage = GetMessageOfAll(); mwr?.WriteOne(currentGameInfo); break; case GameState.GameStart: @@ -160,7 +160,7 @@ namespace Server currentNews.Clear(); } currentGameInfo.GameState = gameState; - currentGameInfo.AllMessage = new(); // 还没写 + currentGameInfo.AllMessage = GetMessageOfAll(); // 还没写 mwr?.WriteOne(currentGameInfo); break; default: @@ -189,6 +189,13 @@ namespace Server if (playerID == 4) return 1; return -1; } + + private int PlayerTypeToTeamID(Protobuf.PlayerType playerType) + { + if (playerType == PlayerType.StudentPlayer) return 0; + if (playerType == PlayerType.TrickerPlayer) return 1; + return -1; + } private uint GetBirthPointIdx(long playerID) // 获取出生点位置 { return (uint)playerID + 1; // ID从0-4,出生点从1-5 @@ -304,29 +311,15 @@ namespace Server if (communicationToGameID[request.PlayerId] != GameObj.invalidID) //是否已经添加了该玩家 return; - Preparation.Utility.CharacterType characterType = Preparation.Utility.CharacterType.Null; // 待修改 + Preparation.Utility.CharacterType characterType = Preparation.Utility.CharacterType.Null; if (request.PlayerType == PlayerType.StudentPlayer) - { - switch (request.StudentType) - { - default: - characterType = Preparation.Utility.CharacterType.Athlete; - break; - } - } + characterType = CopyInfo.ToStudentType(request.StudentType); else if (request.PlayerType == PlayerType.TrickerPlayer) - { - switch (request.TrickerType) - { - default: - characterType = Preparation.Utility.CharacterType.Assassin; - break; - } - } + characterType = CopyInfo.ToTrickerType(request.TrickerType); lock (addPlayerLock) { - Game.PlayerInitInfo playerInitInfo = new(GetBirthPointIdx(request.PlayerId), PlayerIDToTeamID(request.PlayerId), request.PlayerId, characterType); + Game.PlayerInitInfo playerInitInfo = new(GetBirthPointIdx(request.PlayerId), PlayerTypeToTeamID(request.PlayerType), request.PlayerId, characterType); long newPlayerID = game.AddPlayer(playerInitInfo); if (newPlayerID == GameObj.invalidID) return; @@ -381,7 +374,7 @@ namespace Server if (!game.GameMap.Timer.IsGaming) moveRes.ActSuccess = false; return Task.FromResult(moveRes); } - + public override Task SendMessage(SendMsg request, ServerCallContext context) { var boolRes = new BoolRes(); @@ -551,7 +544,7 @@ namespace Server boolRes.ActSuccess = game.Stop(gameID); return Task.FromResult(boolRes); } - + public override Task SkipWindow(IDMsg request, ServerCallContext context) {