From 9280daa085c1cc7cee6780756515f3bbf7fbc7dc Mon Sep 17 00:00:00 2001
From: Shawqeem <1004837646@qq.com>
Date: Tue, 28 Mar 2023 23:36:28 +0800
Subject: [PATCH] feat: :bug: display the progress of classroom/chest/door
display the progress of classroom/chest/door
---
dependency/proto/Message2Clients.proto | 2 +-
logic/Client/AssemblyInfo.cs | 2 +-
logic/Client/Client.csproj | 1 +
logic/Client/Drawing.cs | 0
logic/Client/MainWindow.xaml.cs | 457 +++++++++----------
logic/Client/PlaybackClient.cs | 4 +-
logic/Client/Properties/launchSettings.json | 2 +-
logic/Client/StatusBarOfCircumstance.xaml | 8 +-
logic/Client/StatusBarOfCircumstance.xaml.cs | 25 +-
logic/Client/StatusBarOfHunter.xaml | 6 +-
logic/Client/StatusBarOfHunter.xaml.cs | 76 +--
logic/Client/StatusBarOfSurvivor.xaml | 6 +-
logic/Client/StatusBarOfSurvivor.xaml.cs | 120 ++---
logic/ClientTest/Program.cs | 14 +-
logic/GameClass/GameObj/Map/Chest.cs | 4 +-
logic/Preparation/Utility/GameData.cs | 2 +-
logic/Server/CopyInfo.cs | 16 +-
logic/Server/Properties/EnumType.cs | 142 ++++++
logic/Server/Properties/launchSettings.json | 2 +-
logic/cmd/gameServer.cmd | 16 +-
logic/cmd/playback.cmd | 2 +-
logic/logic.sln | 8 +
22 files changed, 528 insertions(+), 387 deletions(-)
delete mode 100644 logic/Client/Drawing.cs
create mode 100644 logic/Server/Properties/EnumType.cs
diff --git a/dependency/proto/Message2Clients.proto b/dependency/proto/Message2Clients.proto
index 18041ef..fe5b97b 100755
--- a/dependency/proto/Message2Clients.proto
+++ b/dependency/proto/Message2Clients.proto
@@ -170,7 +170,7 @@ message MessageOfObj
message MessageOfAll
{
int32 game_time = 1;
- int32 subject_left = 2; // 剩余的科目数
+ int32 subject_finished = 2; // 完成的科目数
int32 student_graduated = 3; // 已经毕业的学生数
int32 student_quited = 4; // 已经退学的学生数
int32 student_score = 5;
diff --git a/logic/Client/AssemblyInfo.cs b/logic/Client/AssemblyInfo.cs
index 87c30a8..746c6a3 100644
--- a/logic/Client/AssemblyInfo.cs
+++ b/logic/Client/AssemblyInfo.cs
@@ -1,6 +1,6 @@
using System.Windows;
-[assembly:ThemeInfo(
+[assembly: ThemeInfo(
ResourceDictionaryLocation.None, // where theme specific resource dictionaries are located
//(used if a resource is not found in the page,
// or application resource dictionaries)
diff --git a/logic/Client/Client.csproj b/logic/Client/Client.csproj
index 352b45b..6fe4b9b 100644
--- a/logic/Client/Client.csproj
+++ b/logic/Client/Client.csproj
@@ -22,6 +22,7 @@
+
diff --git a/logic/Client/Drawing.cs b/logic/Client/Drawing.cs
deleted file mode 100644
index e69de29..0000000
diff --git a/logic/Client/MainWindow.xaml.cs b/logic/Client/MainWindow.xaml.cs
index 159052e..d9fa7fc 100644
--- a/logic/Client/MainWindow.xaml.cs
+++ b/logic/Client/MainWindow.xaml.cs
@@ -18,9 +18,9 @@ using Grpc.Core;
using Protobuf;
using Playback;
using CommandLine;
+using Preparation.Utility;
// 目前MainWindow还未复现的功能:
-// private void ReactToCommandline(),
// private void ClickToSetMode(object sender, RoutedEventArgs e)
// private void Bonus()
@@ -49,7 +49,7 @@ namespace Client
listOfProp = new List();
listOfHuman = new List();
listOfButcher = new List();
- listOfBullet=new List();
+ listOfBullet = new List();
listOfBombedBullet = new List();
listOfAll = new List();
listOfChest = new List();
@@ -57,17 +57,9 @@ namespace Client
listOfDoor = new List();
listOfGate = new List();
WindowStartupLocation = WindowStartupLocation.CenterScreen;
- //comInfo[0] = "127.0.0.1";
- //comInfo[1] = "8888";
- //comInfo[2] = "0";
- //comInfo[3] = "1";
- //comInfo[4] = "1";
- //ConnectToServer(comInfo);
- //OnReceive();
ReactToCommandline();
}
-
private void SetStatusBar()
{
StatusBarsOfSurvivor = new StatusBarOfSurvivor[4];
@@ -103,6 +95,7 @@ namespace Client
mapFlag = true;
}
}
+
private void ReactToCommandline()
{
string[] args = Environment.GetCommandLineArgs();
@@ -115,12 +108,12 @@ namespace Client
{ options = o; });
if (options == null || options.cl == false)
{
- OnReceive();
+ OnReceive();
}
else
{
- //if (options.PlaybackFile == DefaultArgumentOptions.FileName)
- //{
+ if (options.PlaybackFile == DefaultArgumentOptions.FileName)
+ {
try
{
string[] comInfo = new string[5];
@@ -136,18 +129,19 @@ namespace Client
{
OnReceive();
}
- //}
- //else
- //{
- // Playback(options.PlaybackFile, options.PlaybackSpeed);
- //}
+ }
+ else
+ {
+ Playback(options.PlaybackFile, options.PlaybackSpeed);
+ }
}
}
+
private void Playback(string fileName, double pbSpeed = 2.0)
{
var pbClient = new PlaybackClient(fileName, pbSpeed);
int[,]? map;
- if ((map = pbClient.ReadDataFromFile(listOfProp, listOfHuman, listOfButcher, listOfBullet,listOfBombedBullet, listOfAll, listOfChest, listOfClassroom,listOfDoor, listOfGate, drawPicLock)) != null)
+ if ((map = pbClient.ReadDataFromFile(listOfProp, listOfHuman, listOfButcher, listOfBullet, listOfBombedBullet, listOfAll, listOfChest, listOfClassroom, listOfDoor, listOfGate, drawPicLock)) != null)
{
isClientStocked = false;
isPlaybackMode = true;
@@ -175,8 +169,6 @@ namespace Client
connect += comInfo[1];
Channel channel = new Channel(connect, ChannelCredentials.Insecure);
client = new AvailableService.AvailableServiceClient(channel);
- // 没判断连没连上
-
PlayerMsg playerMsg = new PlayerMsg();
playerMsg.PlayerId = playerID;
playerType = Convert.ToInt64(comInfo[3]) switch
@@ -185,7 +177,7 @@ namespace Client
1 => PlayerType.StudentPlayer,
2 => PlayerType.TrickerPlayer,
};
- playerMsg.PlayerType=playerType;
+ playerMsg.PlayerType = playerType;
if (Convert.ToInt64(comInfo[3]) == 1)
{
humanOrButcher = true;
@@ -321,7 +313,7 @@ namespace Client
case 10:
foreach (var obj in listOfAll)
{
- if(obj.HiddenGateRefreshed)
+ if (obj.SubjectFinished >= Preparation.Utility.GameData.numOfGeneratorRequiredForEmergencyExit)
{
mapPatches[i, j].Fill = Brushes.LightSalmon;
mapPatches[i, j].Stroke = Brushes.LightSalmon;
@@ -408,6 +400,7 @@ namespace Client
switch (obj.MessageOfObjCase)
{
case MessageOfObj.MessageOfObjOneofCase.StudentMessage:
+
if (humanOrButcher && obj.StudentMessage.PlayerId == playerID)
{
human = obj.StudentMessage;
@@ -542,7 +535,7 @@ namespace Client
{
ErrorDisplayer error = new("Error: " + ex.ToString());
error.Show();
- }
+ }
}
private int GetX(int x)
@@ -553,6 +546,7 @@ namespace Client
{
return y / 1000 + 1;
}
+
//待修改
private bool CanSee(MessageOfStudent msg)
{
@@ -565,9 +559,9 @@ namespace Client
if (human.Guid == msg.Guid) // 自己能看见自己
return true;
}
- if (msg.Place == PlaceType.Grass || msg.Place == PlaceType.Gate || msg.Place == PlaceType.HiddenGate)
+ if (msg.Place == Protobuf.PlaceType.Grass || msg.Place == Protobuf.PlaceType.Gate || msg.Place == Protobuf.PlaceType.HiddenGate)
return false;
- if (msg.Place == PlaceType.Land || msg.Place == PlaceType.Classroom)
+ if (msg.Place == Protobuf.PlaceType.Land || msg.Place == Protobuf.PlaceType.Classroom)
return true;
if (humanOrButcher && human != null)
{
@@ -591,9 +585,9 @@ namespace Client
if (butcher.Guid == msg.Guid) // 自己能看见自己
return true;
}
- if (msg.Place == PlaceType.Grass || msg.Place == PlaceType.Gate || msg.Place == PlaceType.HiddenGate)
+ if (msg.Place == Protobuf.PlaceType.Grass || msg.Place == Protobuf.PlaceType.Gate || msg.Place == Protobuf.PlaceType.HiddenGate)
return false;
- if (msg.Place == PlaceType.Land || msg.Place == PlaceType.Classroom)
+ if (msg.Place == Protobuf.PlaceType.Land || msg.Place == Protobuf.PlaceType.Classroom)
return true;
if (humanOrButcher && human != null)
{
@@ -610,7 +604,7 @@ namespace Client
private bool CanSee(MessageOfProp msg)
{
- if (msg.Place == PlaceType.Land)
+ if (msg.Place == Protobuf.PlaceType.Land)
return true;
if (humanOrButcher && human != null)
{
@@ -627,7 +621,7 @@ namespace Client
private bool CanSee(MessageOfBullet msg)
{
- if (msg.Place == PlaceType.Land)
+ if (msg.Place == Protobuf.PlaceType.Land)
return true;
if (humanOrButcher && human != null)
{
@@ -688,7 +682,7 @@ namespace Client
{
foreach (var data in listOfAll)
{
- StatusBarsOfCircumstance.SetValue(data);
+ StatusBarsOfCircumstance.SetValue(data, gateOpened);
}
if (!hasDrawed && mapFlag)
DrawMap();
@@ -732,25 +726,25 @@ namespace Client
{
switch (data.Type)
{
- case PropType.Key3:
+ case Protobuf.PropType.Key3:
DrawProp(data, "🔑");
break;
- case PropType.Key5:
+ case Protobuf.PropType.Key5:
DrawProp(data, "🔑");
break;
- case PropType.Key6:
+ case Protobuf.PropType.Key6:
DrawProp(data, "🔑");
break;
- case PropType.AddSpeed:
+ case Protobuf.PropType.AddSpeed:
DrawProp(data, "⛸");
break;
- case PropType.AddHpOrAp:
+ case Protobuf.PropType.AddHpOrAp:
DrawProp(data, "♥");
break;
- case PropType.AddLifeOrAp:
+ case Protobuf.PropType.AddLifeOrAp:
DrawProp(data, "🏅");
break;
- case PropType.ShieldOrSpear:
+ case Protobuf.PropType.ShieldOrSpear:
DrawProp(data, "🛡");
break;
default:
@@ -779,7 +773,7 @@ namespace Client
{
switch (data.Type)
{
- case BulletType.FastBullet:
+ case Protobuf.BulletType.FastBullet:
{
Ellipse icon = new();
double bombRange = data.BombRange / 1000;
@@ -792,7 +786,7 @@ namespace Client
UpperLayerOfMap.Children.Add(icon);
break;
}
- case BulletType.AtomBomb:
+ case Protobuf.BulletType.AtomBomb:
{
Ellipse icon = new Ellipse();
double bombRange = data.BombRange / 1000;
@@ -805,7 +799,7 @@ namespace Client
UpperLayerOfMap.Children.Add(icon);
break;
}
- case BulletType.OrdinaryBullet:
+ case Protobuf.BulletType.OrdinaryBullet:
{
Ellipse icon = new Ellipse();
double bombRange = data.BombRange / 1000;
@@ -818,7 +812,7 @@ namespace Client
UpperLayerOfMap.Children.Add(icon);
break;
}
- /*case BulletType.LineBullet:
+ /*case Protobuf.BulletType.LineBullet:
{
double bombRange = data.BombRange / 1000;
DrawLaser(new Point(data.Y * unitWidth / 1000.0, data.X * unitHeight / 1000.0), -data.FacingDirection + Math.PI / 2, bombRange * unitHeight, 0.5 * unitWidth);
@@ -832,67 +826,68 @@ namespace Client
{
TextBox icon = new()
{
- FontSize = 10 * UpperLayerOfMap.ActualHeight / 650,
+ FontSize = 8 * UpperLayerOfMap.ActualHeight / 650,
Width = unitWidth,
Height = unitHeight,
- Text = Convert.ToString(data.Progress),
+ Text = Convert.ToString((int)(100.0 * data.Progress / Preparation.Utility.GameData.degreeOfFixedGenerator)),
HorizontalAlignment = HorizontalAlignment.Left,
VerticalAlignment = VerticalAlignment.Top,
Margin = new Thickness(data.Y * unitWidth / 1000.0 - unitWidth / 2, data.X * unitHeight / 1000.0 - unitHeight / 2, 0, 0),
- //Margin = new Thickness(25,25, 0, 0),
Background = Brushes.Transparent,
BorderBrush = Brushes.Transparent,
IsReadOnly = true
};
UpperLayerOfMap.Children.Add(icon);
}
- foreach(var data in listOfChest)
+ foreach (var data in listOfChest)
{
TextBox icon = new()
{
- FontSize = 10 * UpperLayerOfMap.ActualHeight / 650,
+ FontSize = 8 * UpperLayerOfMap.ActualHeight / 650,
Width = unitWidth,
Height = unitHeight,
- Text = Convert.ToString(data.Progress),
+ Text = Convert.ToString((int)(100.0 * data.Progress / Preparation.Utility.GameData.degreeOfOpenedChest)),
HorizontalAlignment = HorizontalAlignment.Left,
VerticalAlignment = VerticalAlignment.Top,
Margin = new Thickness(data.Y * unitWidth / 1000.0 - unitWidth / 2, data.X * unitHeight / 1000.0 - unitHeight / 2, 0, 0),
- //Margin = new Thickness(25,25, 0, 0),
Background = Brushes.Transparent,
BorderBrush = Brushes.Transparent,
IsReadOnly = true
};
UpperLayerOfMap.Children.Add(icon);
}
- foreach(var data in listOfGate)
+ foreach (var data in listOfGate)
{
+ int deg = (int)(100.0 * data.Progress / Preparation.Utility.GameData.degreeOfOpenedDoorway);
+ if (deg == 100)
+ {
+ gateOpened = true;
+ }
TextBox icon = new()
{
- FontSize = 10 * UpperLayerOfMap.ActualHeight / 650,
+ FontSize = 8 * UpperLayerOfMap.ActualHeight / 650,
Width = unitWidth,
Height = unitHeight,
- Text = Convert.ToString(data.Progress),
+ Text = Convert.ToString(deg),
HorizontalAlignment = HorizontalAlignment.Left,
VerticalAlignment = VerticalAlignment.Top,
Margin = new Thickness(data.Y * unitWidth / 1000.0 - unitWidth / 2, data.X * unitHeight / 1000.0 - unitHeight / 2, 0, 0),
- //Margin = new Thickness(25,25, 0, 0),
Background = Brushes.Transparent,
BorderBrush = Brushes.Transparent,
IsReadOnly = true
};
UpperLayerOfMap.Children.Add(icon);
}
- foreach(var data in listOfDoor)
+ foreach (var data in listOfDoor)
{
TextBox icon = new()
{
- FontSize = 10 * UpperLayerOfMap.ActualHeight / 650,
+ FontSize = 8 * UpperLayerOfMap.ActualHeight / 650,
Width = unitWidth,
Height = unitHeight,
HorizontalAlignment = HorizontalAlignment.Left,
VerticalAlignment = VerticalAlignment.Top,
Margin = new Thickness(data.Y * unitWidth / 1000.0 - unitWidth / 2, data.X * unitHeight / 1000.0 - unitHeight / 2, 0, 0),
- //Margin = new Thickness(25,25, 0, 0),
Background = Brushes.Transparent,
BorderBrush = Brushes.Transparent,
IsReadOnly = true
@@ -904,7 +899,7 @@ namespace Client
else
{
icon.Text = Convert.ToString("闭");
- }
+ }
UpperLayerOfMap.Children.Add(icon);
}
//}
@@ -927,176 +922,176 @@ namespace Client
{
if (!isPlaybackMode)
{
- switch (e.Key)
- {
- case Key.W:
- case Key.NumPad8:
- MoveMsg msgW = new()
- {
- PlayerId = playerID,
- TimeInMilliseconds = 50,
- Angle = Math.PI
- };
- client.Move(msgW);
- break;
- case Key.S:
- case Key.NumPad2:
- MoveMsg msgS = new()
- {
- PlayerId = playerID,
- TimeInMilliseconds = 50,
- Angle = 0
- };
- client.Move(msgS);
- break;
- case Key.D:
- case Key.NumPad6:
- MoveMsg msgD = new()
- {
- PlayerId = playerID,
- TimeInMilliseconds = 50,
- Angle = Math.PI / 2
- };
- client.Move(msgD);
- break;
- case Key.A:
- case Key.NumPad4:
- MoveMsg msgA = new()
- {
- PlayerId = playerID,
- TimeInMilliseconds = 50,
- Angle = 3 * Math.PI / 2
- };
- client.Move(msgA);
- break;
- case Key.J:
- AttackMsg msgJ = new()
- {
- PlayerId = playerID,
- Angle = Math.PI
- };
- client.Attack(msgJ);
- break;
- case Key.K:
- IDMsg msgK = new()
- {
- PlayerId = playerID,
- };
- client.StartLearning(msgK);
- break;
- case Key.R:
- TreatAndRescueMsg msgR = new()
- {
- PlayerId = playerID,
- };
- client.StartRescueMate(msgR);
- break;
- case Key.T:
- TreatAndRescueMsg msgT = new()
- {
- PlayerId = playerID,
- };
- client.StartTreatMate(msgT);
- break;
- case Key.G:
- IDMsg msgG = new()
- {
- PlayerId = playerID,
- };
- client.Graduate(msgG);
- break;
- case Key.H:
- IDMsg msgH = new()
- {
- PlayerId = playerID,
- };
- client.StartOpenGate(msgH);
- break;
- case Key.O:
- IDMsg msgO = new()
- {
- PlayerId = playerID,
- };
- client.OpenDoor(msgO);
- break;
- case Key.P:
- IDMsg msgP = new()
- {
- PlayerId = playerID,
- };
- client.CloseDoor(msgP);
- break;
- case Key.U:
- IDMsg msgU = new()
- {
- PlayerId = playerID,
- };
- client.SkipWindow(msgU);
- break;
- case Key.I:
- IDMsg msgI = new()
- {
- PlayerId = playerID,
- };
- client.StartOpenChest(msgI);
- break;
- case Key.E:
- IDMsg msgE = new()
- {
- PlayerId = playerID,
- };
- client.EndAllAction(msgE);
- break;
- case Key.F:
- PropMsg msgF = new()
- {
- PlayerId = playerID,
- PropType= PropType.NullPropType,
- };
- client.PickProp(msgF);
- break;
- case Key.C:
- PropMsg msgC = new()
- {
- PlayerId = playerID,
- PropType = PropType.NullPropType,
- };
- client.ThrowProp(msgC);
- break;
- case Key.V:
- PropMsg msgV = new()
- {
- PlayerId = playerID,
- PropType = PropType.NullPropType,
- };
- client.UseProp(msgV);
- break;
- case Key.B:
- SkillMsg msgB = new()
- {
- PlayerId = playerID,
- SkillId = 0,
- };
- client.UseSkill(msgB);
- break;
- case Key.N:
- SkillMsg msgN = new()
- {
- PlayerId = playerID,
- SkillId = 1,
- };
- client.UseSkill(msgN);
- break;
- case Key.M:
- SkillMsg msgM = new()
- {
- PlayerId = playerID,
- SkillId = 2,
- };
- client.UseSkill(msgM);
- break;
- default:
- break;
+ switch (e.Key)
+ {
+ case Key.W:
+ case Key.NumPad8:
+ MoveMsg msgW = new()
+ {
+ PlayerId = playerID,
+ TimeInMilliseconds = 50,
+ Angle = Math.PI
+ };
+ client.Move(msgW);
+ break;
+ case Key.S:
+ case Key.NumPad2:
+ MoveMsg msgS = new()
+ {
+ PlayerId = playerID,
+ TimeInMilliseconds = 50,
+ Angle = 0
+ };
+ client.Move(msgS);
+ break;
+ case Key.D:
+ case Key.NumPad6:
+ MoveMsg msgD = new()
+ {
+ PlayerId = playerID,
+ TimeInMilliseconds = 50,
+ Angle = Math.PI / 2
+ };
+ client.Move(msgD);
+ break;
+ case Key.A:
+ case Key.NumPad4:
+ MoveMsg msgA = new()
+ {
+ PlayerId = playerID,
+ TimeInMilliseconds = 50,
+ Angle = 3 * Math.PI / 2
+ };
+ client.Move(msgA);
+ break;
+ case Key.J:
+ AttackMsg msgJ = new()
+ {
+ PlayerId = playerID,
+ Angle = Math.PI
+ };
+ client.Attack(msgJ);
+ break;
+ case Key.K:
+ IDMsg msgK = new()
+ {
+ PlayerId = playerID,
+ };
+ client.StartLearning(msgK);
+ break;
+ case Key.R:
+ TreatAndRescueMsg msgR = new()
+ {
+ PlayerId = playerID,
+ };
+ client.StartRescueMate(msgR);
+ break;
+ case Key.T:
+ TreatAndRescueMsg msgT = new()
+ {
+ PlayerId = playerID,
+ };
+ client.StartTreatMate(msgT);
+ break;
+ case Key.G:
+ IDMsg msgG = new()
+ {
+ PlayerId = playerID,
+ };
+ client.Graduate(msgG);
+ break;
+ case Key.H:
+ IDMsg msgH = new()
+ {
+ PlayerId = playerID,
+ };
+ client.StartOpenGate(msgH);
+ break;
+ case Key.O:
+ IDMsg msgO = new()
+ {
+ PlayerId = playerID,
+ };
+ client.OpenDoor(msgO);
+ break;
+ case Key.P:
+ IDMsg msgP = new()
+ {
+ PlayerId = playerID,
+ };
+ client.CloseDoor(msgP);
+ break;
+ case Key.U:
+ IDMsg msgU = new()
+ {
+ PlayerId = playerID,
+ };
+ client.SkipWindow(msgU);
+ break;
+ case Key.I:
+ IDMsg msgI = new()
+ {
+ PlayerId = playerID,
+ };
+ client.StartOpenChest(msgI);
+ break;
+ case Key.E:
+ IDMsg msgE = new()
+ {
+ PlayerId = playerID,
+ };
+ client.EndAllAction(msgE);
+ break;
+ case Key.F:
+ PropMsg msgF = new()
+ {
+ PlayerId = playerID,
+ PropType = Protobuf.PropType.NullPropType,
+ };
+ client.PickProp(msgF);
+ break;
+ case Key.C:
+ PropMsg msgC = new()
+ {
+ PlayerId = playerID,
+ PropType = Protobuf.PropType.NullPropType,
+ };
+ client.ThrowProp(msgC);
+ break;
+ case Key.V:
+ PropMsg msgV = new()
+ {
+ PlayerId = playerID,
+ PropType = Protobuf.PropType.NullPropType,
+ };
+ client.UseProp(msgV);
+ break;
+ case Key.B:
+ SkillMsg msgB = new()
+ {
+ PlayerId = playerID,
+ SkillId = 0,
+ };
+ client.UseSkill(msgB);
+ break;
+ case Key.N:
+ SkillMsg msgN = new()
+ {
+ PlayerId = playerID,
+ SkillId = 1,
+ };
+ client.UseSkill(msgN);
+ break;
+ case Key.M:
+ SkillMsg msgM = new()
+ {
+ PlayerId = playerID,
+ SkillId = 2,
+ };
+ client.UseSkill(msgM);
+ break;
+ default:
+ break;
}
}
}
@@ -1106,7 +1101,7 @@ namespace Client
{
if (!isPlaybackMode)
{
- if (humanOrButcher&&human != null)
+ if (humanOrButcher && human != null)
{
AttackMsg msgJ = new()
{
@@ -1182,7 +1177,7 @@ namespace Client
{
_ = Process.Start("C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe", "https://eesast.com");
}
- catch (Exception exc)
+ catch (Exception)
{
// ErrorDisplayer error = new("发生错误。以下是系统报告\n" + exc.ToString());
// error.Show();
@@ -1231,7 +1226,7 @@ namespace Client
{
throw new Exception("敬请期待");
}
- catch (Exception exc)
+ catch (Exception)
{
// ErrorDisplayer error = new(exc.Message);
// error.Show();
@@ -1329,5 +1324,7 @@ namespace Client
private string[] comInfo = new string[5];
ArgumentOptions? options = null;
+
+ bool gateOpened = false;
}
}
diff --git a/logic/Client/PlaybackClient.cs b/logic/Client/PlaybackClient.cs
index 5b9d999..322de19 100644
--- a/logic/Client/PlaybackClient.cs
+++ b/logic/Client/PlaybackClient.cs
@@ -36,8 +36,8 @@ namespace Client
}
}
- public int[,]? ReadDataFromFile(List listOfProp,List listOfHuman,List listOfButcher,List listOfBullet,
- List listOfBombedBullet,List listOfAll,List listOfChest,List listOfClassroom,
+ public int[,]? ReadDataFromFile(List listOfProp, List listOfHuman, List listOfButcher, List listOfBullet,
+ List listOfBombedBullet, List listOfAll, List listOfChest, List listOfClassroom,
List listOfDoor, List listOfGate, object dataLock)
{
if (Reader == null)
diff --git a/logic/Client/Properties/launchSettings.json b/logic/Client/Properties/launchSettings.json
index b6b9a43..522f015 100644
--- a/logic/Client/Properties/launchSettings.json
+++ b/logic/Client/Properties/launchSettings.json
@@ -2,7 +2,7 @@
"profiles": {
"Client": {
"commandName": "Project",
- "commandLineArgs": "--cl --playbackFile=D:\\2_autumn\\thuai6\\playback.thuaipb --characterID=4 --type=2 --occupation=1"
+ "commandLineArgs": "--cl --ip 127.0.0.1 --port 8888 --characterID 0 --type 1 --occupation 1"
}
}
}
\ No newline at end of file
diff --git a/logic/Client/StatusBarOfCircumstance.xaml b/logic/Client/StatusBarOfCircumstance.xaml
index a690fb2..daeed4b 100644
--- a/logic/Client/StatusBarOfCircumstance.xaml
+++ b/logic/Client/StatusBarOfCircumstance.xaml
@@ -17,9 +17,9 @@
-
-
-
-
+
+
+
+
\ No newline at end of file
diff --git a/logic/Client/StatusBarOfCircumstance.xaml.cs b/logic/Client/StatusBarOfCircumstance.xaml.cs
index 2900d5e..b4294b6 100644
--- a/logic/Client/StatusBarOfCircumstance.xaml.cs
+++ b/logic/Client/StatusBarOfCircumstance.xaml.cs
@@ -36,11 +36,12 @@ namespace Client
scoresOfStudents.FontSize = scoresOfTrickers.FontSize = fontsize;
}
- public void SetValue(MessageOfAll obj)
+ public void SetValue(MessageOfAll obj, bool gateOpened)
{
+ bool hiddenGateRefreshed = false, hiddenGateOpened = false;
time.Text = "Time⏳: " + Convert.ToString(obj.GameTime);
- status.Text = "📱: " + Convert.ToString(obj.SubjectLeft) + "\n🚪: ";
- if(obj.GateOpened)
+ status.Text = "📱: " + Convert.ToString(obj.SubjectFinished) + "\n🚪: ";
+ if (gateOpened)
{
status.Text += "Open\n🆘: ";
}
@@ -48,9 +49,17 @@ namespace Client
{
status.Text += "Close\n🆘: ";
}
- if(obj.HiddenGateRefreshed)
+ if (obj.SubjectFinished >= Preparation.Utility.GameData.numOfGeneratorRequiredForEmergencyExit)
{
- if(obj.HiddenGateOpened)
+ hiddenGateRefreshed = true;
+ }
+ if (Preparation.Utility.GameData.numOfStudent == 1 + obj.StudentQuited + obj.StudentGraduated)
+ {
+ hiddenGateOpened = true;
+ }
+ if (hiddenGateRefreshed)
+ {
+ if (hiddenGateOpened)
{
status.Text += "Open\n🏃: ";
}
@@ -63,10 +72,10 @@ namespace Client
{
status.Text += "Unrefreshed\n🏃: ";
}
- status.Text += Convert.ToString(obj.StudentGraduated)+ "\n⚰️: ";
+ status.Text += Convert.ToString(obj.StudentGraduated) + "\n⚰️: ";
status.Text += Convert.ToString(obj.StudentQuited);
- scoresOfStudents.Text = "Scores of Students:" + Convert.ToString(obj.StudentScore);
- scoresOfTrickers.Text = "Scores of Tricker:" + Convert.ToString(obj.TrickerScore);
+ scoresOfStudents.Text = "Scores of Students: " + Convert.ToString(obj.StudentScore);
+ scoresOfTrickers.Text = "Scores of Tricker: " + Convert.ToString(obj.TrickerScore);
}
}
}
diff --git a/logic/Client/StatusBarOfHunter.xaml b/logic/Client/StatusBarOfHunter.xaml
index 8536b3a..604184c 100644
--- a/logic/Client/StatusBarOfHunter.xaml
+++ b/logic/Client/StatusBarOfHunter.xaml
@@ -22,10 +22,10 @@
-
-
+
+
-
+
diff --git a/logic/Client/StatusBarOfHunter.xaml.cs b/logic/Client/StatusBarOfHunter.xaml.cs
index 0ce2946..cf6fb8e 100644
--- a/logic/Client/StatusBarOfHunter.xaml.cs
+++ b/logic/Client/StatusBarOfHunter.xaml.cs
@@ -36,7 +36,7 @@ namespace Client
}
public void SetFontSize(double fontsize)
{
- serial.FontSize = scores.FontSize = state.FontSize = status.FontSize=activeSkill0.FontSize = activeSkill1.FontSize = activeSkill2.FontSize = prop0.FontSize = prop1.FontSize = prop2.FontSize = prop3.FontSize = fontsize;
+ serial.FontSize = scores.FontSize = state.FontSize = status.FontSize = activeSkill0.FontSize = activeSkill1.FontSize = activeSkill2.FontSize = prop0.FontSize = prop1.FontSize = prop2.FontSize = prop3.FontSize = fontsize;
}
private void SetStaticValue(MessageOfTricker obj)
@@ -45,23 +45,23 @@ namespace Client
{
case TrickerType.Assassin:
coolTime0 = coolTime1 = coolTime2 = 10000;
- serial.Text = "👥" + Convert.ToString(1) + "👻" + Convert.ToString(obj.PlayerId) + "\n职业:Assassin";
+ serial.Text = "👥" + Convert.ToString(1) + "👻" + Convert.ToString(obj.PlayerId) + "\n职业: Assassin";
break;
case TrickerType._2:
coolTime0 = coolTime1 = coolTime2 = 20000;
- serial.Text = "👥" + Convert.ToString(1) + "👻" + Convert.ToString(obj.PlayerId) + "\n职业:TrickerType2";
+ serial.Text = "👥" + Convert.ToString(1) + "👻" + Convert.ToString(obj.PlayerId) + "\n职业: TrickerType2";
break;
case TrickerType._3:
coolTime0 = coolTime1 = coolTime2 = 30000;
- serial.Text = "👥" + Convert.ToString(1) + "👻" + Convert.ToString(obj.PlayerId) + "\n职业:TrickerType3";
+ serial.Text = "👥" + Convert.ToString(1) + "👻" + Convert.ToString(obj.PlayerId) + "\n职业: TrickerType3";
break;
case TrickerType._4:
coolTime0 = coolTime1 = coolTime2 = 40000;
- serial.Text = "👥" + Convert.ToString(1) + "👻" + Convert.ToString(obj.PlayerId) + "\n职业:TrickerType4";
+ serial.Text = "👥" + Convert.ToString(1) + "👻" + Convert.ToString(obj.PlayerId) + "\n职业: TrickerType4";
break;
case TrickerType.NullTrickerType:
coolTime0 = coolTime1 = coolTime2 = -1;
- serial.Text = "👥" + Convert.ToString(1) + "👻" + Convert.ToString(obj.PlayerId) + "\n职业:NullTrickerType";
+ serial.Text = "👥" + Convert.ToString(1) + "👻" + Convert.ToString(obj.PlayerId) + "\n职业: NullTrickerType";
break;
}
activeSkill0.Text = "Skill0";
@@ -71,7 +71,7 @@ namespace Client
}
private void SetDynamicValue(MessageOfTricker obj)
{
- status.Text = "🏃🏿:"+Convert.ToString(obj.Speed);
+ status.Text = "🏃🏿: " + Convert.ToString(obj.Speed);
switch (obj.PlayerState)
{
case PlayerState.Idle:
@@ -114,10 +114,10 @@ namespace Client
state.Text = "Locking";
break;
case PlayerState.Rummaging:
- state.Text ="Rummaging";
+ state.Text = "Rummaging";
break;
case PlayerState.Climbing:
- state.Text ="Climbing";
+ state.Text = "Climbing";
break;
case PlayerState.OpeningAChest:
state.Text = "OpeningAChest";
@@ -131,7 +131,7 @@ namespace Client
default:
break;
}
- scores.Text = "Scores:" + Convert.ToString(obj.Score);
+ scores.Text = "Scores: " + Convert.ToString(obj.Score);
if (obj.TimeUntilSkillAvailable[0] >= 0)
skillprogress0.Value = 100 - obj.TimeUntilSkillAvailable[0] / coolTime0 * 100;
if (obj.TimeUntilSkillAvailable[1] >= 0)
@@ -153,25 +153,25 @@ namespace Client
case 0:
switch (icon)
{
- case PropType.Key3:
+ case Protobuf.PropType.Key3:
prop0.Text = "🔑";
break;
- case PropType.Key5:
+ case Protobuf.PropType.Key5:
prop0.Text = "🔑";
break;
- case PropType.Key6:
+ case Protobuf.PropType.Key6:
prop0.Text = "🔑";
break;
- case PropType.AddSpeed:
+ case Protobuf.PropType.AddSpeed:
prop0.Text = "⛸";
break;
- case PropType.AddLifeOrAp:
+ case Protobuf.PropType.AddLifeOrAp:
prop0.Text = "🏅";
break;
- case PropType.AddHpOrAp:
+ case Protobuf.PropType.AddHpOrAp:
prop0.Text = "♥";
break;
- case PropType.ShieldOrSpear:
+ case Protobuf.PropType.ShieldOrSpear:
prop0.Text = "🛡";
break;
default:
@@ -183,25 +183,25 @@ namespace Client
case 1:
switch (icon)
{
- case PropType.Key3:
+ case Protobuf.PropType.Key3:
prop1.Text = "🔑";
break;
- case PropType.Key5:
+ case Protobuf.PropType.Key5:
prop1.Text = "🔑";
break;
- case PropType.Key6:
+ case Protobuf.PropType.Key6:
prop1.Text = "🔑";
break;
- case PropType.AddSpeed:
+ case Protobuf.PropType.AddSpeed:
prop1.Text = "⛸";
break;
- case PropType.AddLifeOrAp:
+ case Protobuf.PropType.AddLifeOrAp:
prop1.Text = "🏅";
break;
- case PropType.AddHpOrAp:
+ case Protobuf.PropType.AddHpOrAp:
prop1.Text = "♥";
break;
- case PropType.ShieldOrSpear:
+ case Protobuf.PropType.ShieldOrSpear:
prop1.Text = "🛡";
break;
default:
@@ -213,25 +213,25 @@ namespace Client
case 2:
switch (icon)
{
- case PropType.Key3:
+ case Protobuf.PropType.Key3:
prop2.Text = "🔑";
break;
- case PropType.Key5:
+ case Protobuf.PropType.Key5:
prop2.Text = "🔑";
break;
- case PropType.Key6:
+ case Protobuf.PropType.Key6:
prop2.Text = "🔑";
break;
- case PropType.AddSpeed:
+ case Protobuf.PropType.AddSpeed:
prop2.Text = "⛸";
break;
- case PropType.AddLifeOrAp:
+ case Protobuf.PropType.AddLifeOrAp:
prop2.Text = "🏅";
break;
- case PropType.AddHpOrAp:
+ case Protobuf.PropType.AddHpOrAp:
prop2.Text = "♥";
break;
- case PropType.ShieldOrSpear:
+ case Protobuf.PropType.ShieldOrSpear:
prop2.Text = "🛡";
break;
default:
@@ -243,25 +243,25 @@ namespace Client
case 3:
switch (icon)
{
- case PropType.Key3:
+ case Protobuf.PropType.Key3:
prop3.Text = "🔑";
break;
- case PropType.Key5:
+ case Protobuf.PropType.Key5:
prop3.Text = "🔑";
break;
- case PropType.Key6:
+ case Protobuf.PropType.Key6:
prop3.Text = "🔑";
break;
- case PropType.AddSpeed:
+ case Protobuf.PropType.AddSpeed:
prop3.Text = "⛸";
break;
- case PropType.AddLifeOrAp:
+ case Protobuf.PropType.AddLifeOrAp:
prop3.Text = "🏅";
break;
- case PropType.AddHpOrAp:
+ case Protobuf.PropType.AddHpOrAp:
prop3.Text = "♥";
break;
- case PropType.ShieldOrSpear:
+ case Protobuf.PropType.ShieldOrSpear:
prop3.Text = "🛡";
break;
default:
diff --git a/logic/Client/StatusBarOfSurvivor.xaml b/logic/Client/StatusBarOfSurvivor.xaml
index a21c559..abc8cd2 100644
--- a/logic/Client/StatusBarOfSurvivor.xaml
+++ b/logic/Client/StatusBarOfSurvivor.xaml
@@ -23,9 +23,9 @@
-
-
-
+
+
+
diff --git a/logic/Client/StatusBarOfSurvivor.xaml.cs b/logic/Client/StatusBarOfSurvivor.xaml.cs
index 5950c16..06fb4e5 100644
--- a/logic/Client/StatusBarOfSurvivor.xaml.cs
+++ b/logic/Client/StatusBarOfSurvivor.xaml.cs
@@ -39,23 +39,23 @@ namespace Client
{
case StudentType.Athlete:
coolTime0 = coolTime1 = coolTime2 = 10000;
- serial.Text = "👥" + Convert.ToString(2) + "🧓" + Convert.ToString(obj.PlayerId) + "\n职业:Athlete";
+ serial.Text = "👥" + Convert.ToString(2) + "🧓" + Convert.ToString(obj.PlayerId) + "\n职业: Athlete";
break;
case StudentType._2:
coolTime0 = coolTime1 = coolTime2 = 20000;
- serial.Text = "👥" + Convert.ToString(2) + "🧓" + Convert.ToString(obj.PlayerId) + "\n职业:StudentType2";
+ serial.Text = "👥" + Convert.ToString(2) + "🧓" + Convert.ToString(obj.PlayerId) + "\n职业: StudentType2";
break;
case StudentType._3:
coolTime0 = coolTime1 = coolTime2 = 30000;
- serial.Text = "👥" + Convert.ToString(2) + "🧓" + Convert.ToString(obj.PlayerId) + "\n职业:StudentType3";
+ serial.Text = "👥" + Convert.ToString(2) + "🧓" + Convert.ToString(obj.PlayerId) + "\n职业: StudentType3";
break;
case StudentType._4:
coolTime0 = coolTime1 = coolTime2 = 40000;
- serial.Text = "👥" + Convert.ToString(2) + "🧓" + Convert.ToString(obj.PlayerId) + "\n职业:StudentType4";
+ serial.Text = "👥" + Convert.ToString(2) + "🧓" + Convert.ToString(obj.PlayerId) + "\n职业: StudentType4";
break;
case StudentType.NullStudentType:
coolTime0 = coolTime1 = coolTime2 = -1;
- serial.Text = "👥" + Convert.ToString(2) + "🧓" + Convert.ToString(obj.PlayerId) + "\n职业:NullStudentType";
+ serial.Text = "👥" + Convert.ToString(2) + "🧓" + Convert.ToString(obj.PlayerId) + "\n职业: NullStudentType";
break;
}
activeSkill0.Text = "Skill0";
@@ -65,107 +65,107 @@ namespace Client
}
private void SetDynamicValue(MessageOfStudent obj)
{
- int life= obj.Determination,death=obj.Addiction;
- switch(obj.PlayerState)
+ int life = obj.Determination, death = obj.Addiction;
+ switch (obj.PlayerState)
{
case PlayerState.Idle:
- status.Text = "♥:" + Convert.ToString(life)+"\nIdle";
+ status.Text = "♥: " + Convert.ToString(life) + "\nIdle";
break;
case PlayerState.Learning:
- status.Text = "♥:" + Convert.ToString(life)+ "\nLearning";
+ status.Text = "♥: " + Convert.ToString(life) + "\nLearning";
break;
case PlayerState.Addicted:
- status.Text = "💀:" + Convert.ToString(death)+ "\nAddicted";
+ status.Text = "💀: " + Convert.ToString(death) + "\nAddicted";
break;
case PlayerState.Graduated:
status.Text = status.Text = "♥" + "\nGraduated";
break;
case PlayerState.Quit:
- status.Text = "💀"+"\nQuit";
+ status.Text = "💀" + "\nQuit";
break;
case PlayerState.Treated:
- status.Text = "♥:" + Convert.ToString(life) + "\nTreated";
+ status.Text = "♥: " + Convert.ToString(life) + "\nTreated";
break;
case PlayerState.Rescued:
- status.Text = "💀:" + Convert.ToString(death)+ "\nRescued";
+ status.Text = "💀: " + Convert.ToString(death) + "\nRescued";
break;
case PlayerState.Stunned:
- status.Text = "♥:" + Convert.ToString(life) + "\nStunned";
+ status.Text = "♥: " + Convert.ToString(life) + "\nStunned";
break;
case PlayerState.Treating:
- status.Text = "♥:" + Convert.ToString(life) + "\nTreating";
+ status.Text = "♥: " + Convert.ToString(life) + "\nTreating";
break;
case PlayerState.Rescuing:
- status.Text = "♥:" + Convert.ToString(life) + "\nRescuing";
+ status.Text = "♥: " + Convert.ToString(life) + "\nRescuing";
break;
case PlayerState.Swinging:
- status.Text = "♥:" + Convert.ToString(life) + "\nSwinging";
+ status.Text = "♥: " + Convert.ToString(life) + "\nSwinging";
break;
case PlayerState.Attacking:
- status.Text = "♥:" + Convert.ToString(life) + "\nAttacking";
+ status.Text = "♥: " + Convert.ToString(life) + "\nAttacking";
break;
case PlayerState.Locking:
- status.Text = "♥:" + Convert.ToString(life) + "\nLocking";
+ status.Text = "♥: " + Convert.ToString(life) + "\nLocking";
break;
case PlayerState.Rummaging:
- status.Text = "♥:" + Convert.ToString(life) + "\nRummaging";
+ status.Text = "♥: " + Convert.ToString(life) + "\nRummaging";
break;
case PlayerState.Climbing:
- status.Text = "♥:" + Convert.ToString(life) + "\nClimbing";
+ status.Text = "♥: " + Convert.ToString(life) + "\nClimbing";
break;
case PlayerState.OpeningAChest:
- status.Text = "♥:" + Convert.ToString(life) + "\nOpeningAChest";
+ status.Text = "♥: " + Convert.ToString(life) + "\nOpeningAChest";
break;
case PlayerState.UsingSpecialSkill:
- status.Text = "♥:" + Convert.ToString(life) + "\nUsingSpecialSkill";
+ status.Text = "♥: " + Convert.ToString(life) + "\nUsingSpecialSkill";
break;
case PlayerState.OpeningAGate:
- status.Text = "♥:" + Convert.ToString(life) + "\nOpeningAGate";
+ status.Text = "♥: " + Convert.ToString(life) + "\nOpeningAGate";
break;
default:
break;
}
- scores.Text = "Scores:" + obj.Score;
- if (obj.TimeUntilSkillAvailable[0]>=0)
+ scores.Text = "Scores: " + obj.Score;
+ if (obj.TimeUntilSkillAvailable[0] >= 0)
skillprogress0.Value = 100 - obj.TimeUntilSkillAvailable[0] / coolTime0 * 100;
- if(obj.TimeUntilSkillAvailable[1] >= 0)
+ if (obj.TimeUntilSkillAvailable[1] >= 0)
skillprogress1.Value = 100 - obj.TimeUntilSkillAvailable[1] / coolTime1 * 100;
- if(obj.TimeUntilSkillAvailable[2] >= 0)
+ if (obj.TimeUntilSkillAvailable[2] >= 0)
skillprogress2.Value = 100 - obj.TimeUntilSkillAvailable[2] / coolTime2 * 100;
if (obj.PlayerState == PlayerState.Quit)
{
skillprogress0.Value = skillprogress1.Value = skillprogress2.Value = 0;
- skillprogress0.Background = skillprogress1.Background= skillprogress2.Background=Brushes.Gray;
+ skillprogress0.Background = skillprogress1.Background = skillprogress2.Background = Brushes.Gray;
}
else
- skillprogress0.Background = skillprogress1.Background= skillprogress2.Background=Brushes.White;
+ skillprogress0.Background = skillprogress1.Background = skillprogress2.Background = Brushes.White;
int cnt = 0;
foreach (var icon in obj.Prop)
{
- switch(cnt)
+ switch (cnt)
{
case 0:
switch (icon)
{
- case PropType.Key3:
+ case Protobuf.PropType.Key3:
prop0.Text = "🔑";
break;
- case PropType.Key5:
+ case Protobuf.PropType.Key5:
prop0.Text = "🔑";
break;
- case PropType.Key6:
+ case Protobuf.PropType.Key6:
prop0.Text = "🔑";
break;
- case PropType.AddSpeed:
+ case Protobuf.PropType.AddSpeed:
prop0.Text = "⛸";
break;
- case PropType.AddLifeOrAp:
+ case Protobuf.PropType.AddLifeOrAp:
prop0.Text = "🏅";
break;
- case PropType.AddHpOrAp:
+ case Protobuf.PropType.AddHpOrAp:
prop0.Text = "♥";
break;
- case PropType.ShieldOrSpear:
+ case Protobuf.PropType.ShieldOrSpear:
prop0.Text = "🛡";
break;
default:
@@ -177,25 +177,25 @@ namespace Client
case 1:
switch (icon)
{
- case PropType.Key3:
+ case Protobuf.PropType.Key3:
prop1.Text = "🔑";
break;
- case PropType.Key5:
+ case Protobuf.PropType.Key5:
prop1.Text = "🔑";
break;
- case PropType.Key6:
+ case Protobuf.PropType.Key6:
prop1.Text = "🔑";
break;
- case PropType.AddSpeed:
+ case Protobuf.PropType.AddSpeed:
prop1.Text = "⛸";
break;
- case PropType.AddLifeOrAp:
+ case Protobuf.PropType.AddLifeOrAp:
prop1.Text = "🏅";
break;
- case PropType.AddHpOrAp:
+ case Protobuf.PropType.AddHpOrAp:
prop1.Text = "♥";
break;
- case PropType.ShieldOrSpear:
+ case Protobuf.PropType.ShieldOrSpear:
prop1.Text = "🛡";
break;
default:
@@ -207,25 +207,25 @@ namespace Client
case 2:
switch (icon)
{
- case PropType.Key3:
+ case Protobuf.PropType.Key3:
prop2.Text = "🔑";
break;
- case PropType.Key5:
+ case Protobuf.PropType.Key5:
prop2.Text = "🔑";
break;
- case PropType.Key6:
+ case Protobuf.PropType.Key6:
prop2.Text = "🔑";
break;
- case PropType.AddSpeed:
+ case Protobuf.PropType.AddSpeed:
prop2.Text = "⛸";
break;
- case PropType.AddLifeOrAp:
+ case Protobuf.PropType.AddLifeOrAp:
prop2.Text = "🏅";
break;
- case PropType.AddHpOrAp:
+ case Protobuf.PropType.AddHpOrAp:
prop2.Text = "♥";
break;
- case PropType.ShieldOrSpear:
+ case Protobuf.PropType.ShieldOrSpear:
prop2.Text = "🛡";
break;
default:
@@ -237,25 +237,25 @@ namespace Client
case 3:
switch (icon)
{
- case PropType.Key3:
+ case Protobuf.PropType.Key3:
prop3.Text = "🔑";
break;
- case PropType.Key5:
+ case Protobuf.PropType.Key5:
prop3.Text = "🔑";
break;
- case PropType.Key6:
+ case Protobuf.PropType.Key6:
prop3.Text = "🔑";
break;
- case PropType.AddSpeed:
+ case Protobuf.PropType.AddSpeed:
prop3.Text = "⛸";
break;
- case PropType.AddLifeOrAp:
+ case Protobuf.PropType.AddLifeOrAp:
prop3.Text = "🏅";
break;
- case PropType.AddHpOrAp:
+ case Protobuf.PropType.AddHpOrAp:
prop3.Text = "♥";
break;
- case PropType.ShieldOrSpear:
+ case Protobuf.PropType.ShieldOrSpear:
prop3.Text = "🛡";
break;
default:
@@ -266,7 +266,7 @@ namespace Client
break;
default:
break;
- }
+ }
}
}
public void SetValue(MessageOfStudent obj)
diff --git a/logic/ClientTest/Program.cs b/logic/ClientTest/Program.cs
index 9e55266..87998dc 100644
--- a/logic/ClientTest/Program.cs
+++ b/logic/ClientTest/Program.cs
@@ -5,7 +5,7 @@ namespace ClientTest
{
public class Program
{
- public static async Task Main(string[] args)
+ public static Task Main(string[] args)
{
Thread.Sleep(3000);
Channel channel = new Channel("127.0.0.1:8888", ChannelCredentials.Insecure);
@@ -36,17 +36,7 @@ namespace ClientTest
Console.WriteLine("Move!");
}
- /*while (await call.ResponseStream.MoveNext())
- {
- //Console.WriteLine("hi");
- var currentGameInfo = call.ResponseStream.Current;
- for (int i = 0; i < currentGameInfo.ObjMessage.Count; i++)
- {
- if (currentGameInfo.ObjMessage[i].MessageOfObjCase == MessageOfObj.MessageOfObjOneofCase.StudentMessage)
- Console.WriteLine($"Human is at ({currentGameInfo.ObjMessage[i].StudentMessage.X}, {currentGameInfo.ObjMessage[i].StudentMessage.Y})");
- }
- }*/
-
+ return Task.CompletedTask;
}
}
}
\ No newline at end of file
diff --git a/logic/GameClass/GameObj/Map/Chest.cs b/logic/GameClass/GameObj/Map/Chest.cs
index 78f2996..23ee8d0 100644
--- a/logic/GameClass/GameObj/Map/Chest.cs
+++ b/logic/GameClass/GameObj/Map/Chest.cs
@@ -28,12 +28,12 @@ namespace GameClass.GameObj
{
if (value > 0)
lock (gameObjLock)
- openDegree = (value > GameData.degreeOfOpeningChest) ? GameData.degreeOfOpeningChest : value;
+ openDegree = (value > GameData.degreeOfOpenedChest) ? GameData.degreeOfOpenedChest : value;
else
lock (gameObjLock)
openDegree = 0;
}
}
- public bool IsOpen() => (OpenDegree == GameData.degreeOfOpeningChest);
+ public bool IsOpen() => (OpenDegree == GameData.degreeOfOpenedChest);
}
}
diff --git a/logic/Preparation/Utility/GameData.cs b/logic/Preparation/Utility/GameData.cs
index b1fb2c9..92091b2 100644
--- a/logic/Preparation/Utility/GameData.cs
+++ b/logic/Preparation/Utility/GameData.cs
@@ -203,7 +203,7 @@ namespace Preparation.Utility
#region 物体相关
public const int degreeOfFixedGenerator = 10300000;
public const int degreeOfLockingOrOpeningTheDoor = 10000;
- public const int degreeOfOpeningChest = 10000;
+ public const int degreeOfOpenedChest = 10000;
public const int degreeOfOpenedDoorway = 18000;
public const int maxNumOfPropInChest = 2;
public const int numOfGeneratorRequiredForRepair = 7;
diff --git a/logic/Server/CopyInfo.cs b/logic/Server/CopyInfo.cs
index b6996f2..6e609db 100644
--- a/logic/Server/CopyInfo.cs
+++ b/logic/Server/CopyInfo.cs
@@ -270,10 +270,10 @@ namespace Server
foreach (var value in player.PropInventory)
msg.StudentMessage.Prop.Add(ToPropType(value.GetPropType()));
- msg.StudentMessage.Place = ToPlaceType(player.Place);
+ msg.StudentMessage.Place = ToPlaceType((Preparation.Utility.PlaceType)player.Place);
msg.StudentMessage.Guid = player.ID;
- msg.StudentMessage.PlayerState = ToPlayerState(player.PlayerState);
+ msg.StudentMessage.PlayerState = ToPlayerState((PlayerStateType)player.PlayerState);
msg.StudentMessage.PlayerId = player.PlayerID;
msg.StudentMessage.ViewRange = player.ViewRange;
msg.StudentMessage.Radius = player.Radius;
@@ -288,7 +288,7 @@ namespace Server
msg.StudentMessage.Buff.Add(ToStudentBuffType(kvp.Key));
}
- msg.StudentMessage.BulletType = ToBulletType(player.BulletOfPlayer);
+ msg.StudentMessage.BulletType = ToBulletType((Preparation.Utility.BulletType)player.BulletOfPlayer);
msg.StudentMessage.LearningSpeed = player.FixSpeed;
msg.StudentMessage.TreatSpeed = player.TreatSpeed;
msg.StudentMessage.FacingDirection = player.FacingDirection.Angle();
@@ -310,7 +310,7 @@ namespace Server
for (int i = 0; i < GameData.maxNumOfSkill - player.TimeUntilActiveSkillAvailable.Count(); ++i)
msg.TrickerMessage.TimeUntilSkillAvailable.Add(-1);
- msg.TrickerMessage.Place = ToPlaceType(player.Place);
+ msg.TrickerMessage.Place = ToPlaceType((Preparation.Utility.PlaceType)player.Place);
foreach (var value in player.PropInventory)
msg.TrickerMessage.Prop.Add(ToPropType(value.GetPropType()));
@@ -320,11 +320,11 @@ namespace Server
msg.TrickerMessage.PlayerId = player.PlayerID;
msg.TrickerMessage.ViewRange = player.ViewRange;
msg.TrickerMessage.Radius = player.Radius;
- msg.TrickerMessage.PlayerState = ToPlayerState(player.PlayerState);
+ msg.TrickerMessage.PlayerState = ToPlayerState((PlayerStateType)player.PlayerState);
msg.TrickerMessage.TrickDesire = (player.BgmDictionary.ContainsKey(BgmType.StudentIsApproaching)) ? player.BgmDictionary[BgmType.StudentIsApproaching] : 0;
msg.TrickerMessage.ClassVolume = (player.BgmDictionary.ContainsKey(BgmType.GeneratorIsBeingFixed)) ? player.BgmDictionary[BgmType.GeneratorIsBeingFixed] : 0;
msg.TrickerMessage.FacingDirection = player.FacingDirection.Angle();
- msg.TrickerMessage.BulletType = ToBulletType(player.BulletOfPlayer);
+ msg.TrickerMessage.BulletType = ToBulletType((Preparation.Utility.BulletType)player.BulletOfPlayer);
foreach (KeyValuePair kvp in player.Buff)
{
if (kvp.Value)
@@ -344,7 +344,7 @@ namespace Server
msg.BulletMessage.FacingDirection = bullet.FacingDirection.Angle();
msg.BulletMessage.Guid = bullet.ID;
msg.BulletMessage.Team = (bullet.Parent.IsGhost()) ? PlayerType.TrickerPlayer : PlayerType.StudentPlayer;
- msg.BulletMessage.Place = ToPlaceType(bullet.Place);
+ msg.BulletMessage.Place = ToPlaceType((Preparation.Utility.PlaceType)bullet.Place);
msg.BulletMessage.BombRange = bullet.BulletBombRange;
msg.BulletMessage.Speed = bullet.Speed;
return msg;
@@ -359,7 +359,7 @@ namespace Server
msg.PropMessage.Y = prop.Position.y;
msg.PropMessage.FacingDirection = prop.FacingDirection.Angle();
msg.PropMessage.Guid = prop.ID;
- msg.PropMessage.Place = ToPlaceType(prop.Place);
+ msg.PropMessage.Place = ToPlaceType((Preparation.Utility.PlaceType)prop.Place);
return msg;
}
diff --git a/logic/Server/Properties/EnumType.cs b/logic/Server/Properties/EnumType.cs
new file mode 100644
index 0000000..4c39f73
--- /dev/null
+++ b/logic/Server/Properties/EnumType.cs
@@ -0,0 +1,142 @@
+
+namespace Preparation.Utility
+{
+ ///
+ /// 存放所有用到的枚举类型
+ ///
+ public enum PlayerStateType
+ {
+ Null = 0,
+ Addicted = 1,
+ Escaped = 2,
+ Swinging = 3,//指后摇
+ Deceased = 4,
+ Moving = 5,
+ Treating = 6,
+ Rescuing = 7,
+ Fixing = 8,
+ Treated = 9,
+ Rescued = 10,
+ Stunned = 11,
+ TryingToAttack = 12,//指前摇
+ LockingOrOpeningTheDoor = 13,
+ OpeningTheChest = 14,
+ ClimbingThroughWindows = 15,
+ UsingSkill = 16,
+ OpeningTheDoorway = 17,
+ }
+ public enum GameObjType
+ {
+ Null = 0,
+ Character = 1,
+ Prop = 2,
+ PickedProp = 3,
+ Bullet = 4,
+ BombedBullet = 5,
+
+ Wall = 6,
+ Grass = 7,
+ Generator = 8, // 发电机
+ Doorway = 9,
+ EmergencyExit = 10,
+ OutOfBoundBlock = 11, // 范围外
+ Window = 12,
+ Door = 13,
+ Chest = 14,
+ }
+ public enum ShapeType
+ {
+ Null = 0,
+ Circle = 1, // 子弹和人物为圆形,格子为方形
+ Square = 2
+ }
+ public enum BulletType // 子弹类型
+ {
+ Null = 0,
+ OrdinaryBullet = 1, // 普通子弹
+ AtomBomb = 2, // 原子弹
+ FastBullet = 3, // 快速子弹
+ LineBullet = 4, // 直线子弹
+ FlyingKnife = 5, //飞刀
+ CommonAttackOfGhost = 6,
+ // Ram = 7,
+ }
+ public enum PropType // 道具类型
+ {
+ Null = 0,
+ AddSpeed = 1,
+ AddLifeOrAp = 2,
+ AddHpOrAp = 3,
+ ShieldOrSpear = 4,
+ Key3 = 5,
+ Key5 = 6,
+ Key6 = 7,
+ }
+ public enum CharacterType // 职业
+ {
+ Null = 0,
+ Assassin = 1,
+ Athlete = 2,
+ RecoverAfterBattle = 3,
+ SpeedUpWhenLeavingGrass = 4,
+ Teacher = 5,
+ PSkill5 = 6
+ }
+ public enum ActiveSkillType // 主动技能
+ {
+ Null = 0,
+ BecomeInvisible = 1,
+ BecomeVampire = 2,
+ NuclearWeapon = 3,
+ SuperFast = 4,
+ UseKnife = 5,
+ CanBeginToCharge = 6,
+ Punish = 7,
+ }
+ public enum PassiveSkillType
+ {
+ Null = 0,
+ BecomeInvisible = 1,
+ BecomeVampire = 2,
+ NuclearWeapon = 3,
+ SuperFast = 4,
+ ASkill4 = 5,
+ ASkill5 = 6
+ }
+ public enum BuffType // buff
+ {
+ Null = 0,
+ AddSpeed = 1,
+ AddLIFE = 2,
+ Shield = 3,
+ Spear = 4,
+ AddAp = 5,
+ }
+
+ public enum PlaceType
+ {
+ Null = 0,
+ BirthPoint1 = 1,//必须从1开始
+ BirthPoint2 = 2,
+ BirthPoint3 = 3,
+ BirthPoint4 = 4,
+ BirthPoint5 = 5,
+ Wall = 6,
+ Grass = 7,
+ Generator = 8, // 发电机
+ Doorway = 9,
+ EmergencyExit = 10,
+ Window = 11,
+ Door3 = 12,
+ Door5 = 13,
+ Door6 = 14,
+ Chest = 15,
+ }
+ public enum BgmType
+ {
+ Null = 0,
+ GhostIsComing = 1,
+ StudentIsApproaching = 2,
+ GeneratorIsBeingFixed = 3,
+ }
+}
\ No newline at end of file
diff --git a/logic/Server/Properties/launchSettings.json b/logic/Server/Properties/launchSettings.json
index 61e0160..ea860e8 100644
--- a/logic/Server/Properties/launchSettings.json
+++ b/logic/Server/Properties/launchSettings.json
@@ -2,7 +2,7 @@
"profiles": {
"Server": {
"commandName": "Project",
- "commandLineArgs": "--ip 0.0.0.0 -p 8888"
+ "commandLineArgs": "--ip 0.0.0.0 -p 8888 --teamCount 1 --studentCount 1 --trickerCount 0"
}
}
}
\ No newline at end of file
diff --git a/logic/cmd/gameServer.cmd b/logic/cmd/gameServer.cmd
index b72c813..11e6558 100644
--- a/logic/cmd/gameServer.cmd
+++ b/logic/cmd/gameServer.cmd
@@ -1,22 +1,16 @@
@echo off
-<<<<<<< HEAD
-start cmd /k ..\Server\bin\Debug\net6.0\Server.exe --port 8888 --studentCount 1 --trickerCount 1 --gameTimeInSecond 600 --fileName test
+start cmd /k ..\Server\bin\Debug\net6.0\Server.exe --ip 0.0.0.0 --port 8888 --studentCount 2 --trickerCount 1 --gameTimeInSecond 600 --fileName test
ping -n 2 127.0.0.1 > NUL
-::start cmd /k ..\Client\bin\Debug\net6.0-windows\Client.exe --cl --port=8888 --characterID=4 --type=2 --occupation=1
-=======
-start cmd /k ..\Server\bin\Debug\net6.0\Server.exe --ip 0.0.0.0 --port 8888 --studentCount 1 --trickerCount 1 --gameTimeInSecond 600 --fileName test
->>>>>>> 4e3f3ccafe0e3c791ca4dbe137b32a7d252ae9d5
+start cmd /k ..\Client\bin\Debug\net6.0-windows\Client.exe --cl --port 8888 --characterID 4 --type 2 --occupation 1
ping -n 2 127.0.0.1 > NUL
-start cmd /k ..\Client\bin\Debug\net6.0-windows\Client.exe --cl --port=8888 --characterID=0 --type=1 --occupation=1
-<<<<<<< HEAD
-=======
+start cmd /k ..\Client\bin\Debug\net6.0-windows\Client.exe --cl --port 8888 --characterID 0 --type 1 --occupation 1
ping -n 2 127.0.0.1 > NUL
-start cmd /k ..\Client\bin\Debug\net6.0-windows\Client.exe --cl --port=8888 --characterID=4 --type=2 --occupation=1
->>>>>>> 4e3f3ccafe0e3c791ca4dbe137b32a7d252ae9d5
+start cmd /k ..\Client\bin\Debug\net6.0-windows\Client.exe --cl --port 8888 --characterID 1 --type 1 --occupation 1
+
diff --git a/logic/cmd/playback.cmd b/logic/cmd/playback.cmd
index e4bd7c4..fe1fb14 100644
--- a/logic/cmd/playback.cmd
+++ b/logic/cmd/playback.cmd
@@ -1,3 +1,3 @@
@echo off
-start cmd /k ..\Client\bin\Debug\net6.0-windows\Client.exe --cl --playbackFile D:\2_autumn\thuai6\THUAI6\logic\cmd\first_test.thuaipb
\ No newline at end of file
+start cmd /k ..\Client\bin\Debug\net6.0-windows\Client.exe --cl --playbackFile D:\2_autumn\thuai6\THUAI6\logic\cmd\test.thuaipb
\ No newline at end of file
diff --git a/logic/logic.sln b/logic/logic.sln
index bf66570..1d5f2dc 100644
--- a/logic/logic.sln
+++ b/logic/logic.sln
@@ -19,6 +19,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GameEngine", "GameEngine\Ga
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Playback", "..\playback\Playback\Playback.csproj", "{FF22960A-6BD9-4C80-A029-9A39FB8F64C4}"
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{14C1A4DC-3F6C-4A3E-8CD0-2E595C99F1C6}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Client", "Client\Client.csproj", "{F8CD6F8B-0EEE-43B6-BEDF-240E1DBB013D}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -57,6 +61,10 @@ Global
{FF22960A-6BD9-4C80-A029-9A39FB8F64C4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FF22960A-6BD9-4C80-A029-9A39FB8F64C4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FF22960A-6BD9-4C80-A029-9A39FB8F64C4}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F8CD6F8B-0EEE-43B6-BEDF-240E1DBB013D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F8CD6F8B-0EEE-43B6-BEDF-240E1DBB013D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F8CD6F8B-0EEE-43B6-BEDF-240E1DBB013D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F8CD6F8B-0EEE-43B6-BEDF-240E1DBB013D}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE