diff --git a/logic/Client/MainWindow.xaml.cs b/logic/Client/MainWindow.xaml.cs index a4ef3c8..8022dd8 100644 --- a/logic/Client/MainWindow.xaml.cs +++ b/logic/Client/MainWindow.xaml.cs @@ -54,8 +54,13 @@ namespace Client listOfBullet=new List(); listOfBombedBullet = new List(); listOfAll = new List(); + MapObjDict = new Dictionary>(); + MapObjDict.Add(MessageOfMapObj.MessageOfMapObjOneofCase.ClassroomMessage, new List()); + MapObjDict.Add(MessageOfMapObj.MessageOfMapObjOneofCase.GateMessage, new List()); + MapObjDict.Add(MessageOfMapObj.MessageOfMapObjOneofCase.DoorMessage, new List()); + MapObjDict.Add(MessageOfMapObj.MessageOfMapObjOneofCase.ChestMessage, new List()); WindowStartupLocation = WindowStartupLocation.CenterScreen; - comInfo[0] = "183.172.212.19"; + comInfo[0] = "127.0.0.1"; comInfo[1] = "8888"; comInfo[2] = "0"; comInfo[3] = "1"; @@ -330,6 +335,10 @@ namespace Client listOfBombedBullet.Clear(); listOfBullet.Clear(); listOfAll.Clear(); + MapObjDict[MessageOfMapObj.MessageOfMapObjOneofCase.ClassroomMessage].Clear(); + MapObjDict[MessageOfMapObj.MessageOfMapObjOneofCase.DoorMessage].Clear(); + MapObjDict[MessageOfMapObj.MessageOfMapObjOneofCase.ChestMessage].Clear(); + MapObjDict[MessageOfMapObj.MessageOfMapObjOneofCase.GateMessage].Clear(); MessageToClient content = responseStream.ResponseStream.Current; switch (content.GameState) { @@ -361,6 +370,23 @@ namespace Client case MessageOfObj.MessageOfObjOneofCase.BulletMessage: listOfBullet.Add(obj.BulletMessage); break; + case MessageOfObj.MessageOfObjOneofCase.MapObjMessage: + switch (obj.MapObjMessage.MessageOfMapObjCase) + { + case MessageOfMapObj.MessageOfMapObjOneofCase.ClassroomMessage: + MapObjDict[MessageOfMapObj.MessageOfMapObjOneofCase.ClassroomMessage].Add(obj.MapObjMessage); + break; + case MessageOfMapObj.MessageOfMapObjOneofCase.DoorMessage: + MapObjDict[MessageOfMapObj.MessageOfMapObjOneofCase.DoorMessage].Add(obj.MapObjMessage); + break; + case MessageOfMapObj.MessageOfMapObjOneofCase.ChestMessage: + MapObjDict[MessageOfMapObj.MessageOfMapObjOneofCase.ChestMessage].Add(obj.MapObjMessage); + break; + case MessageOfMapObj.MessageOfMapObjOneofCase.GateMessage: + MapObjDict[MessageOfMapObj.MessageOfMapObjOneofCase.GateMessage].Add(obj.MapObjMessage); + break; + } + break; } } GetMap(content.MapMessage); @@ -394,6 +420,23 @@ namespace Client case MessageOfObj.MessageOfObjOneofCase.BulletMessage: listOfBullet.Add(obj.BulletMessage); break; + case MessageOfObj.MessageOfObjOneofCase.MapObjMessage: + switch (obj.MapObjMessage.MessageOfMapObjCase) + { + case MessageOfMapObj.MessageOfMapObjOneofCase.ClassroomMessage: + MapObjDict[MessageOfMapObj.MessageOfMapObjOneofCase.ClassroomMessage].Add(obj.MapObjMessage); + break; + case MessageOfMapObj.MessageOfMapObjOneofCase.DoorMessage: + MapObjDict[MessageOfMapObj.MessageOfMapObjOneofCase.DoorMessage].Add(obj.MapObjMessage); + break; + case MessageOfMapObj.MessageOfMapObjOneofCase.ChestMessage: + MapObjDict[MessageOfMapObj.MessageOfMapObjOneofCase.ChestMessage].Add(obj.MapObjMessage); + break; + case MessageOfMapObj.MessageOfMapObjOneofCase.GateMessage: + MapObjDict[MessageOfMapObj.MessageOfMapObjOneofCase.GateMessage].Add(obj.MapObjMessage); + break; + } + break; } } listOfAll.Add(content.AllMessage); @@ -419,6 +462,23 @@ namespace Client case MessageOfObj.MessageOfObjOneofCase.BulletMessage: listOfBullet.Add(obj.BulletMessage); break; + case MessageOfObj.MessageOfObjOneofCase.MapObjMessage: + switch (obj.MapObjMessage.MessageOfMapObjCase) + { + case MessageOfMapObj.MessageOfMapObjOneofCase.ClassroomMessage: + MapObjDict[MessageOfMapObj.MessageOfMapObjOneofCase.ClassroomMessage].Add(obj.MapObjMessage); + break; + case MessageOfMapObj.MessageOfMapObjOneofCase.DoorMessage: + MapObjDict[MessageOfMapObj.MessageOfMapObjOneofCase.DoorMessage].Add(obj.MapObjMessage); + break; + case MessageOfMapObj.MessageOfMapObjOneofCase.ChestMessage: + MapObjDict[MessageOfMapObj.MessageOfMapObjOneofCase.ChestMessage].Add(obj.MapObjMessage); + break; + case MessageOfMapObj.MessageOfMapObjOneofCase.GateMessage: + MapObjDict[MessageOfMapObj.MessageOfMapObjOneofCase.GateMessage].Add(obj.MapObjMessage); + break; + } + break; } } listOfAll.Add(content.AllMessage); @@ -438,6 +498,14 @@ namespace Client } } + private int GetX(int x) + { + return x / 1000 + 1; + } + private int GetY(int y) + { + return y / 1000 + 1; + } //待修改 private bool CanSee(MessageOfStudent msg) { @@ -704,6 +772,24 @@ namespace Client break; } } + foreach (var data in MapObjDict[MessageOfMapObj.MessageOfMapObjOneofCase.ClassroomMessage]) + { + TextBox icon = new() + { + FontSize = 10 * UpperLayerOfMap.ActualHeight / 650, + Width = unitWidth, + Height = unitHeight, + Text = Convert.ToString(data.ClassroomMessage.Progress), + HorizontalAlignment = HorizontalAlignment.Left, + VerticalAlignment = VerticalAlignment.Top, + Margin = new Thickness(data.ClassroomMessage.Y * unitWidth / 1000.0 - unitWidth / 2, data.ClassroomMessage.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); + } //} ZoomMap(); } @@ -971,6 +1057,7 @@ namespace Client private List listOfBullet; private List listOfBombedBullet; private List listOfAll; + private Dictionary> MapObjDict; private object drawPicLock = new object(); private MessageOfStudent? human = null; private MessageOfTricker? butcher = null;