Browse Source

Merge pull request #428 from eesast/dev

fix: docker build server
tags/0.1.0
Changli Tang GitHub 2 years ago
parent
commit
cf9a82a334
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 23 additions and 9 deletions
  1. +2
    -2
      dependency/Dockerfile/Dockerfile_run
  2. +2
    -2
      logic/Server/ArgumentOption.cs
  3. +17
    -3
      logic/Server/GameServer.cs
  4. +2
    -2
      logic/Server/RpcServices.cs

+ 2
- 2
dependency/Dockerfile/Dockerfile_run View File

@@ -2,12 +2,12 @@ FROM mcr.microsoft.com/dotnet/sdk:6.0.408-jammy-amd64 AS build
MAINTAINER eesast
WORKDIR /usr/local
COPY . .
RUN dotnet publish logic/Server/Server.csproj -c Release -o /usr/local/Server
RUN dotnet publish logic/Server/Server.csproj -c Release -o /usr/local/Server --self-contained true

FROM eesast/thuai6_base:base
MAINTAINER eesast
WORKDIR /usr/local
COPY --from=build /usr/local/Server .
COPY --from=build /usr/local/Server/* .
RUN mkdir /usr/local/team1 && mkdir /usr/local/team2 && mkdir /usr/local/playback
COPY ./dependency/shell/run.sh .
COPY ./CAPI/python /usr/local/PlayerCode/CAPI/python


+ 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; } = true;
[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

@@ -179,6 +179,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
@@ -233,9 +250,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