display the progress of classroom/chest/doortags/0.1.0
| @@ -170,7 +170,7 @@ message MessageOfObj | |||||
| message MessageOfAll | message MessageOfAll | ||||
| { | { | ||||
| int32 game_time = 1; | int32 game_time = 1; | ||||
| int32 subject_left = 2; // 剩余的科目数 | |||||
| int32 subject_finished = 2; // 完成的科目数 | |||||
| int32 student_graduated = 3; // 已经毕业的学生数 | int32 student_graduated = 3; // 已经毕业的学生数 | ||||
| int32 student_quited = 4; // 已经退学的学生数 | int32 student_quited = 4; // 已经退学的学生数 | ||||
| int32 student_score = 5; | int32 student_score = 5; | ||||
| @@ -1,6 +1,6 @@ | |||||
| using System.Windows; | using System.Windows; | ||||
| [assembly:ThemeInfo( | |||||
| [assembly: ThemeInfo( | |||||
| ResourceDictionaryLocation.None, // where theme specific resource dictionaries are located | ResourceDictionaryLocation.None, // where theme specific resource dictionaries are located | ||||
| //(used if a resource is not found in the page, | //(used if a resource is not found in the page, | ||||
| // or application resource dictionaries) | // or application resource dictionaries) | ||||
| @@ -22,6 +22,7 @@ | |||||
| <ItemGroup> | <ItemGroup> | ||||
| <ProjectReference Include="..\..\dependency\proto\Protos.csproj" /> | <ProjectReference Include="..\..\dependency\proto\Protos.csproj" /> | ||||
| <ProjectReference Include="..\..\playback\Playback\Playback.csproj" /> | <ProjectReference Include="..\..\playback\Playback\Playback.csproj" /> | ||||
| <ProjectReference Include="..\Preparation\Preparation.csproj" /> | |||||
| </ItemGroup> | </ItemGroup> | ||||
| <ItemGroup> | <ItemGroup> | ||||
| @@ -18,9 +18,9 @@ using Grpc.Core; | |||||
| using Protobuf; | using Protobuf; | ||||
| using Playback; | using Playback; | ||||
| using CommandLine; | using CommandLine; | ||||
| using Preparation.Utility; | |||||
| // 目前MainWindow还未复现的功能: | // 目前MainWindow还未复现的功能: | ||||
| // private void ReactToCommandline(), | |||||
| // private void ClickToSetMode(object sender, RoutedEventArgs e) | // private void ClickToSetMode(object sender, RoutedEventArgs e) | ||||
| // private void Bonus() | // private void Bonus() | ||||
| @@ -49,7 +49,7 @@ namespace Client | |||||
| listOfProp = new List<MessageOfProp>(); | listOfProp = new List<MessageOfProp>(); | ||||
| listOfHuman = new List<MessageOfStudent>(); | listOfHuman = new List<MessageOfStudent>(); | ||||
| listOfButcher = new List<MessageOfTricker>(); | listOfButcher = new List<MessageOfTricker>(); | ||||
| listOfBullet=new List<MessageOfBullet>(); | |||||
| listOfBullet = new List<MessageOfBullet>(); | |||||
| listOfBombedBullet = new List<MessageOfBombedBullet>(); | listOfBombedBullet = new List<MessageOfBombedBullet>(); | ||||
| listOfAll = new List<MessageOfAll>(); | listOfAll = new List<MessageOfAll>(); | ||||
| listOfChest = new List<MessageOfChest>(); | listOfChest = new List<MessageOfChest>(); | ||||
| @@ -57,17 +57,9 @@ namespace Client | |||||
| listOfDoor = new List<MessageOfDoor>(); | listOfDoor = new List<MessageOfDoor>(); | ||||
| listOfGate = new List<MessageOfGate>(); | listOfGate = new List<MessageOfGate>(); | ||||
| WindowStartupLocation = WindowStartupLocation.CenterScreen; | 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(); | ReactToCommandline(); | ||||
| } | } | ||||
| private void SetStatusBar() | private void SetStatusBar() | ||||
| { | { | ||||
| StatusBarsOfSurvivor = new StatusBarOfSurvivor[4]; | StatusBarsOfSurvivor = new StatusBarOfSurvivor[4]; | ||||
| @@ -103,6 +95,7 @@ namespace Client | |||||
| mapFlag = true; | mapFlag = true; | ||||
| } | } | ||||
| } | } | ||||
| private void ReactToCommandline() | private void ReactToCommandline() | ||||
| { | { | ||||
| string[] args = Environment.GetCommandLineArgs(); | string[] args = Environment.GetCommandLineArgs(); | ||||
| @@ -115,12 +108,12 @@ namespace Client | |||||
| { options = o; }); | { options = o; }); | ||||
| if (options == null || options.cl == false) | if (options == null || options.cl == false) | ||||
| { | { | ||||
| OnReceive(); | |||||
| OnReceive(); | |||||
| } | } | ||||
| else | else | ||||
| { | { | ||||
| //if (options.PlaybackFile == DefaultArgumentOptions.FileName) | |||||
| //{ | |||||
| if (options.PlaybackFile == DefaultArgumentOptions.FileName) | |||||
| { | |||||
| try | try | ||||
| { | { | ||||
| string[] comInfo = new string[5]; | string[] comInfo = new string[5]; | ||||
| @@ -136,18 +129,19 @@ namespace Client | |||||
| { | { | ||||
| OnReceive(); | OnReceive(); | ||||
| } | } | ||||
| //} | |||||
| //else | |||||
| //{ | |||||
| // Playback(options.PlaybackFile, options.PlaybackSpeed); | |||||
| //} | |||||
| } | |||||
| else | |||||
| { | |||||
| Playback(options.PlaybackFile, options.PlaybackSpeed); | |||||
| } | |||||
| } | } | ||||
| } | } | ||||
| private void Playback(string fileName, double pbSpeed = 2.0) | private void Playback(string fileName, double pbSpeed = 2.0) | ||||
| { | { | ||||
| var pbClient = new PlaybackClient(fileName, pbSpeed); | var pbClient = new PlaybackClient(fileName, pbSpeed); | ||||
| int[,]? map; | 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; | isClientStocked = false; | ||||
| isPlaybackMode = true; | isPlaybackMode = true; | ||||
| @@ -175,8 +169,6 @@ namespace Client | |||||
| connect += comInfo[1]; | connect += comInfo[1]; | ||||
| Channel channel = new Channel(connect, ChannelCredentials.Insecure); | Channel channel = new Channel(connect, ChannelCredentials.Insecure); | ||||
| client = new AvailableService.AvailableServiceClient(channel); | client = new AvailableService.AvailableServiceClient(channel); | ||||
| // 没判断连没连上 | |||||
| PlayerMsg playerMsg = new PlayerMsg(); | PlayerMsg playerMsg = new PlayerMsg(); | ||||
| playerMsg.PlayerId = playerID; | playerMsg.PlayerId = playerID; | ||||
| playerType = Convert.ToInt64(comInfo[3]) switch | playerType = Convert.ToInt64(comInfo[3]) switch | ||||
| @@ -185,7 +177,7 @@ namespace Client | |||||
| 1 => PlayerType.StudentPlayer, | 1 => PlayerType.StudentPlayer, | ||||
| 2 => PlayerType.TrickerPlayer, | 2 => PlayerType.TrickerPlayer, | ||||
| }; | }; | ||||
| playerMsg.PlayerType=playerType; | |||||
| playerMsg.PlayerType = playerType; | |||||
| if (Convert.ToInt64(comInfo[3]) == 1) | if (Convert.ToInt64(comInfo[3]) == 1) | ||||
| { | { | ||||
| humanOrButcher = true; | humanOrButcher = true; | ||||
| @@ -321,7 +313,7 @@ namespace Client | |||||
| case 10: | case 10: | ||||
| foreach (var obj in listOfAll) | foreach (var obj in listOfAll) | ||||
| { | { | ||||
| if(obj.HiddenGateRefreshed) | |||||
| if (obj.SubjectFinished >= Preparation.Utility.GameData.numOfGeneratorRequiredForEmergencyExit) | |||||
| { | { | ||||
| mapPatches[i, j].Fill = Brushes.LightSalmon; | mapPatches[i, j].Fill = Brushes.LightSalmon; | ||||
| mapPatches[i, j].Stroke = Brushes.LightSalmon; | mapPatches[i, j].Stroke = Brushes.LightSalmon; | ||||
| @@ -408,6 +400,7 @@ namespace Client | |||||
| switch (obj.MessageOfObjCase) | switch (obj.MessageOfObjCase) | ||||
| { | { | ||||
| case MessageOfObj.MessageOfObjOneofCase.StudentMessage: | case MessageOfObj.MessageOfObjOneofCase.StudentMessage: | ||||
| if (humanOrButcher && obj.StudentMessage.PlayerId == playerID) | if (humanOrButcher && obj.StudentMessage.PlayerId == playerID) | ||||
| { | { | ||||
| human = obj.StudentMessage; | human = obj.StudentMessage; | ||||
| @@ -542,7 +535,7 @@ namespace Client | |||||
| { | { | ||||
| ErrorDisplayer error = new("Error: " + ex.ToString()); | ErrorDisplayer error = new("Error: " + ex.ToString()); | ||||
| error.Show(); | error.Show(); | ||||
| } | |||||
| } | |||||
| } | } | ||||
| private int GetX(int x) | private int GetX(int x) | ||||
| @@ -553,6 +546,7 @@ namespace Client | |||||
| { | { | ||||
| return y / 1000 + 1; | return y / 1000 + 1; | ||||
| } | } | ||||
| //待修改 | //待修改 | ||||
| private bool CanSee(MessageOfStudent msg) | private bool CanSee(MessageOfStudent msg) | ||||
| { | { | ||||
| @@ -565,9 +559,9 @@ namespace Client | |||||
| if (human.Guid == msg.Guid) // 自己能看见自己 | if (human.Guid == msg.Guid) // 自己能看见自己 | ||||
| return true; | 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; | return false; | ||||
| if (msg.Place == PlaceType.Land || msg.Place == PlaceType.Classroom) | |||||
| if (msg.Place == Protobuf.PlaceType.Land || msg.Place == Protobuf.PlaceType.Classroom) | |||||
| return true; | return true; | ||||
| if (humanOrButcher && human != null) | if (humanOrButcher && human != null) | ||||
| { | { | ||||
| @@ -591,9 +585,9 @@ namespace Client | |||||
| if (butcher.Guid == msg.Guid) // 自己能看见自己 | if (butcher.Guid == msg.Guid) // 自己能看见自己 | ||||
| return true; | 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; | return false; | ||||
| if (msg.Place == PlaceType.Land || msg.Place == PlaceType.Classroom) | |||||
| if (msg.Place == Protobuf.PlaceType.Land || msg.Place == Protobuf.PlaceType.Classroom) | |||||
| return true; | return true; | ||||
| if (humanOrButcher && human != null) | if (humanOrButcher && human != null) | ||||
| { | { | ||||
| @@ -610,7 +604,7 @@ namespace Client | |||||
| private bool CanSee(MessageOfProp msg) | private bool CanSee(MessageOfProp msg) | ||||
| { | { | ||||
| if (msg.Place == PlaceType.Land) | |||||
| if (msg.Place == Protobuf.PlaceType.Land) | |||||
| return true; | return true; | ||||
| if (humanOrButcher && human != null) | if (humanOrButcher && human != null) | ||||
| { | { | ||||
| @@ -627,7 +621,7 @@ namespace Client | |||||
| private bool CanSee(MessageOfBullet msg) | private bool CanSee(MessageOfBullet msg) | ||||
| { | { | ||||
| if (msg.Place == PlaceType.Land) | |||||
| if (msg.Place == Protobuf.PlaceType.Land) | |||||
| return true; | return true; | ||||
| if (humanOrButcher && human != null) | if (humanOrButcher && human != null) | ||||
| { | { | ||||
| @@ -688,7 +682,7 @@ namespace Client | |||||
| { | { | ||||
| foreach (var data in listOfAll) | foreach (var data in listOfAll) | ||||
| { | { | ||||
| StatusBarsOfCircumstance.SetValue(data); | |||||
| StatusBarsOfCircumstance.SetValue(data, gateOpened); | |||||
| } | } | ||||
| if (!hasDrawed && mapFlag) | if (!hasDrawed && mapFlag) | ||||
| DrawMap(); | DrawMap(); | ||||
| @@ -732,25 +726,25 @@ namespace Client | |||||
| { | { | ||||
| switch (data.Type) | switch (data.Type) | ||||
| { | { | ||||
| case PropType.Key3: | |||||
| case Protobuf.PropType.Key3: | |||||
| DrawProp(data, "🔑"); | DrawProp(data, "🔑"); | ||||
| break; | break; | ||||
| case PropType.Key5: | |||||
| case Protobuf.PropType.Key5: | |||||
| DrawProp(data, "🔑"); | DrawProp(data, "🔑"); | ||||
| break; | break; | ||||
| case PropType.Key6: | |||||
| case Protobuf.PropType.Key6: | |||||
| DrawProp(data, "🔑"); | DrawProp(data, "🔑"); | ||||
| break; | break; | ||||
| case PropType.AddSpeed: | |||||
| case Protobuf.PropType.AddSpeed: | |||||
| DrawProp(data, "⛸"); | DrawProp(data, "⛸"); | ||||
| break; | break; | ||||
| case PropType.AddHpOrAp: | |||||
| case Protobuf.PropType.AddHpOrAp: | |||||
| DrawProp(data, "♥"); | DrawProp(data, "♥"); | ||||
| break; | break; | ||||
| case PropType.AddLifeOrAp: | |||||
| case Protobuf.PropType.AddLifeOrAp: | |||||
| DrawProp(data, "🏅"); | DrawProp(data, "🏅"); | ||||
| break; | break; | ||||
| case PropType.ShieldOrSpear: | |||||
| case Protobuf.PropType.ShieldOrSpear: | |||||
| DrawProp(data, "🛡"); | DrawProp(data, "🛡"); | ||||
| break; | break; | ||||
| default: | default: | ||||
| @@ -779,7 +773,7 @@ namespace Client | |||||
| { | { | ||||
| switch (data.Type) | switch (data.Type) | ||||
| { | { | ||||
| case BulletType.FastBullet: | |||||
| case Protobuf.BulletType.FastBullet: | |||||
| { | { | ||||
| Ellipse icon = new(); | Ellipse icon = new(); | ||||
| double bombRange = data.BombRange / 1000; | double bombRange = data.BombRange / 1000; | ||||
| @@ -792,7 +786,7 @@ namespace Client | |||||
| UpperLayerOfMap.Children.Add(icon); | UpperLayerOfMap.Children.Add(icon); | ||||
| break; | break; | ||||
| } | } | ||||
| case BulletType.AtomBomb: | |||||
| case Protobuf.BulletType.AtomBomb: | |||||
| { | { | ||||
| Ellipse icon = new Ellipse(); | Ellipse icon = new Ellipse(); | ||||
| double bombRange = data.BombRange / 1000; | double bombRange = data.BombRange / 1000; | ||||
| @@ -805,7 +799,7 @@ namespace Client | |||||
| UpperLayerOfMap.Children.Add(icon); | UpperLayerOfMap.Children.Add(icon); | ||||
| break; | break; | ||||
| } | } | ||||
| case BulletType.OrdinaryBullet: | |||||
| case Protobuf.BulletType.OrdinaryBullet: | |||||
| { | { | ||||
| Ellipse icon = new Ellipse(); | Ellipse icon = new Ellipse(); | ||||
| double bombRange = data.BombRange / 1000; | double bombRange = data.BombRange / 1000; | ||||
| @@ -818,7 +812,7 @@ namespace Client | |||||
| UpperLayerOfMap.Children.Add(icon); | UpperLayerOfMap.Children.Add(icon); | ||||
| break; | break; | ||||
| } | } | ||||
| /*case BulletType.LineBullet: | |||||
| /*case Protobuf.BulletType.LineBullet: | |||||
| { | { | ||||
| double bombRange = data.BombRange / 1000; | 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); | 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() | TextBox icon = new() | ||||
| { | { | ||||
| FontSize = 10 * UpperLayerOfMap.ActualHeight / 650, | |||||
| FontSize = 8 * UpperLayerOfMap.ActualHeight / 650, | |||||
| Width = unitWidth, | Width = unitWidth, | ||||
| Height = unitHeight, | Height = unitHeight, | ||||
| Text = Convert.ToString(data.Progress), | |||||
| Text = Convert.ToString((int)(100.0 * data.Progress / Preparation.Utility.GameData.degreeOfFixedGenerator)), | |||||
| HorizontalAlignment = HorizontalAlignment.Left, | HorizontalAlignment = HorizontalAlignment.Left, | ||||
| VerticalAlignment = VerticalAlignment.Top, | 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(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, | Background = Brushes.Transparent, | ||||
| BorderBrush = Brushes.Transparent, | BorderBrush = Brushes.Transparent, | ||||
| IsReadOnly = true | IsReadOnly = true | ||||
| }; | }; | ||||
| UpperLayerOfMap.Children.Add(icon); | UpperLayerOfMap.Children.Add(icon); | ||||
| } | } | ||||
| foreach(var data in listOfChest) | |||||
| foreach (var data in listOfChest) | |||||
| { | { | ||||
| TextBox icon = new() | TextBox icon = new() | ||||
| { | { | ||||
| FontSize = 10 * UpperLayerOfMap.ActualHeight / 650, | |||||
| FontSize = 8 * UpperLayerOfMap.ActualHeight / 650, | |||||
| Width = unitWidth, | Width = unitWidth, | ||||
| Height = unitHeight, | Height = unitHeight, | ||||
| Text = Convert.ToString(data.Progress), | |||||
| Text = Convert.ToString((int)(100.0 * data.Progress / Preparation.Utility.GameData.degreeOfOpenedChest)), | |||||
| HorizontalAlignment = HorizontalAlignment.Left, | HorizontalAlignment = HorizontalAlignment.Left, | ||||
| VerticalAlignment = VerticalAlignment.Top, | 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(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, | Background = Brushes.Transparent, | ||||
| BorderBrush = Brushes.Transparent, | BorderBrush = Brushes.Transparent, | ||||
| IsReadOnly = true | IsReadOnly = true | ||||
| }; | }; | ||||
| UpperLayerOfMap.Children.Add(icon); | 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() | TextBox icon = new() | ||||
| { | { | ||||
| FontSize = 10 * UpperLayerOfMap.ActualHeight / 650, | |||||
| FontSize = 8 * UpperLayerOfMap.ActualHeight / 650, | |||||
| Width = unitWidth, | Width = unitWidth, | ||||
| Height = unitHeight, | Height = unitHeight, | ||||
| Text = Convert.ToString(data.Progress), | |||||
| Text = Convert.ToString(deg), | |||||
| HorizontalAlignment = HorizontalAlignment.Left, | HorizontalAlignment = HorizontalAlignment.Left, | ||||
| VerticalAlignment = VerticalAlignment.Top, | 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(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, | Background = Brushes.Transparent, | ||||
| BorderBrush = Brushes.Transparent, | BorderBrush = Brushes.Transparent, | ||||
| IsReadOnly = true | IsReadOnly = true | ||||
| }; | }; | ||||
| UpperLayerOfMap.Children.Add(icon); | UpperLayerOfMap.Children.Add(icon); | ||||
| } | } | ||||
| foreach(var data in listOfDoor) | |||||
| foreach (var data in listOfDoor) | |||||
| { | { | ||||
| TextBox icon = new() | TextBox icon = new() | ||||
| { | { | ||||
| FontSize = 10 * UpperLayerOfMap.ActualHeight / 650, | |||||
| FontSize = 8 * UpperLayerOfMap.ActualHeight / 650, | |||||
| Width = unitWidth, | Width = unitWidth, | ||||
| Height = unitHeight, | Height = unitHeight, | ||||
| HorizontalAlignment = HorizontalAlignment.Left, | HorizontalAlignment = HorizontalAlignment.Left, | ||||
| VerticalAlignment = VerticalAlignment.Top, | 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(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, | Background = Brushes.Transparent, | ||||
| BorderBrush = Brushes.Transparent, | BorderBrush = Brushes.Transparent, | ||||
| IsReadOnly = true | IsReadOnly = true | ||||
| @@ -904,7 +899,7 @@ namespace Client | |||||
| else | else | ||||
| { | { | ||||
| icon.Text = Convert.ToString("闭"); | icon.Text = Convert.ToString("闭"); | ||||
| } | |||||
| } | |||||
| UpperLayerOfMap.Children.Add(icon); | UpperLayerOfMap.Children.Add(icon); | ||||
| } | } | ||||
| //} | //} | ||||
| @@ -927,176 +922,176 @@ namespace Client | |||||
| { | { | ||||
| if (!isPlaybackMode) | 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 (!isPlaybackMode) | ||||
| { | { | ||||
| if (humanOrButcher&&human != null) | |||||
| if (humanOrButcher && human != null) | |||||
| { | { | ||||
| AttackMsg msgJ = new() | AttackMsg msgJ = new() | ||||
| { | { | ||||
| @@ -1182,7 +1177,7 @@ namespace Client | |||||
| { | { | ||||
| _ = Process.Start("C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe", "https://eesast.com"); | _ = 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()); | // ErrorDisplayer error = new("发生错误。以下是系统报告\n" + exc.ToString()); | ||||
| // error.Show(); | // error.Show(); | ||||
| @@ -1231,7 +1226,7 @@ namespace Client | |||||
| { | { | ||||
| throw new Exception("敬请期待"); | throw new Exception("敬请期待"); | ||||
| } | } | ||||
| catch (Exception exc) | |||||
| catch (Exception) | |||||
| { | { | ||||
| // ErrorDisplayer error = new(exc.Message); | // ErrorDisplayer error = new(exc.Message); | ||||
| // error.Show(); | // error.Show(); | ||||
| @@ -1329,5 +1324,7 @@ namespace Client | |||||
| private string[] comInfo = new string[5]; | private string[] comInfo = new string[5]; | ||||
| ArgumentOptions? options = null; | ArgumentOptions? options = null; | ||||
| bool gateOpened = false; | |||||
| } | } | ||||
| } | } | ||||
| @@ -36,8 +36,8 @@ namespace Client | |||||
| } | } | ||||
| } | } | ||||
| public int[,]? ReadDataFromFile(List<MessageOfProp> listOfProp,List<MessageOfStudent> listOfHuman,List<MessageOfTricker> listOfButcher,List<MessageOfBullet> listOfBullet, | |||||
| List<MessageOfBombedBullet> listOfBombedBullet,List<MessageOfAll> listOfAll,List<MessageOfChest> listOfChest,List<MessageOfClassroom> listOfClassroom, | |||||
| public int[,]? ReadDataFromFile(List<MessageOfProp> listOfProp, List<MessageOfStudent> listOfHuman, List<MessageOfTricker> listOfButcher, List<MessageOfBullet> listOfBullet, | |||||
| List<MessageOfBombedBullet> listOfBombedBullet, List<MessageOfAll> listOfAll, List<MessageOfChest> listOfChest, List<MessageOfClassroom> listOfClassroom, | |||||
| List<MessageOfDoor> listOfDoor, List<MessageOfGate> listOfGate, object dataLock) | List<MessageOfDoor> listOfDoor, List<MessageOfGate> listOfGate, object dataLock) | ||||
| { | { | ||||
| if (Reader == null) | if (Reader == null) | ||||
| @@ -2,7 +2,7 @@ | |||||
| "profiles": { | "profiles": { | ||||
| "Client": { | "Client": { | ||||
| "commandName": "Project", | "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" | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -17,9 +17,9 @@ | |||||
| <ColumnDefinition Width="20*"/> | <ColumnDefinition Width="20*"/> | ||||
| <ColumnDefinition Width="62*"/> | <ColumnDefinition Width="62*"/> | ||||
| </Grid.ColumnDefinitions> | </Grid.ColumnDefinitions> | ||||
| <TextBox Name="time" IsReadOnly="True" BorderBrush="LightGray" TextWrapping="Wrap" Text="Time⏳:" Grid.Row="0" Grid.ColumnSpan="2" FontSize="14"/> | |||||
| <TextBox Name="status" IsReadOnly="True" BorderBrush="LightGray" TextWrapping="Wrap" Text="📱:
🚪:
🆘:
🏃:
⚰️:" Grid.Row="1" Grid.ColumnSpan="2" FontSize="13"/> | |||||
| <TextBox Name="scoresOfStudents" IsReadOnly="True" BorderBrush="LightGray" TextWrapping="Wrap" Text="Scores of Students:" Grid.Row="2" Grid.ColumnSpan="2" FontSize="12"/> | |||||
| <TextBox Name="scoresOfTrickers" IsReadOnly="True" BorderBrush="LightGray" TextWrapping="Wrap" Text="Scores of Tricker:" Grid.Row="3" Grid.ColumnSpan="2" FontSize="12"/> | |||||
| <TextBox Name="time" IsReadOnly="True" BorderBrush="LightGray" TextWrapping="Wrap" Text="Time⏳: " Grid.Row="0" Grid.ColumnSpan="2" FontSize="14"/> | |||||
| <TextBox Name="status" IsReadOnly="True" BorderBrush="LightGray" TextWrapping="Wrap" Text="📱: 
🚪: 
🆘: 
🏃: 
⚰️: " Grid.Row="1" Grid.ColumnSpan="2" FontSize="13"/> | |||||
| <TextBox Name="scoresOfStudents" IsReadOnly="True" BorderBrush="LightGray" TextWrapping="Wrap" Text="Scores of Students: " Grid.Row="2" Grid.ColumnSpan="2" FontSize="12"/> | |||||
| <TextBox Name="scoresOfTrickers" IsReadOnly="True" BorderBrush="LightGray" TextWrapping="Wrap" Text="Scores of Tricker: " Grid.Row="3" Grid.ColumnSpan="2" FontSize="12"/> | |||||
| </Grid> | </Grid> | ||||
| </UserControl> | </UserControl> | ||||
| @@ -36,11 +36,12 @@ namespace Client | |||||
| scoresOfStudents.FontSize = scoresOfTrickers.FontSize = fontsize; | 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); | 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🆘: "; | status.Text += "Open\n🆘: "; | ||||
| } | } | ||||
| @@ -48,9 +49,17 @@ namespace Client | |||||
| { | { | ||||
| status.Text += "Close\n🆘: "; | 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🏃: "; | status.Text += "Open\n🏃: "; | ||||
| } | } | ||||
| @@ -63,10 +72,10 @@ namespace Client | |||||
| { | { | ||||
| status.Text += "Unrefreshed\n🏃: "; | status.Text += "Unrefreshed\n🏃: "; | ||||
| } | } | ||||
| status.Text += Convert.ToString(obj.StudentGraduated)+ "\n⚰️: "; | |||||
| status.Text += Convert.ToString(obj.StudentGraduated) + "\n⚰️: "; | |||||
| status.Text += Convert.ToString(obj.StudentQuited); | 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); | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -22,10 +22,10 @@ | |||||
| <ColumnDefinition Width="20*"/> | <ColumnDefinition Width="20*"/> | ||||
| <ColumnDefinition Width="21*"/> | <ColumnDefinition Width="21*"/> | ||||
| </Grid.ColumnDefinitions> | </Grid.ColumnDefinitions> | ||||
| <TextBox Name="serial" IsReadOnly="True" BorderBrush="LightGray" TextWrapping="Wrap" Text="👥null👻null
职业:" Grid.Row="0" Grid.ColumnSpan="4" FontSize="12"/> | |||||
| <TextBox Name="status" IsReadOnly="True" BorderBrush="LightGray" TextWrapping="Wrap" Text="🏃🏿:" Grid.Row="1" Grid.ColumnSpan="2" /> | |||||
| <TextBox Name="serial" IsReadOnly="True" BorderBrush="LightGray" TextWrapping="Wrap" Text="👥null👻null
职业: " Grid.Row="0" Grid.ColumnSpan="4" FontSize="12"/> | |||||
| <TextBox Name="status" IsReadOnly="True" BorderBrush="LightGray" TextWrapping="Wrap" Text="🏃🏿: " Grid.Row="1" Grid.ColumnSpan="2" /> | |||||
| <TextBox Name="state" IsReadOnly="True" BorderBrush="LightGray" TextWrapping="Wrap" Text="" Grid.Row="1" Grid.Column="2" Grid.ColumnSpan="2" /> | <TextBox Name="state" IsReadOnly="True" BorderBrush="LightGray" TextWrapping="Wrap" Text="" Grid.Row="1" Grid.Column="2" Grid.ColumnSpan="2" /> | ||||
| <TextBox Name="scores" IsReadOnly="True" BorderBrush="LightGray" TextWrapping="Wrap" Text="Scores:" Grid.Row="2" Grid.ColumnSpan="4"/> | |||||
| <TextBox Name="scores" IsReadOnly="True" BorderBrush="LightGray" TextWrapping="Wrap" Text="Scores: " Grid.Row="2" Grid.ColumnSpan="4"/> | |||||
| <TextBox Name="activeSkill0" IsReadOnly="True" BorderBrush="LightGray" TextWrapping="Wrap" Text="" Grid.Row="3" Grid.ColumnSpan="2"/> | <TextBox Name="activeSkill0" IsReadOnly="True" BorderBrush="LightGray" TextWrapping="Wrap" Text="" Grid.Row="3" Grid.ColumnSpan="2"/> | ||||
| <ProgressBar Name="skillprogress0" Background="White" Grid.Row="3" Grid.Column="2" Grid.ColumnSpan="2"/> | <ProgressBar Name="skillprogress0" Background="White" Grid.Row="3" Grid.Column="2" Grid.ColumnSpan="2"/> | ||||
| @@ -36,7 +36,7 @@ namespace Client | |||||
| } | } | ||||
| public void SetFontSize(double fontsize) | 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) | private void SetStaticValue(MessageOfTricker obj) | ||||
| @@ -45,23 +45,23 @@ namespace Client | |||||
| { | { | ||||
| case TrickerType.Assassin: | case TrickerType.Assassin: | ||||
| coolTime0 = coolTime1 = coolTime2 = 10000; | 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; | break; | ||||
| case TrickerType._2: | case TrickerType._2: | ||||
| coolTime0 = coolTime1 = coolTime2 = 20000; | 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; | break; | ||||
| case TrickerType._3: | case TrickerType._3: | ||||
| coolTime0 = coolTime1 = coolTime2 = 30000; | 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; | break; | ||||
| case TrickerType._4: | case TrickerType._4: | ||||
| coolTime0 = coolTime1 = coolTime2 = 40000; | 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; | break; | ||||
| case TrickerType.NullTrickerType: | case TrickerType.NullTrickerType: | ||||
| coolTime0 = coolTime1 = coolTime2 = -1; | 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; | break; | ||||
| } | } | ||||
| activeSkill0.Text = "Skill0"; | activeSkill0.Text = "Skill0"; | ||||
| @@ -71,7 +71,7 @@ namespace Client | |||||
| } | } | ||||
| private void SetDynamicValue(MessageOfTricker obj) | private void SetDynamicValue(MessageOfTricker obj) | ||||
| { | { | ||||
| status.Text = "🏃🏿:"+Convert.ToString(obj.Speed); | |||||
| status.Text = "🏃🏿: " + Convert.ToString(obj.Speed); | |||||
| switch (obj.PlayerState) | switch (obj.PlayerState) | ||||
| { | { | ||||
| case PlayerState.Idle: | case PlayerState.Idle: | ||||
| @@ -114,10 +114,10 @@ namespace Client | |||||
| state.Text = "Locking"; | state.Text = "Locking"; | ||||
| break; | break; | ||||
| case PlayerState.Rummaging: | case PlayerState.Rummaging: | ||||
| state.Text ="Rummaging"; | |||||
| state.Text = "Rummaging"; | |||||
| break; | break; | ||||
| case PlayerState.Climbing: | case PlayerState.Climbing: | ||||
| state.Text ="Climbing"; | |||||
| state.Text = "Climbing"; | |||||
| break; | break; | ||||
| case PlayerState.OpeningAChest: | case PlayerState.OpeningAChest: | ||||
| state.Text = "OpeningAChest"; | state.Text = "OpeningAChest"; | ||||
| @@ -131,7 +131,7 @@ namespace Client | |||||
| default: | default: | ||||
| break; | break; | ||||
| } | } | ||||
| scores.Text = "Scores:" + Convert.ToString(obj.Score); | |||||
| scores.Text = "Scores: " + Convert.ToString(obj.Score); | |||||
| if (obj.TimeUntilSkillAvailable[0] >= 0) | if (obj.TimeUntilSkillAvailable[0] >= 0) | ||||
| skillprogress0.Value = 100 - obj.TimeUntilSkillAvailable[0] / coolTime0 * 100; | skillprogress0.Value = 100 - obj.TimeUntilSkillAvailable[0] / coolTime0 * 100; | ||||
| if (obj.TimeUntilSkillAvailable[1] >= 0) | if (obj.TimeUntilSkillAvailable[1] >= 0) | ||||
| @@ -153,25 +153,25 @@ namespace Client | |||||
| case 0: | case 0: | ||||
| switch (icon) | switch (icon) | ||||
| { | { | ||||
| case PropType.Key3: | |||||
| case Protobuf.PropType.Key3: | |||||
| prop0.Text = "🔑"; | prop0.Text = "🔑"; | ||||
| break; | break; | ||||
| case PropType.Key5: | |||||
| case Protobuf.PropType.Key5: | |||||
| prop0.Text = "🔑"; | prop0.Text = "🔑"; | ||||
| break; | break; | ||||
| case PropType.Key6: | |||||
| case Protobuf.PropType.Key6: | |||||
| prop0.Text = "🔑"; | prop0.Text = "🔑"; | ||||
| break; | break; | ||||
| case PropType.AddSpeed: | |||||
| case Protobuf.PropType.AddSpeed: | |||||
| prop0.Text = "⛸"; | prop0.Text = "⛸"; | ||||
| break; | break; | ||||
| case PropType.AddLifeOrAp: | |||||
| case Protobuf.PropType.AddLifeOrAp: | |||||
| prop0.Text = "🏅"; | prop0.Text = "🏅"; | ||||
| break; | break; | ||||
| case PropType.AddHpOrAp: | |||||
| case Protobuf.PropType.AddHpOrAp: | |||||
| prop0.Text = "♥"; | prop0.Text = "♥"; | ||||
| break; | break; | ||||
| case PropType.ShieldOrSpear: | |||||
| case Protobuf.PropType.ShieldOrSpear: | |||||
| prop0.Text = "🛡"; | prop0.Text = "🛡"; | ||||
| break; | break; | ||||
| default: | default: | ||||
| @@ -183,25 +183,25 @@ namespace Client | |||||
| case 1: | case 1: | ||||
| switch (icon) | switch (icon) | ||||
| { | { | ||||
| case PropType.Key3: | |||||
| case Protobuf.PropType.Key3: | |||||
| prop1.Text = "🔑"; | prop1.Text = "🔑"; | ||||
| break; | break; | ||||
| case PropType.Key5: | |||||
| case Protobuf.PropType.Key5: | |||||
| prop1.Text = "🔑"; | prop1.Text = "🔑"; | ||||
| break; | break; | ||||
| case PropType.Key6: | |||||
| case Protobuf.PropType.Key6: | |||||
| prop1.Text = "🔑"; | prop1.Text = "🔑"; | ||||
| break; | break; | ||||
| case PropType.AddSpeed: | |||||
| case Protobuf.PropType.AddSpeed: | |||||
| prop1.Text = "⛸"; | prop1.Text = "⛸"; | ||||
| break; | break; | ||||
| case PropType.AddLifeOrAp: | |||||
| case Protobuf.PropType.AddLifeOrAp: | |||||
| prop1.Text = "🏅"; | prop1.Text = "🏅"; | ||||
| break; | break; | ||||
| case PropType.AddHpOrAp: | |||||
| case Protobuf.PropType.AddHpOrAp: | |||||
| prop1.Text = "♥"; | prop1.Text = "♥"; | ||||
| break; | break; | ||||
| case PropType.ShieldOrSpear: | |||||
| case Protobuf.PropType.ShieldOrSpear: | |||||
| prop1.Text = "🛡"; | prop1.Text = "🛡"; | ||||
| break; | break; | ||||
| default: | default: | ||||
| @@ -213,25 +213,25 @@ namespace Client | |||||
| case 2: | case 2: | ||||
| switch (icon) | switch (icon) | ||||
| { | { | ||||
| case PropType.Key3: | |||||
| case Protobuf.PropType.Key3: | |||||
| prop2.Text = "🔑"; | prop2.Text = "🔑"; | ||||
| break; | break; | ||||
| case PropType.Key5: | |||||
| case Protobuf.PropType.Key5: | |||||
| prop2.Text = "🔑"; | prop2.Text = "🔑"; | ||||
| break; | break; | ||||
| case PropType.Key6: | |||||
| case Protobuf.PropType.Key6: | |||||
| prop2.Text = "🔑"; | prop2.Text = "🔑"; | ||||
| break; | break; | ||||
| case PropType.AddSpeed: | |||||
| case Protobuf.PropType.AddSpeed: | |||||
| prop2.Text = "⛸"; | prop2.Text = "⛸"; | ||||
| break; | break; | ||||
| case PropType.AddLifeOrAp: | |||||
| case Protobuf.PropType.AddLifeOrAp: | |||||
| prop2.Text = "🏅"; | prop2.Text = "🏅"; | ||||
| break; | break; | ||||
| case PropType.AddHpOrAp: | |||||
| case Protobuf.PropType.AddHpOrAp: | |||||
| prop2.Text = "♥"; | prop2.Text = "♥"; | ||||
| break; | break; | ||||
| case PropType.ShieldOrSpear: | |||||
| case Protobuf.PropType.ShieldOrSpear: | |||||
| prop2.Text = "🛡"; | prop2.Text = "🛡"; | ||||
| break; | break; | ||||
| default: | default: | ||||
| @@ -243,25 +243,25 @@ namespace Client | |||||
| case 3: | case 3: | ||||
| switch (icon) | switch (icon) | ||||
| { | { | ||||
| case PropType.Key3: | |||||
| case Protobuf.PropType.Key3: | |||||
| prop3.Text = "🔑"; | prop3.Text = "🔑"; | ||||
| break; | break; | ||||
| case PropType.Key5: | |||||
| case Protobuf.PropType.Key5: | |||||
| prop3.Text = "🔑"; | prop3.Text = "🔑"; | ||||
| break; | break; | ||||
| case PropType.Key6: | |||||
| case Protobuf.PropType.Key6: | |||||
| prop3.Text = "🔑"; | prop3.Text = "🔑"; | ||||
| break; | break; | ||||
| case PropType.AddSpeed: | |||||
| case Protobuf.PropType.AddSpeed: | |||||
| prop3.Text = "⛸"; | prop3.Text = "⛸"; | ||||
| break; | break; | ||||
| case PropType.AddLifeOrAp: | |||||
| case Protobuf.PropType.AddLifeOrAp: | |||||
| prop3.Text = "🏅"; | prop3.Text = "🏅"; | ||||
| break; | break; | ||||
| case PropType.AddHpOrAp: | |||||
| case Protobuf.PropType.AddHpOrAp: | |||||
| prop3.Text = "♥"; | prop3.Text = "♥"; | ||||
| break; | break; | ||||
| case PropType.ShieldOrSpear: | |||||
| case Protobuf.PropType.ShieldOrSpear: | |||||
| prop3.Text = "🛡"; | prop3.Text = "🛡"; | ||||
| break; | break; | ||||
| default: | default: | ||||
| @@ -23,9 +23,9 @@ | |||||
| <ColumnDefinition Width="10*"/> | <ColumnDefinition Width="10*"/> | ||||
| <ColumnDefinition Width="10*"/> | <ColumnDefinition Width="10*"/> | ||||
| </Grid.ColumnDefinitions> | </Grid.ColumnDefinitions> | ||||
| <TextBox Name="serial" IsReadOnly="True" BorderBrush="LightGray" TextWrapping="Wrap" Text="👥null🧓null
职业:" Grid.Row="0" Grid.ColumnSpan="4" FontSize="12"/> | |||||
| <TextBox Name="status" IsReadOnly="True" BorderBrush="LightGray" TextWrapping="Wrap" Text="♥:" Grid.Row="1" Grid.RowSpan="2" Grid.ColumnSpan="4"/> | |||||
| <TextBox Name="scores" IsReadOnly="True" BorderBrush="LightGray" TextWrapping="Wrap" Text="Scores:" Grid.Row="3" Grid.ColumnSpan="4"/> | |||||
| <TextBox Name="serial" IsReadOnly="True" BorderBrush="LightGray" TextWrapping="Wrap" Text="👥null🧓null
职业: " Grid.Row="0" Grid.ColumnSpan="4" FontSize="12"/> | |||||
| <TextBox Name="status" IsReadOnly="True" BorderBrush="LightGray" TextWrapping="Wrap" Text="♥: " Grid.Row="1" Grid.RowSpan="2" Grid.ColumnSpan="4"/> | |||||
| <TextBox Name="scores" IsReadOnly="True" BorderBrush="LightGray" TextWrapping="Wrap" Text="Scores: " Grid.Row="3" Grid.ColumnSpan="4"/> | |||||
| <TextBox Name="activeSkill0" IsReadOnly="True" BorderBrush="LightGray" TextWrapping="Wrap" Text="" Grid.Row="4" Grid.ColumnSpan="2"/> | <TextBox Name="activeSkill0" IsReadOnly="True" BorderBrush="LightGray" TextWrapping="Wrap" Text="" Grid.Row="4" Grid.ColumnSpan="2"/> | ||||
| <ProgressBar Name="skillprogress0" Background="White" Grid.Row="4" Grid.Column="2" Grid.ColumnSpan="2"/> | <ProgressBar Name="skillprogress0" Background="White" Grid.Row="4" Grid.Column="2" Grid.ColumnSpan="2"/> | ||||
| <TextBox Name="activeSkill1" IsReadOnly="True" BorderBrush="LightGray" TextWrapping="Wrap" Text="" Grid.Row="5" Grid.ColumnSpan="2"/> | <TextBox Name="activeSkill1" IsReadOnly="True" BorderBrush="LightGray" TextWrapping="Wrap" Text="" Grid.Row="5" Grid.ColumnSpan="2"/> | ||||
| @@ -39,23 +39,23 @@ namespace Client | |||||
| { | { | ||||
| case StudentType.Athlete: | case StudentType.Athlete: | ||||
| coolTime0 = coolTime1 = coolTime2 = 10000; | 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; | break; | ||||
| case StudentType._2: | case StudentType._2: | ||||
| coolTime0 = coolTime1 = coolTime2 = 20000; | 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; | break; | ||||
| case StudentType._3: | case StudentType._3: | ||||
| coolTime0 = coolTime1 = coolTime2 = 30000; | 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; | break; | ||||
| case StudentType._4: | case StudentType._4: | ||||
| coolTime0 = coolTime1 = coolTime2 = 40000; | 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; | break; | ||||
| case StudentType.NullStudentType: | case StudentType.NullStudentType: | ||||
| coolTime0 = coolTime1 = coolTime2 = -1; | 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; | break; | ||||
| } | } | ||||
| activeSkill0.Text = "Skill0"; | activeSkill0.Text = "Skill0"; | ||||
| @@ -65,107 +65,107 @@ namespace Client | |||||
| } | } | ||||
| private void SetDynamicValue(MessageOfStudent obj) | 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: | case PlayerState.Idle: | ||||
| status.Text = "♥:" + Convert.ToString(life)+"\nIdle"; | |||||
| status.Text = "♥: " + Convert.ToString(life) + "\nIdle"; | |||||
| break; | break; | ||||
| case PlayerState.Learning: | case PlayerState.Learning: | ||||
| status.Text = "♥:" + Convert.ToString(life)+ "\nLearning"; | |||||
| status.Text = "♥: " + Convert.ToString(life) + "\nLearning"; | |||||
| break; | break; | ||||
| case PlayerState.Addicted: | case PlayerState.Addicted: | ||||
| status.Text = "💀:" + Convert.ToString(death)+ "\nAddicted"; | |||||
| status.Text = "💀: " + Convert.ToString(death) + "\nAddicted"; | |||||
| break; | break; | ||||
| case PlayerState.Graduated: | case PlayerState.Graduated: | ||||
| status.Text = status.Text = "♥" + "\nGraduated"; | status.Text = status.Text = "♥" + "\nGraduated"; | ||||
| break; | break; | ||||
| case PlayerState.Quit: | case PlayerState.Quit: | ||||
| status.Text = "💀"+"\nQuit"; | |||||
| status.Text = "💀" + "\nQuit"; | |||||
| break; | break; | ||||
| case PlayerState.Treated: | case PlayerState.Treated: | ||||
| status.Text = "♥:" + Convert.ToString(life) + "\nTreated"; | |||||
| status.Text = "♥: " + Convert.ToString(life) + "\nTreated"; | |||||
| break; | break; | ||||
| case PlayerState.Rescued: | case PlayerState.Rescued: | ||||
| status.Text = "💀:" + Convert.ToString(death)+ "\nRescued"; | |||||
| status.Text = "💀: " + Convert.ToString(death) + "\nRescued"; | |||||
| break; | break; | ||||
| case PlayerState.Stunned: | case PlayerState.Stunned: | ||||
| status.Text = "♥:" + Convert.ToString(life) + "\nStunned"; | |||||
| status.Text = "♥: " + Convert.ToString(life) + "\nStunned"; | |||||
| break; | break; | ||||
| case PlayerState.Treating: | case PlayerState.Treating: | ||||
| status.Text = "♥:" + Convert.ToString(life) + "\nTreating"; | |||||
| status.Text = "♥: " + Convert.ToString(life) + "\nTreating"; | |||||
| break; | break; | ||||
| case PlayerState.Rescuing: | case PlayerState.Rescuing: | ||||
| status.Text = "♥:" + Convert.ToString(life) + "\nRescuing"; | |||||
| status.Text = "♥: " + Convert.ToString(life) + "\nRescuing"; | |||||
| break; | break; | ||||
| case PlayerState.Swinging: | case PlayerState.Swinging: | ||||
| status.Text = "♥:" + Convert.ToString(life) + "\nSwinging"; | |||||
| status.Text = "♥: " + Convert.ToString(life) + "\nSwinging"; | |||||
| break; | break; | ||||
| case PlayerState.Attacking: | case PlayerState.Attacking: | ||||
| status.Text = "♥:" + Convert.ToString(life) + "\nAttacking"; | |||||
| status.Text = "♥: " + Convert.ToString(life) + "\nAttacking"; | |||||
| break; | break; | ||||
| case PlayerState.Locking: | case PlayerState.Locking: | ||||
| status.Text = "♥:" + Convert.ToString(life) + "\nLocking"; | |||||
| status.Text = "♥: " + Convert.ToString(life) + "\nLocking"; | |||||
| break; | break; | ||||
| case PlayerState.Rummaging: | case PlayerState.Rummaging: | ||||
| status.Text = "♥:" + Convert.ToString(life) + "\nRummaging"; | |||||
| status.Text = "♥: " + Convert.ToString(life) + "\nRummaging"; | |||||
| break; | break; | ||||
| case PlayerState.Climbing: | case PlayerState.Climbing: | ||||
| status.Text = "♥:" + Convert.ToString(life) + "\nClimbing"; | |||||
| status.Text = "♥: " + Convert.ToString(life) + "\nClimbing"; | |||||
| break; | break; | ||||
| case PlayerState.OpeningAChest: | case PlayerState.OpeningAChest: | ||||
| status.Text = "♥:" + Convert.ToString(life) + "\nOpeningAChest"; | |||||
| status.Text = "♥: " + Convert.ToString(life) + "\nOpeningAChest"; | |||||
| break; | break; | ||||
| case PlayerState.UsingSpecialSkill: | case PlayerState.UsingSpecialSkill: | ||||
| status.Text = "♥:" + Convert.ToString(life) + "\nUsingSpecialSkill"; | |||||
| status.Text = "♥: " + Convert.ToString(life) + "\nUsingSpecialSkill"; | |||||
| break; | break; | ||||
| case PlayerState.OpeningAGate: | case PlayerState.OpeningAGate: | ||||
| status.Text = "♥:" + Convert.ToString(life) + "\nOpeningAGate"; | |||||
| status.Text = "♥: " + Convert.ToString(life) + "\nOpeningAGate"; | |||||
| break; | break; | ||||
| default: | default: | ||||
| break; | 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; | 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; | 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; | skillprogress2.Value = 100 - obj.TimeUntilSkillAvailable[2] / coolTime2 * 100; | ||||
| if (obj.PlayerState == PlayerState.Quit) | if (obj.PlayerState == PlayerState.Quit) | ||||
| { | { | ||||
| skillprogress0.Value = skillprogress1.Value = skillprogress2.Value = 0; | skillprogress0.Value = skillprogress1.Value = skillprogress2.Value = 0; | ||||
| skillprogress0.Background = skillprogress1.Background= skillprogress2.Background=Brushes.Gray; | |||||
| skillprogress0.Background = skillprogress1.Background = skillprogress2.Background = Brushes.Gray; | |||||
| } | } | ||||
| else | else | ||||
| skillprogress0.Background = skillprogress1.Background= skillprogress2.Background=Brushes.White; | |||||
| skillprogress0.Background = skillprogress1.Background = skillprogress2.Background = Brushes.White; | |||||
| int cnt = 0; | int cnt = 0; | ||||
| foreach (var icon in obj.Prop) | foreach (var icon in obj.Prop) | ||||
| { | { | ||||
| switch(cnt) | |||||
| switch (cnt) | |||||
| { | { | ||||
| case 0: | case 0: | ||||
| switch (icon) | switch (icon) | ||||
| { | { | ||||
| case PropType.Key3: | |||||
| case Protobuf.PropType.Key3: | |||||
| prop0.Text = "🔑"; | prop0.Text = "🔑"; | ||||
| break; | break; | ||||
| case PropType.Key5: | |||||
| case Protobuf.PropType.Key5: | |||||
| prop0.Text = "🔑"; | prop0.Text = "🔑"; | ||||
| break; | break; | ||||
| case PropType.Key6: | |||||
| case Protobuf.PropType.Key6: | |||||
| prop0.Text = "🔑"; | prop0.Text = "🔑"; | ||||
| break; | break; | ||||
| case PropType.AddSpeed: | |||||
| case Protobuf.PropType.AddSpeed: | |||||
| prop0.Text = "⛸"; | prop0.Text = "⛸"; | ||||
| break; | break; | ||||
| case PropType.AddLifeOrAp: | |||||
| case Protobuf.PropType.AddLifeOrAp: | |||||
| prop0.Text = "🏅"; | prop0.Text = "🏅"; | ||||
| break; | break; | ||||
| case PropType.AddHpOrAp: | |||||
| case Protobuf.PropType.AddHpOrAp: | |||||
| prop0.Text = "♥"; | prop0.Text = "♥"; | ||||
| break; | break; | ||||
| case PropType.ShieldOrSpear: | |||||
| case Protobuf.PropType.ShieldOrSpear: | |||||
| prop0.Text = "🛡"; | prop0.Text = "🛡"; | ||||
| break; | break; | ||||
| default: | default: | ||||
| @@ -177,25 +177,25 @@ namespace Client | |||||
| case 1: | case 1: | ||||
| switch (icon) | switch (icon) | ||||
| { | { | ||||
| case PropType.Key3: | |||||
| case Protobuf.PropType.Key3: | |||||
| prop1.Text = "🔑"; | prop1.Text = "🔑"; | ||||
| break; | break; | ||||
| case PropType.Key5: | |||||
| case Protobuf.PropType.Key5: | |||||
| prop1.Text = "🔑"; | prop1.Text = "🔑"; | ||||
| break; | break; | ||||
| case PropType.Key6: | |||||
| case Protobuf.PropType.Key6: | |||||
| prop1.Text = "🔑"; | prop1.Text = "🔑"; | ||||
| break; | break; | ||||
| case PropType.AddSpeed: | |||||
| case Protobuf.PropType.AddSpeed: | |||||
| prop1.Text = "⛸"; | prop1.Text = "⛸"; | ||||
| break; | break; | ||||
| case PropType.AddLifeOrAp: | |||||
| case Protobuf.PropType.AddLifeOrAp: | |||||
| prop1.Text = "🏅"; | prop1.Text = "🏅"; | ||||
| break; | break; | ||||
| case PropType.AddHpOrAp: | |||||
| case Protobuf.PropType.AddHpOrAp: | |||||
| prop1.Text = "♥"; | prop1.Text = "♥"; | ||||
| break; | break; | ||||
| case PropType.ShieldOrSpear: | |||||
| case Protobuf.PropType.ShieldOrSpear: | |||||
| prop1.Text = "🛡"; | prop1.Text = "🛡"; | ||||
| break; | break; | ||||
| default: | default: | ||||
| @@ -207,25 +207,25 @@ namespace Client | |||||
| case 2: | case 2: | ||||
| switch (icon) | switch (icon) | ||||
| { | { | ||||
| case PropType.Key3: | |||||
| case Protobuf.PropType.Key3: | |||||
| prop2.Text = "🔑"; | prop2.Text = "🔑"; | ||||
| break; | break; | ||||
| case PropType.Key5: | |||||
| case Protobuf.PropType.Key5: | |||||
| prop2.Text = "🔑"; | prop2.Text = "🔑"; | ||||
| break; | break; | ||||
| case PropType.Key6: | |||||
| case Protobuf.PropType.Key6: | |||||
| prop2.Text = "🔑"; | prop2.Text = "🔑"; | ||||
| break; | break; | ||||
| case PropType.AddSpeed: | |||||
| case Protobuf.PropType.AddSpeed: | |||||
| prop2.Text = "⛸"; | prop2.Text = "⛸"; | ||||
| break; | break; | ||||
| case PropType.AddLifeOrAp: | |||||
| case Protobuf.PropType.AddLifeOrAp: | |||||
| prop2.Text = "🏅"; | prop2.Text = "🏅"; | ||||
| break; | break; | ||||
| case PropType.AddHpOrAp: | |||||
| case Protobuf.PropType.AddHpOrAp: | |||||
| prop2.Text = "♥"; | prop2.Text = "♥"; | ||||
| break; | break; | ||||
| case PropType.ShieldOrSpear: | |||||
| case Protobuf.PropType.ShieldOrSpear: | |||||
| prop2.Text = "🛡"; | prop2.Text = "🛡"; | ||||
| break; | break; | ||||
| default: | default: | ||||
| @@ -237,25 +237,25 @@ namespace Client | |||||
| case 3: | case 3: | ||||
| switch (icon) | switch (icon) | ||||
| { | { | ||||
| case PropType.Key3: | |||||
| case Protobuf.PropType.Key3: | |||||
| prop3.Text = "🔑"; | prop3.Text = "🔑"; | ||||
| break; | break; | ||||
| case PropType.Key5: | |||||
| case Protobuf.PropType.Key5: | |||||
| prop3.Text = "🔑"; | prop3.Text = "🔑"; | ||||
| break; | break; | ||||
| case PropType.Key6: | |||||
| case Protobuf.PropType.Key6: | |||||
| prop3.Text = "🔑"; | prop3.Text = "🔑"; | ||||
| break; | break; | ||||
| case PropType.AddSpeed: | |||||
| case Protobuf.PropType.AddSpeed: | |||||
| prop3.Text = "⛸"; | prop3.Text = "⛸"; | ||||
| break; | break; | ||||
| case PropType.AddLifeOrAp: | |||||
| case Protobuf.PropType.AddLifeOrAp: | |||||
| prop3.Text = "🏅"; | prop3.Text = "🏅"; | ||||
| break; | break; | ||||
| case PropType.AddHpOrAp: | |||||
| case Protobuf.PropType.AddHpOrAp: | |||||
| prop3.Text = "♥"; | prop3.Text = "♥"; | ||||
| break; | break; | ||||
| case PropType.ShieldOrSpear: | |||||
| case Protobuf.PropType.ShieldOrSpear: | |||||
| prop3.Text = "🛡"; | prop3.Text = "🛡"; | ||||
| break; | break; | ||||
| default: | default: | ||||
| @@ -266,7 +266,7 @@ namespace Client | |||||
| break; | break; | ||||
| default: | default: | ||||
| break; | break; | ||||
| } | |||||
| } | |||||
| } | } | ||||
| } | } | ||||
| public void SetValue(MessageOfStudent obj) | public void SetValue(MessageOfStudent obj) | ||||
| @@ -5,7 +5,7 @@ namespace ClientTest | |||||
| { | { | ||||
| public class Program | public class Program | ||||
| { | { | ||||
| public static async Task Main(string[] args) | |||||
| public static Task Main(string[] args) | |||||
| { | { | ||||
| Thread.Sleep(3000); | Thread.Sleep(3000); | ||||
| Channel channel = new Channel("127.0.0.1:8888", ChannelCredentials.Insecure); | Channel channel = new Channel("127.0.0.1:8888", ChannelCredentials.Insecure); | ||||
| @@ -36,17 +36,7 @@ namespace ClientTest | |||||
| Console.WriteLine("Move!"); | 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; | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -28,12 +28,12 @@ namespace GameClass.GameObj | |||||
| { | { | ||||
| if (value > 0) | if (value > 0) | ||||
| lock (gameObjLock) | lock (gameObjLock) | ||||
| openDegree = (value > GameData.degreeOfOpeningChest) ? GameData.degreeOfOpeningChest : value; | |||||
| openDegree = (value > GameData.degreeOfOpenedChest) ? GameData.degreeOfOpenedChest : value; | |||||
| else | else | ||||
| lock (gameObjLock) | lock (gameObjLock) | ||||
| openDegree = 0; | openDegree = 0; | ||||
| } | } | ||||
| } | } | ||||
| public bool IsOpen() => (OpenDegree == GameData.degreeOfOpeningChest); | |||||
| public bool IsOpen() => (OpenDegree == GameData.degreeOfOpenedChest); | |||||
| } | } | ||||
| } | } | ||||
| @@ -203,7 +203,7 @@ namespace Preparation.Utility | |||||
| #region 物体相关 | #region 物体相关 | ||||
| public const int degreeOfFixedGenerator = 10300000; | public const int degreeOfFixedGenerator = 10300000; | ||||
| public const int degreeOfLockingOrOpeningTheDoor = 10000; | public const int degreeOfLockingOrOpeningTheDoor = 10000; | ||||
| public const int degreeOfOpeningChest = 10000; | |||||
| public const int degreeOfOpenedChest = 10000; | |||||
| public const int degreeOfOpenedDoorway = 18000; | public const int degreeOfOpenedDoorway = 18000; | ||||
| public const int maxNumOfPropInChest = 2; | public const int maxNumOfPropInChest = 2; | ||||
| public const int numOfGeneratorRequiredForRepair = 7; | public const int numOfGeneratorRequiredForRepair = 7; | ||||
| @@ -270,10 +270,10 @@ namespace Server | |||||
| foreach (var value in player.PropInventory) | foreach (var value in player.PropInventory) | ||||
| msg.StudentMessage.Prop.Add(ToPropType(value.GetPropType())); | 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.Guid = player.ID; | ||||
| msg.StudentMessage.PlayerState = ToPlayerState(player.PlayerState); | |||||
| msg.StudentMessage.PlayerState = ToPlayerState((PlayerStateType)player.PlayerState); | |||||
| msg.StudentMessage.PlayerId = player.PlayerID; | msg.StudentMessage.PlayerId = player.PlayerID; | ||||
| msg.StudentMessage.ViewRange = player.ViewRange; | msg.StudentMessage.ViewRange = player.ViewRange; | ||||
| msg.StudentMessage.Radius = player.Radius; | msg.StudentMessage.Radius = player.Radius; | ||||
| @@ -288,7 +288,7 @@ namespace Server | |||||
| msg.StudentMessage.Buff.Add(ToStudentBuffType(kvp.Key)); | 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.LearningSpeed = player.FixSpeed; | ||||
| msg.StudentMessage.TreatSpeed = player.TreatSpeed; | msg.StudentMessage.TreatSpeed = player.TreatSpeed; | ||||
| msg.StudentMessage.FacingDirection = player.FacingDirection.Angle(); | msg.StudentMessage.FacingDirection = player.FacingDirection.Angle(); | ||||
| @@ -310,7 +310,7 @@ namespace Server | |||||
| for (int i = 0; i < GameData.maxNumOfSkill - player.TimeUntilActiveSkillAvailable.Count(); ++i) | for (int i = 0; i < GameData.maxNumOfSkill - player.TimeUntilActiveSkillAvailable.Count(); ++i) | ||||
| msg.TrickerMessage.TimeUntilSkillAvailable.Add(-1); | 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) | foreach (var value in player.PropInventory) | ||||
| msg.TrickerMessage.Prop.Add(ToPropType(value.GetPropType())); | msg.TrickerMessage.Prop.Add(ToPropType(value.GetPropType())); | ||||
| @@ -320,11 +320,11 @@ namespace Server | |||||
| msg.TrickerMessage.PlayerId = player.PlayerID; | msg.TrickerMessage.PlayerId = player.PlayerID; | ||||
| msg.TrickerMessage.ViewRange = player.ViewRange; | msg.TrickerMessage.ViewRange = player.ViewRange; | ||||
| msg.TrickerMessage.Radius = player.Radius; | 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.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.ClassVolume = (player.BgmDictionary.ContainsKey(BgmType.GeneratorIsBeingFixed)) ? player.BgmDictionary[BgmType.GeneratorIsBeingFixed] : 0; | ||||
| msg.TrickerMessage.FacingDirection = player.FacingDirection.Angle(); | msg.TrickerMessage.FacingDirection = player.FacingDirection.Angle(); | ||||
| msg.TrickerMessage.BulletType = ToBulletType(player.BulletOfPlayer); | |||||
| msg.TrickerMessage.BulletType = ToBulletType((Preparation.Utility.BulletType)player.BulletOfPlayer); | |||||
| foreach (KeyValuePair<Preparation.Utility.BuffType, bool> kvp in player.Buff) | foreach (KeyValuePair<Preparation.Utility.BuffType, bool> kvp in player.Buff) | ||||
| { | { | ||||
| if (kvp.Value) | if (kvp.Value) | ||||
| @@ -344,7 +344,7 @@ namespace Server | |||||
| msg.BulletMessage.FacingDirection = bullet.FacingDirection.Angle(); | msg.BulletMessage.FacingDirection = bullet.FacingDirection.Angle(); | ||||
| msg.BulletMessage.Guid = bullet.ID; | msg.BulletMessage.Guid = bullet.ID; | ||||
| msg.BulletMessage.Team = (bullet.Parent.IsGhost()) ? PlayerType.TrickerPlayer : PlayerType.StudentPlayer; | 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.BombRange = bullet.BulletBombRange; | ||||
| msg.BulletMessage.Speed = bullet.Speed; | msg.BulletMessage.Speed = bullet.Speed; | ||||
| return msg; | return msg; | ||||
| @@ -359,7 +359,7 @@ namespace Server | |||||
| msg.PropMessage.Y = prop.Position.y; | msg.PropMessage.Y = prop.Position.y; | ||||
| msg.PropMessage.FacingDirection = prop.FacingDirection.Angle(); | msg.PropMessage.FacingDirection = prop.FacingDirection.Angle(); | ||||
| msg.PropMessage.Guid = prop.ID; | msg.PropMessage.Guid = prop.ID; | ||||
| msg.PropMessage.Place = ToPlaceType(prop.Place); | |||||
| msg.PropMessage.Place = ToPlaceType((Preparation.Utility.PlaceType)prop.Place); | |||||
| return msg; | return msg; | ||||
| } | } | ||||
| @@ -0,0 +1,142 @@ | |||||
| | |||||
| namespace Preparation.Utility | |||||
| { | |||||
| /// <summary> | |||||
| /// 存放所有用到的枚举类型 | |||||
| /// </summary> | |||||
| 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, | |||||
| } | |||||
| } | |||||
| @@ -2,7 +2,7 @@ | |||||
| "profiles": { | "profiles": { | ||||
| "Server": { | "Server": { | ||||
| "commandName": "Project", | "commandName": "Project", | ||||
| "commandLineArgs": "--ip 0.0.0.0 -p 8888" | |||||
| "commandLineArgs": "--ip 0.0.0.0 -p 8888 --teamCount 1 --studentCount 1 --trickerCount 0" | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -1,22 +1,16 @@ | |||||
| @echo off | @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 | 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 | 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 | 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 | |||||
| @@ -1,3 +1,3 @@ | |||||
| @echo off | @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 | |||||
| start cmd /k ..\Client\bin\Debug\net6.0-windows\Client.exe --cl --playbackFile D:\2_autumn\thuai6\THUAI6\logic\cmd\test.thuaipb | |||||
| @@ -19,6 +19,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GameEngine", "GameEngine\Ga | |||||
| EndProject | EndProject | ||||
| Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Playback", "..\playback\Playback\Playback.csproj", "{FF22960A-6BD9-4C80-A029-9A39FB8F64C4}" | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Playback", "..\playback\Playback\Playback.csproj", "{FF22960A-6BD9-4C80-A029-9A39FB8F64C4}" | ||||
| EndProject | 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 | Global | ||||
| GlobalSection(SolutionConfigurationPlatforms) = preSolution | GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||||
| Debug|Any CPU = Debug|Any CPU | 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}.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.ActiveCfg = Release|Any CPU | ||||
| {FF22960A-6BD9-4C80-A029-9A39FB8F64C4}.Release|Any CPU.Build.0 = 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 | EndGlobalSection | ||||
| GlobalSection(SolutionProperties) = preSolution | GlobalSection(SolutionProperties) = preSolution | ||||
| HideSolutionNode = FALSE | HideSolutionNode = FALSE | ||||