Browse Source

feat: 🔥 remove PlayerType in MessageToServer

Remove PlayerType in MessageToServer and add keyboard control to fix machine
tags/0.1.0
Shawqeem 2 years ago
parent
commit
e927c1fa0d
4 changed files with 73 additions and 46 deletions
  1. +9
    -17
      dependency/proto/Message2Server.proto
  2. +1
    -1
      dependency/proto/MessageType.proto
  3. +60
    -25
      logic/Client/MainWindow.xaml.cs
  4. +3
    -3
      logic/Client/StatusBarOfSurvivor.xaml.cs

+ 9
- 17
dependency/proto/Message2Server.proto View File

@@ -7,56 +7,48 @@ import "MessageType.proto";
message PlayerMsg
{
int64 player_id = 1;
PlayerType player_type = 2;
oneof job_type
{
StudentType student_type = 3;
TrickerType tricker_type = 4;
StudentType student_type = 2;
TrickerType tricker_type = 3;
}
}

message MoveMsg
{
int64 player_id = 1;
PlayerType player_type = 2;
double angle = 3;
int64 time_in_milliseconds = 4;
double angle = 2;
int64 time_in_milliseconds = 3;
}

message PropMsg
{
int64 player_id = 1;
PlayerType player_type = 2;
PropType prop_type = 3;
PropType prop_type = 2;
}

message SendMsg
{
int64 player_id = 1;
PlayerType player_type = 2;
int64 to_player_id = 3;
PlayerType to_player_type = 4;
string message = 5;
int64 to_player_id = 2;
string message = 3;
}

message AttackMsg // 相当于攻击
{
int64 player_id = 1;
PlayerType player_type = 2;
double angle = 3;
double angle = 2;
}

message IDMsg
{
int64 player_id = 1;
PlayerType player_type = 2;
}

message SkillMsg
{
int64 player_id = 1;
PlayerType player_type = 2;
int32 skill_id = 3;
int32 skill_id = 2;
}

// 基本继承于THUAI5,为了使发送的信息尽可能不被浪费,暂定不发这类大包。


+ 1
- 1
dependency/proto/MessageType.proto View File

@@ -73,7 +73,7 @@ enum PlayerState
ATTACKING = 12; // 前摇
LOCKING = 13;
RUMMAGING = 14;
CLIMBING = 15;
CLIMBING = 15; // 翻窗

}



+ 60
- 25
logic/Client/MainWindow.xaml.cs View File

@@ -53,27 +53,26 @@ namespace Client
listOfButcher = new List<MessageOfTricker>();
listOfBullet=new List<MessageOfBullet>();
listOfBombedBullet = new List<MessageOfBombedBullet>();
listOfAll=new List<MessageOfAll>();
listOfAll = new List<MessageOfAll>();
WindowStartupLocation = WindowStartupLocation.CenterScreen;
comInfo[0] = "183.172.208.156";
comInfo[0] = "183.172.212.19";
comInfo[1] = "8888";
comInfo[2] = "0";
comInfo[3] = "1";
comInfo[4] = "1";

//ConnectToServer(comInfo);
//OnReceive();
DrawMap();
ZoomMap();
MessageOfStudent kurei = new MessageOfStudent();
kurei.X = 10000;
kurei.Y = 20000;
kurei.Speed = 1000;
kurei.PlayerId = 0;
listOfHuman.Add(kurei);
MessageOfAll all= new MessageOfAll();
all.HiddenGateRefreshed = false;
listOfAll.Add(all);

ConnectToServer(comInfo);
OnReceive();
//DrawMap();
//ZoomMap();
//MessageOfStudent kurei = new MessageOfStudent();
//kurei.X = 10000;
//kurei.Y = 20000;
//kurei.Speed = 1000;
//kurei.PlayerId = 0;
//listOfHuman.Add(kurei);
//MessageOfAll all= new MessageOfAll();
//all.HiddenGateRefreshed = false;
//listOfAll.Add(all);
// ReactToCommandline();
}

@@ -88,7 +87,7 @@ namespace Client
}
}

