|
|
|
@@ -53,27 +53,31 @@ namespace Client |
|
|
|
listOfButcher = new List<MessageOfTricker>(); |
|
|
|
listOfBullet=new List<MessageOfBullet>(); |
|
|
|
listOfBombedBullet = new List<MessageOfBombedBullet>(); |
|
|
|
listOfAll=new List<MessageOfAll>(); |
|
|
|
listOfAll = new List<MessageOfAll>(); |
|
|
|
MapObjDict = new Dictionary<MessageOfMapObj.MessageOfMapObjOneofCase, List<MessageOfMapObj>>(); |
|
|
|
MapObjDict.Add(MessageOfMapObj.MessageOfMapObjOneofCase.ClassroomMessage, new List<MessageOfMapObj>()); |
|
|
|
MapObjDict.Add(MessageOfMapObj.MessageOfMapObjOneofCase.GateMessage, new List<MessageOfMapObj>()); |
|
|
|
MapObjDict.Add(MessageOfMapObj.MessageOfMapObjOneofCase.DoorMessage, new List<MessageOfMapObj>()); |
|
|
|
MapObjDict.Add(MessageOfMapObj.MessageOfMapObjOneofCase.ChestMessage, new List<MessageOfMapObj>()); |
|
|
|
WindowStartupLocation = WindowStartupLocation.CenterScreen; |
|
|
|
comInfo[0] = "183.172.208.156"; |
|
|
|
comInfo[0] = "127.0.0.1"; |
|
|
|
comInfo[1] = "8888"; |
|
|
|
comInfo[2] = "0"; |
|
|
|
comInfo[3] = "1"; |
|
|
|
comInfo[4] = "1"; |
|
|
|
|
|
|
|
//ConnectToServer(comInfo); |
|
|
|
//OnReceive(); |
|
|
|
DrawMap(); |
|
|
|
ZoomMap(); |
|
|
|
MessageOfStudent kurei = new MessageOfStudent(); |
|
|
|
kurei.X = 10000; |
|
|
|
kurei.Y = 20000; |
|
|
|
kurei.Speed = 1000; |
|
|
|
kurei.PlayerId = 0; |
|
|
|
listOfHuman.Add(kurei); |
|
|
|
MessageOfAll all= new MessageOfAll(); |
|
|
|
all.HiddenGateRefreshed = false; |
|
|
|
listOfAll.Add(all); |
|
|
|
|
|
|
|
ConnectToServer(comInfo); |
|
|
|
OnReceive(); |
|
|
|
//DrawMap(); |
|
|
|
//ZoomMap(); |
|
|
|
//MessageOfStudent kurei = new MessageOfStudent(); |
|
|
|
//kurei.X = 10000; |
|
|
|
//kurei.Y = 20000; |
|
|
|
//kurei.Speed = 1000; |
|
|
|
//kurei.PlayerId = 0; |
|
|
|
//listOfHuman.Add(kurei); |
|
|
|
//MessageOfAll all= new MessageOfAll(); |
|
|
|
//all.HiddenGateRefreshed = false; |
|
|
|
//listOfAll.Add(all); |
|
|
|
// ReactToCommandline(); |
|
|
|
} |
|
|
|
|
|
|
|
@@ -88,7 +92,7 @@ namespace Client |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 连接Server,comInfo[]的格式:0-ip 1- port 2-playerID 3-playerType 4-human/TrickerType |
|
|
|
// 连接Server,comInfo[]的格式:0-ip 1- port 2-playerID 3-human/TrickerType |
|
|
|
private void ConnectToServer(string[] comInfo) |
|
|
|
{ |
|
|
|
if (!isPlaybackMode) |
|
|
|
@@ -120,7 +124,6 @@ namespace Client |
|
|
|
{ |
|
|
|
humanOrButcher = false; |
|
|
|
} |
|
|
|
playerMsg.PlayerType = playerType; |
|
|
|
if (playerType == PlayerType.StudentPlayer) |
|
|
|
{ |
|
|
|
switch (Convert.ToInt64(comInfo[4])) |
|
|
|
@@ -204,7 +207,7 @@ namespace Client |
|
|
|
{ |
|
|
|
for (int j = 0; j < 50; j++) |
|
|
|
{ |
|
|
|
map[i, j] = Convert.ToInt32(obj.Row[i].Col[j]); |
|
|
|
map[i, j] = Convert.ToInt32(obj.Row[i].Col[j])+4;//与proto一致 |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
@@ -256,11 +259,11 @@ namespace Client |
|
|
|
case 6: |
|
|
|
mapPatches[i, j].Fill = Brushes.Brown; |
|
|
|
mapPatches[i, j].Stroke = Brushes.Brown; |
|
|
|
break; |
|
|
|
break;//wall |
|
|
|
case 7: |
|
|
|
mapPatches[i, j].Fill = Brushes.Green; |
|
|
|
mapPatches[i, j].Stroke = Brushes.Green; |
|
|
|
break; |
|
|
|
break;//grass |
|
|
|
case 8: |
|
|
|
mapPatches[i, j].Fill = Brushes.LightPink; |
|
|
|
mapPatches[i, j].Stroke = Brushes.LightPink; |
|
|
|
@@ -332,11 +335,14 @@ 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) |
|
|
|
{ |
|
|
|
case GameState.GameStart: |
|
|
|
case GameState.GameRunning: |
|
|
|
foreach (var obj in content.ObjMessage) |
|
|
|
{ |
|
|
|
switch (obj.MessageOfObjCase) |
|
|
|
@@ -364,11 +370,77 @@ 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); |
|
|
|
listOfAll.Add(content.AllMessage); |
|
|
|
break; |
|
|
|
case GameState.GameRunning: |
|
|
|
foreach (var obj in content.ObjMessage) |
|
|
|
{ |
|
|
|
switch (obj.MessageOfObjCase) |
|
|
|
{ |
|
|
|
case MessageOfObj.MessageOfObjOneofCase.StudentMessage: |
|
|
|
if (humanOrButcher && obj.StudentMessage.PlayerId == playerID) |
|
|
|
{ |
|
|
|
human = obj.StudentMessage; |
|
|
|
} |
|
|
|
listOfHuman.Add(obj.StudentMessage); |
|
|
|
break; |
|
|
|
case MessageOfObj.MessageOfObjOneofCase.TrickerMessage: |
|
|
|
if (!humanOrButcher && obj.TrickerMessage.PlayerId == playerID) |
|
|
|
{ |
|
|
|
butcher = obj.TrickerMessage; |
|
|
|
} |
|
|
|
listOfButcher.Add(obj.TrickerMessage); |
|
|
|
break; |
|
|
|
case MessageOfObj.MessageOfObjOneofCase.PropMessage: |
|
|
|
listOfProp.Add(obj.PropMessage); |
|
|
|
break; |
|
|
|
case MessageOfObj.MessageOfObjOneofCase.BombedBulletMessage: |
|
|
|
listOfBombedBullet.Add(obj.BombedBulletMessage); |
|
|
|
break; |
|
|
|
case MessageOfObj.MessageOfObjOneofCase.BulletMessage: |
|
|
|
listOfBullet.Add(obj.BulletMessage); |
|
|
|
break; |
|
|
|
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); |
|
|
|
break; |
|
|
|
|
|
|
|
case GameState.GameEnd: |
|
|
|
foreach (var obj in content.ObjMessage) |
|
|
|
@@ -390,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); |
|
|
|
@@ -409,10 +498,18 @@ 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) |
|
|
|
{ |
|
|
|
if (msg.State == StudentState.Quit) |
|
|
|
if (msg.State == PlayerState.Quit) |
|
|
|
return false; |
|
|
|
//if (playerID >= 2022 || teamID >= 2022) |
|
|
|
// return true; |
|
|
|
@@ -675,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(); |
|
|
|
} |
|
|
|
@@ -766,7 +881,13 @@ namespace Client |
|
|
|
}; |
|
|
|
client.UseSkill(msgQ); |
|
|
|
break; |
|
|
|
|
|
|
|
case Key.K: |
|
|
|
IDMsg msgK = new() |
|
|
|
{ |
|
|
|
PlayerId = playerID, |
|
|
|
}; |
|
|
|
client.StartLearning(msgK); |
|
|
|
break; |
|
|
|
default: |
|
|
|
break; |
|
|
|
} |
|
|
|
@@ -936,6 +1057,7 @@ namespace Client |
|
|
|
private List<MessageOfBullet> listOfBullet; |
|
|
|
private List<MessageOfBombedBullet> listOfBombedBullet; |
|
|
|
private List<MessageOfAll> listOfAll; |
|
|
|
private Dictionary<MessageOfMapObj.MessageOfMapObjOneofCase, List<MessageOfMapObj>> MapObjDict; |
|
|
|
private object drawPicLock = new object(); |
|
|
|
private MessageOfStudent? human = null; |
|
|
|
private MessageOfTricker? butcher = null; |
|
|
|
|