| @@ -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})"); | |||
| } | |||
| } | |||
| } | |||
| @@ -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 | |||
| @@ -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存道具和子弹,不应该用对象 | |||
| //现在懒得改了,有时间再重整一波 | |||
| @@ -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); } | |||
| } | |||