// 连接Server,comInfo[]的格式:0-ip 1- port 2-playerID 3-playerType 4-human/TrickerType
// 连接Server,comInfo[]的格式:0-ip 1- port 2-playerID 3-human/TrickerType
private void ConnectToServer(string[] comInfo)
{
if (!isPlaybackMode)
@@ -120,7 +119,6 @@ namespace Client
{
humanOrButcher = false;
}
playerMsg.PlayerType = playerType;
if (playerType == PlayerType.StudentPlayer)
{
switch (Convert.ToInt64(comInfo[4]))
@@ -204,7 +202,7 @@ namespace Client
{
for (int j = 0; j < 50; j++)
{
map[i, j] = Convert.ToInt32(obj.Row[i].Col[j]);
map[i, j] = Convert.ToInt32(obj.Row[i].Col[j])+4;//与proto一致
}
}
}
@@ -256,11 +254,11 @@ namespace Client
case 6:
mapPatches[i, j].Fill = Brushes.Brown;
mapPatches[i, j].Stroke = Brushes.Brown;
break;
break;//wall
case 7:
mapPatches[i, j].Fill = Brushes.Green;
mapPatches[i, j].Stroke = Brushes.Green;
break;
break;//grass
case 8:
mapPatches[i, j].Fill = Brushes.LightPink;
mapPatches[i, j].Stroke = Brushes.LightPink;
@@ -336,7 +334,6 @@ namespace Client
switch (content.GameState)
{
case GameState.GameStart:
case GameState.GameRunning:
foreach (var obj in content.ObjMessage)
{
switch (obj.MessageOfObjCase)
@@ -369,6 +366,38 @@ namespace Client
GetMap(content.MapMessage);
listOfAll.Add(content.AllMessage);
break;
case GameState.GameRunning:
foreach (var obj in content.ObjMessage)
{
switch (obj.MessageOfObjCase)
{
case MessageOfObj.MessageOfObjOneofCase.StudentMessage:
if (humanOrButcher && obj.StudentMessage.PlayerId == playerID)
{
human = obj.StudentMessage;
}
listOfHuman.Add(obj.StudentMessage);
break;
case MessageOfObj.MessageOfObjOneofCase.TrickerMessage:
if (!humanOrButcher && obj.TrickerMessage.PlayerId == playerID)
{
butcher = obj.TrickerMessage;
}
listOfButcher.Add(obj.TrickerMessage);
break;
case MessageOfObj.MessageOfObjOneofCase.PropMessage:
listOfProp.Add(obj.PropMessage);
break;
case MessageOfObj.MessageOfObjOneofCase.BombedBulletMessage:
listOfBombedBullet.Add(obj.BombedBulletMessage);
break;
case MessageOfObj.MessageOfObjOneofCase.BulletMessage:
listOfBullet.Add(obj.BulletMessage);
break;
}
}
listOfAll.Add(content.AllMessage);
break;

case GameState.GameEnd:
foreach (var obj in content.ObjMessage)
@@ -412,7 +441,7 @@ namespace Client
//待修改
private bool CanSee(MessageOfStudent msg)
{
if (msg.State == StudentState.Quit)
if (msg.State == PlayerState.Quit)
return false;
//if (playerID >= 2022 || teamID >= 2022)
// return true;
@@ -766,7 +795,13 @@ namespace Client
};
client.UseSkill(msgQ);
break;

case Key.K:
IDMsg msgK = new()
{
PlayerId = playerID,
};
client.StartLearning(msgK);
break;
default:
break;
}


+ 3
- 3
logic/Client/StatusBarOfSurvivor.xaml.cs View File

@@ -62,8 +62,8 @@ namespace Client
}
private void SetDynamicValue(MessageOfStudent obj)
{
skillprogress.Value = 100 - obj.TimeUntilSkillAvailable / coolTime * 100;
if (obj.State == StudentState.Quit)
skillprogress.Value = 100 - obj.TimeUntilSkillAvailable[0] / coolTime * 100;
if (obj.State == PlayerState.Quit)
{
skillprogress.Value = 0;
skillprogress.Background = Brushes.Gray;
@@ -73,7 +73,7 @@ namespace Client
Func<MessageOfStudent, int> life =
(obj) =>
{
if (obj.State == StudentState.Quit || obj.State == StudentState.Addicted)
if (obj.State == PlayerState.Quit || obj.State == PlayerState.Addicted)
return 0;
else
return obj.Determination;


Loading…
Cancel
Save