Browse Source

feat: 🚀 update server

tags/0.1.0
gsy1519 2 years ago
parent
commit
54f0dadb41
4 changed files with 58 additions and 85 deletions
  1. +8
    -8
      logic/ClientTest/Program.cs
  2. +1
    -0
      logic/Gaming/Game.cs
  3. +26
    -26
      logic/Server/CopyInfo.cs
  4. +23
    -51
      logic/Server/GameServer.cs

+ 8
- 8
logic/ClientTest/Program.cs View File

@@ -12,24 +12,24 @@ namespace ClientTest
var client = new AvailableService.AvailableServiceClient(channel);
PlayerMsg playerInfo = new();
playerInfo.PlayerId = 0;
playerInfo.PlayerType = PlayerType.HumanPlayer;
playerInfo.HumanType = HumanType.NullHumanType;
playerInfo.PlayerType = PlayerType.StudentPlayer;
playerInfo.StudentType = StudentType.NullStudentType;
var call = client.AddPlayer(playerInfo);
while (await call.ResponseStream.MoveNext())
{
var currentGameInfo = call.ResponseStream.Current;
if (playerInfo.PlayerType == PlayerType.HumanPlayer)
if (playerInfo.PlayerType == PlayerType.StudentPlayer)
{
for (int i = 0; i < currentGameInfo.HumanMessage.Count; i++)
for (int i = 0; i < currentGameInfo.StudentMessage.Count; i++)
{
Console.WriteLine($"Human is at ({currentGameInfo.HumanMessage[i].X}, {currentGameInfo.HumanMessage[i].Y})");
Console.WriteLine($"Human is at ({currentGameInfo.StudentMessage[i].X}, {currentGameInfo.StudentMessage[i].Y})");
}
}
if (playerInfo.PlayerType == PlayerType.ButcherPlayer)
if (playerInfo.PlayerType == PlayerType.TrickerPlayer)
{
for (int i = 0; i < currentGameInfo.ButcherMessage.Count; i++)
for (int i = 0; i < currentGameInfo.TrickerMessage.Count; i++)
{
Console.WriteLine($"Butcher is at ({currentGameInfo.ButcherMessage[i].X}, {currentGameInfo.ButcherMessage[i].Y})");
Console.WriteLine($"Butcher is at ({currentGameInfo.TrickerMessage[i].X}, {currentGameInfo.TrickerMessage[i].Y})");
}
}
}


+ 1
- 0
logic/Gaming/Game.cs View File

@@ -39,6 +39,7 @@ namespace Gaming

XY pos = gameMap.BirthPointList[playerInitInfo.birthPointIndex];
// Console.WriteLine($"x,y: {pos.x},{pos.y}");
Character newPlayer = (GameData.IsGhost(playerInitInfo.characterType)) ? new Ghost(pos, GameData.characterRadius, gameMap.GetPlaceType(pos), playerInitInfo.characterType) : new Student(pos, GameData.characterRadius, gameMap.GetPlaceType(pos), playerInitInfo.characterType);
gameMap.GameObjLockDict[GameObjType.Character].EnterWriteLock();
try


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

