Browse Source

Merge pull request #207 from gsy1519/dev

fix: fix bugs of Playback and MessageToClient and fix problem of calling AllPlayerUsePassiveSkill
tags/0.1.0
shangfengh GitHub 2 years ago
parent
commit
d4567acf9d
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 24 deletions
  1. +2
    -2
      logic/Server/CopyInfo.cs
  2. +9
    -22
      logic/Server/GameServer.cs

+ 2
- 2
logic/Server/CopyInfo.cs View File

@@ -241,10 +241,10 @@ namespace Server
case Preparation.Utility.GameObjType.EmergencyExit: case Preparation.Utility.GameObjType.EmergencyExit:
if (((EmergencyExit)gameObj).CanOpen) if (((EmergencyExit)gameObj).CanOpen)
return HiddenGate((EmergencyExit)gameObj); return HiddenGate((EmergencyExit)gameObj);
else return new MessageOfObj();
else return null;
case Preparation.Utility.GameObjType.Door: case Preparation.Utility.GameObjType.Door:
return Door((Door)gameObj); return Door((Door)gameObj);
default: return new MessageOfObj();
default: return null;
} }
} }
public static MessageOfObj? Auto(MessageOfNews news) public static MessageOfObj? Auto(MessageOfNews news)


+ 9
- 22
logic/Server/GameServer.cs View File

@@ -10,6 +10,7 @@ using Preparation.Utility;
using Playback; using Playback;
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using Preparation.Interface;




namespace Server namespace Server
@@ -56,6 +57,7 @@ namespace Server
if (flag == true) if (flag == true)
{ {
ReportGame(GameState.GameStart); ReportGame(GameState.GameStart);
game.AllPlayerUsePassiveSkill();
flag = false; flag = false;
} }
else ReportGame(GameState.GameRunning); else ReportGame(GameState.GameRunning);
@@ -118,7 +120,6 @@ namespace Server
SendGameResult(); SendGameResult();
this.endGameSem.Release(); this.endGameSem.Release();
} }

public void ReportGame(GameState gameState, bool requiredGaming = true) public void ReportGame(GameState gameState, bool requiredGaming = true)
{ {
var gameObjList = game.GetGameObj(); var gameObjList = game.GetGameObj();
@@ -129,38 +130,24 @@ namespace Server
{ {
case GameState.GameRunning: case GameState.GameRunning:
case GameState.GameEnd: case GameState.GameEnd:
foreach (GameObj gameObj in gameObjList)
{
currentGameInfo.ObjMessage.Add(CopyInfo.Auto(gameObj));
}
lock (newsLock)
{
foreach (var news in currentNews)
{
currentGameInfo.ObjMessage.Add(CopyInfo.Auto(news));
}
currentNews.Clear();
}
currentGameInfo.GameState = gameState;
currentGameInfo.AllMessage = GetMessageOfAll();
mwr?.WriteOne(currentGameInfo);
break;
case GameState.GameStart: case GameState.GameStart:
currentGameInfo.ObjMessage.Add(currentMapMsg); currentGameInfo.ObjMessage.Add(currentMapMsg);
foreach (GameObj gameObj in gameObjList) foreach (GameObj gameObj in gameObjList)
{ {
currentGameInfo.ObjMessage.Add(CopyInfo.Auto(gameObj));
MessageOfObj? msg = CopyInfo.Auto(gameObj);
if (msg != null) currentGameInfo.ObjMessage.Add(CopyInfo.Auto(gameObj));
} }
lock (newsLock) lock (newsLock)
{ {
foreach (var news in currentNews) foreach (var news in currentNews)
{ {
currentGameInfo.ObjMessage.Add(CopyInfo.Auto(news));
MessageOfObj? msg = CopyInfo.Auto(news);
if (msg != null) currentGameInfo.ObjMessage.Add(CopyInfo.Auto(news));
} }
currentNews.Clear(); currentNews.Clear();
} }
currentGameInfo.GameState = gameState; currentGameInfo.GameState = gameState;
currentGameInfo.AllMessage = GetMessageOfAll(); // 还没写
currentGameInfo.AllMessage = GetMessageOfAll();
mwr?.WriteOne(currentGameInfo); mwr?.WriteOne(currentGameInfo);
break; break;
default: default:
@@ -230,8 +217,8 @@ namespace Server
{ {
game.GameMap.GameObjLockDict[GameObjType.Character].ExitReadLock(); game.GameMap.GameObjLockDict[GameObjType.Character].ExitReadLock();
} }
//msg.GateOpened =
//msg.HiddenGateRefreshed =
//msg.GateOpened
//msg.HiddenGateRefreshed
//msg.HiddenGateOpened //msg.HiddenGateOpened
return msg; return msg;
} }


Loading…
Cancel
Save