Browse Source

fix: change AllowSpectator to NotAllowSpectator and restrict deceased student sending message

tags/0.1.0
gsy1519 2 years ago
parent
commit
5cdddd6667
3 changed files with 21 additions and 7 deletions
  1. +2
    -2
      logic/Server/ArgumentOption.cs
  2. +17
    -3
      logic/Server/GameServer.cs
  3. +2
    -2
      logic/Server/RpcServices.cs

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

@@ -39,8 +39,8 @@ namespace Server
[Option('f', "fileName", Required = false, HelpText = "The file to store playback file or to read file.")]
public string FileName { get; set; } = DefaultArgumentOptions.FileName;

[Option('s', "allowSpectator", Required = false, HelpText = "Whether to allow a spectator to watch the game.")]
public bool AllowSpectator { get; set; } = false;
[Option("notAllowSpectator", Required = false, HelpText = "Whether to allow a spectator to watch the game.")]
public bool NotAllowSpectator { get; set; } = false;

[Option('b', "playback", Required = false, HelpText = "Whether open the server in a playback mode.")]
public bool Playback { get; set; } = false;


+ 17
- 3
logic/Server/GameServer.cs View File

@@ -168,6 +168,23 @@ namespace Server
kvp.Value.Item2.Wait();
}
}
private bool playerDeceased(int playerID)
{
game.GameMap.GameObjLockDict[GameObjType.Character].EnterReadLock();
try
{
foreach (Character character in game.GameMap.GameObjDict[GameObjType.Character])
{
if (character.PlayerID == playerID && character.PlayerState == PlayerStateType.Deceased) return true;
}
}
finally
{
game.GameMap.GameObjLockDict[GameObjType.Character].ExitReadLock();
}
return false;
}

public int[] GetScore()
{
int[] score = new int[2]; // 0代表Student,1代表Tricker
@@ -222,9 +239,6 @@ namespace Server
int[] score = GetScore();
msg.StudentScore = score[0];
msg.TrickerScore = score[1];
//msg.GateOpened
//msg.HiddenGateRefreshed
//msg.HiddenGateOpened
return msg;
}



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

@@ -56,7 +56,7 @@ namespace Server
{

Console.WriteLine($"AddPlayer: {request.PlayerId}");
if (request.PlayerId >= spectatorMinPlayerID && options.AllowSpectator == true)
if (request.PlayerId >= spectatorMinPlayerID && options.NotAllowSpectator == false)
{
// 观战模式
uint tp = (uint)request.PlayerId;
@@ -194,7 +194,7 @@ namespace Server
public override Task<BoolRes> SendMessage(SendMsg request, ServerCallContext context)
{
var boolRes = new BoolRes();
if (request.PlayerId >= spectatorMinPlayerID)
if (request.PlayerId >= spectatorMinPlayerID || playerDeceased((int)request.PlayerId))
{
boolRes.ActSuccess = false;
return Task.FromResult(boolRes);


Loading…
Cancel
Save