@@ -8,28 +8,28 @@ namespace Server
public static class CopyInfo
{
// 下面赋值为0的大概率是还没写完 2023-03-03
private static MessageOfHuman Human(Character player)
private static MessageOfStudent Human(Character player)
{
MessageOfHuman msg = new MessageOfHuman();
MessageOfStudent msg = new MessageOfStudent();
if (player.IsGhost()) return null;

msg.X = player.Position.x;
msg.Y = player.Position.y;
msg.Speed = player.MoveSpeed;
msg.Life = player.HP;
msg.HangedTime = 0;
msg.Determination = player.HP;
msg.FailNum = 0;
msg.TimeUntilSkillAvailable = 0;
//msg.Place = 0; 下面写了
msg.Prop = PropType.NullPropType; // 下面写
msg.HumanType = HumanType.NullHumanType; // 下面写
msg.StudentType = StudentType.NullStudentType; // 下面写
msg.Guid = 0;
msg.State = HumanState.NullStatus;
msg.ChairTime = 0;
msg.GroundTime = 0;
msg.State = StudentState.NullStatus;
msg.FailTime = 0;
msg.EmoTime = 0;
msg.PlayerId = 0;
msg.ViewRange = 0;
msg.Radius = 0;
//msg.Buff[0] = HumanBuffType.NullHbuffType; 下面写了
//msg.Buff[0] = StudentBuffType.NullSbuffType; 下面写了

/* THUAI5中的内容
msg.BulletNum = player.BulletNum;
@@ -60,26 +60,26 @@ namespace Server
{
if (kvp.Value)
{
switch (kvp.Key) // HumanBuffType具体内容待定
switch (kvp.Key) // StudentBuffType具体内容待定
{
case Preparation.Utility.BuffType.Spear:
msg.Buff.Add(HumanBuffType.NullHbuffType);
msg.Buff.Add(StudentBuffType.NullSbuffType);
break;
case Preparation.Utility.BuffType.AddLIFE:
msg.Buff.Add(HumanBuffType.NullHbuffType);
msg.Buff.Add(StudentBuffType.NullSbuffType);
break;
case Preparation.Utility.BuffType.Shield:
msg.Buff.Add(HumanBuffType.NullHbuffType);
msg.Buff.Add(StudentBuffType.NullSbuffType);
break;
case Preparation.Utility.BuffType.AddSpeed:
msg.Buff.Add(HumanBuffType.NullHbuffType);
msg.Buff.Add(StudentBuffType.NullSbuffType);
break;
default:
break;
}
}
}
switch (player.Place)
/*switch (player.Place)
{
case Preparation.Utility.PlaceType.Land:
msg.Place = PlaceType.Land;
@@ -99,7 +99,7 @@ namespace Server
default:
msg.Place = PlaceType.NullPlaceType;
break;
}
}*/

//Character的储存方式可能得改,用enum type存道具和子弹,不应该用对象
//现在懒得改了,有时间再重整一波
@@ -186,9 +186,9 @@ namespace Server
return msg;
}

private static MessageOfButcher Butcher(Character player)
private static MessageOfTricker Butcher(Character player)
{
MessageOfButcher msg = new MessageOfButcher();
MessageOfTricker msg = new MessageOfTricker();
if (!player.IsGhost()) return null;

msg.X = player.Position.x;
@@ -198,13 +198,13 @@ namespace Server
msg.TimeUntilSkillAvailable = 0;
//msg.Place = 0; 下面写了
msg.Prop = PropType.NullPropType; // 下面写
msg.ButcherType = ButcherType.NullButcherType; // 下面写
msg.TrickerType = TrickerType.NullTrickerType; // 下面写
msg.Guid = 0;
msg.Movable = false;
msg.PlayerId = 0;
msg.ViewRange = 0;
msg.Radius = 0;
//msg.Buff[0] = ButcherBuffType.NullHbuffType; 下面写了
//msg.Buff[0] = ButcherBuffType.NullSbuffType; 下面写了

/* THUAI5中的内容
msg.BulletNum = player.BulletNum;
@@ -238,23 +238,23 @@ namespace Server
switch (kvp.Key) // ButcherBuffType具体内容待定
{
case Preparation.Utility.BuffType.Spear:
msg.Buff.Add(ButcherBuffType.NullBbuffType);
msg.Buff.Add(TrickerBuffType.NullTbuffType);
break;
case Preparation.Utility.BuffType.AddLIFE:
msg.Buff.Add(ButcherBuffType.NullBbuffType);
msg.Buff.Add(TrickerBuffType.NullTbuffType);
break;
case Preparation.Utility.BuffType.Shield:
msg.Buff.Add(ButcherBuffType.NullBbuffType);
msg.Buff.Add(TrickerBuffType.NullTbuffType);
break;
case Preparation.Utility.BuffType.AddSpeed:
msg.Buff.Add(ButcherBuffType.NullBbuffType);
msg.Buff.Add(TrickerBuffType.NullTbuffType);
break;
default:
break;
}
}
}
switch (player.Place)
/*switch (player.Place)
{
case Preparation.Utility.PlaceType.Land:
msg.Place = PlaceType.Land;
@@ -274,7 +274,7 @@ namespace Server
default:
msg.Place = PlaceType.NullPlaceType;
break;
}
}*/

//Character的储存方式可能得改,用enum type存道具和子弹,不应该用对象
//现在懒得改了,有时间再重整一波


+ 23
- 51
logic/Server/GameServer.cs View File

@@ -128,8 +128,8 @@ namespace Server

private int PlayerTypeToTeamID(PlayerType playerType)
{
if (playerType == PlayerType.HumanPlayer) return 0;
if (playerType == PlayerType.ButcherPlayer) return 1;
if (playerType == PlayerType.StudentPlayer) return 0;
if (playerType == PlayerType.TrickerPlayer) return 1;
return -1;
}
private uint GetBirthPointIdx(PlayerType playerType, long playerID) // 获取出生点位置
@@ -138,9 +138,9 @@ namespace Server
}
private bool ValidPlayerTypeAndPlayerID(PlayerType playerType, long playerID)
{
if (playerType == PlayerType.HumanPlayer && 0 <= playerID && playerID < options.PlayerCountPerTeam)
if (playerType == PlayerType.StudentPlayer && 0 <= playerID && playerID < options.PlayerCountPerTeam)
return true; // 人数待修改
if (playerType == PlayerType.ButcherPlayer && 0 <= playerID && playerID < options.PlayerCountPerTeam)
if (playerType == PlayerType.TrickerPlayer && 0 <= playerID && playerID < options.PlayerCountPerTeam)
return true;
return false;
}
@@ -185,7 +185,7 @@ namespace Server
//if (communicationToGameID[PlayerTypeToTeamID(request.PlayerType), request.PlayerId] != GameObj.invalidID) //是否已经添加了该玩家
//return;

Preparation.Utility.CharacterType characterType = Preparation.Utility.CharacterType.Null; // 待修改
Preparation.Utility.CharacterType characterType = Preparation.Utility.CharacterType.Athlete; // 待修改

lock (addPlayerLock)
{
@@ -222,7 +222,7 @@ namespace Server
} while (game.GameMap.Timer.IsGaming);
}

public override Task<BoolRes> Attack(AttackMsg request, ServerCallContext context)
public override Task<BoolRes> Trick(TrickMsg request, ServerCallContext context)
{
game.Attack(request.PlayerId, request.Angle);
BoolRes boolRes = new();
@@ -230,36 +230,11 @@ namespace Server
return Task.FromResult(boolRes);
}

public override Task<BoolRes> CarryHuman(IDMsg request, ServerCallContext context)
{
return base.CarryHuman(request, context);
}

public override Task<BoolRes> EndFixMachine(IDMsg request, ServerCallContext context)
{
return base.EndFixMachine(request, context);
}

public override Task<BoolRes> EndSaveHuman(IDMsg request, ServerCallContext context)
{
return base.EndSaveHuman(request, context);
}

public override Task<BoolRes> Escape(IDMsg request, ServerCallContext context)
{
return base.Escape(request, context);
}

public override Task GetMessage(IDMsg request, IServerStreamWriter<MsgRes> responseStream, ServerCallContext context)
{
return base.GetMessage(request, responseStream, context);
}

public override Task<BoolRes> HangHuman(IDMsg request, ServerCallContext context)
{
return base.HangHuman(request, context);
}

public override Task<MoveRes> Move(MoveMsg request, ServerCallContext context)
{
Console.WriteLine($"Move ID: {request.PlayerId}, TimeInMilliseconds: {request.TimeInMilliseconds}");
@@ -278,34 +253,36 @@ namespace Server
return Task.FromResult(boolRes);
}

public override Task<BoolRes> ReleaseHuman(IDMsg request, ServerCallContext context)
{
return base.ReleaseHuman(request, context);
}

public override Task<BoolRes> SendMessage(SendMsg request, ServerCallContext context)
{
return base.SendMessage(request, context);
}
}

public override Task<BoolRes> StartFixMachine(IDMsg request, ServerCallContext context)
public override Task<BoolRes> UseProp(IDMsg request, ServerCallContext context)
{
return base.StartFixMachine(request, context);
return base.UseProp(request, context);
}

public override Task<BoolRes> StartSaveHuman(IDMsg request, ServerCallContext context)
public override Task<BoolRes> UseSkill(IDMsg request, ServerCallContext context)
{
return base.StartSaveHuman(request, context);
return base.UseSkill(request, context);
}

public override Task<BoolRes> UseProp(IDMsg request, ServerCallContext context)
public override Task<BoolRes> Graduate(IDMsg request, ServerCallContext context)
{
return base.UseProp(request, context);
return base.Graduate(request, context);
}

public override Task<BoolRes> UseSkill(IDMsg request, ServerCallContext context)
public override Task<BoolRes> StartHealMate(IDMsg request, ServerCallContext context)
{
return base.UseSkill(request, context);
return base.StartHealMate(request, context);
}
public override Task<BoolRes> StartHelpMate(IDMsg request, ServerCallContext context)
{
return base.StartHelpMate(request, context);
}
public override Task<BoolRes> StartLearning(IDMsg request, ServerCallContext context)
{
return base.StartLearning(request, context);
}

public GameServer(ArgumentOptions options)
@@ -353,11 +330,6 @@ namespace Server
catch
{
map = MapInfo.defaultMap;
map[0, 0] = 1;
map[2, 2] = 2;
map[4, 2] = 3;
map[6, 2] = 4;
map[8, 2] = 5;
}
finally { this.game = new Game(map, options.TeamCount); }
}


Loading…
Cancel
Save