void hit(string s, string name, string foodid, Vector3 ColliderPositionV3) { int int_nr = 0; try { int_nr = int.Parse(name); } catch (System.Exception) { print(name); } player_snake ps = new player_snake(); try { ps = completeSnake_allPlayers[int_nr]; } catch (System.Exception) { ps = new player_snake(); } if (s == "Food") { Add_Tail tail_temp = new Add_Tail(); tail_temp.pos = new Vector2(0, 0); tail_temp.tailpos = ps.currentsize; tail_temp.ctailpos = 0; ps.newtail.Add(tail_temp); if (!online) { FoodFunction(); } else { if (int_nr == localplayernr) { string tcp_msg = "EatFoodAt|" + name + "|" + ColliderPositionV3.x + "|" + ColliderPositionV3.y + "|" + foodid; c.Send(tcp_msg); } } ps.currentsize++; ps.score++; scoreText.text = ps.score.ToString(); int temp = PlayerPrefs.GetInt("HighScore"); if (ps.score > temp) { if (!online) { PlayerPrefs.SetInt("HighScore", ps.score); } else { if (ps.playernr == localplayernr) { PlayerPrefs.SetInt("HighScore", ps.score); } } } } if (s == "Snake") { if (!online) { foreach (GameObject snakepart in ps.snake) { Destroy(snakepart); } ps.dead = true; if (completeSnake_allPlayers.Count <= End_game_at) { CancelInvoke("TimerInvoke"); GameOver(); } } else { if (hightickrate) { if (!ps.neednewtail) { c.Send("PlayerDead"); } } } } if (s == "Tail2") { } if (s == "SnakeHead") { } if (s == "Wall") { if (online) { c.Send("PlayerDead"); } foreach (GameObject snakepart in ps.snake) { Destroy(snakepart); } ps.dead = true; } completeSnake_allPlayers[int_nr] = ps; }
void Movement() { UpdateList.Clear(); int playernr = 0; foreach (player_snake snake_player in completeSnake_allPlayers) { if (!snake_player.dead) { bool firstTail = true; Vector2 newpos = new Vector2(0, 0); Vector2 lastpos = new Vector2(0, 0); if (snake_player.snake != null) { snake_player.snake.Reverse(); bool tailremoved = false; int x = 0; foreach (GameObject temp in snake_player.snake) { if (temp != null) { Vector2 temppos = temp.transform.position; GameObject tmp = temp.gameObject; if (snake_player.snake.Count == x) { if (snake_player.removetail) { player_snake a = completeSnake_allPlayers[snake_player.playernr]; Destroy(a.snake[x].gameObject); a.snake.RemoveAt(x); tailremoved = true; update_snake_list.Add(a); } } if (!tailremoved) { if (!online) { switch (snake_player.NESW_Direction) { case 0: //w nextPos = new Vector2(temppos.x, temppos.y + float.Parse(movmentSpeed.ToString())); tmp.transform.rotation = new Quaternion(0, 0, 0, 0); break; case 1: //d nextPos = new Vector2(temppos.x + float.Parse(movmentSpeed.ToString()), temppos.y); tmp.transform.rotation = new Quaternion(0, 0, 90, 0); break; case 2: //s nextPos = new Vector2(temppos.x, temppos.y - float.Parse(movmentSpeed.ToString())); tmp.transform.rotation = new Quaternion(0, 0, 180, 0); break; case 3: //a nextPos = new Vector2(temppos.x - float.Parse(movmentSpeed.ToString()), temppos.y); tmp.transform.rotation = new Quaternion(0, 0, 270, 0); break; } } else { nextPos = snake_player.nextpos; } if (lastpos.x == 0 && lastpos.y == 0) { if (localplayernr == snake_player.playernr) { SmoothMovment camera_sm = new SmoothMovment(); camera_sm.GameObject = MainCamera.gameObject; camera_sm.startTime = Time.time; camera_sm.StartPos = MainCamera.transform.position; camera_sm.EndPos = nextPos; camera_sm._3D = true; UpdateList.Add(camera_sm); } lastpos = temp.transform.position; newpos = temp.transform.position; temp.tag = "SnakeHead"; temp.name = snake_player.playernr.ToString(); if (smoothmovment) { SmoothMovment sm = new SmoothMovment(); sm.GameObject = temp; sm.StartPos = temp.transform.position; sm.EndPos = nextPos; sm.startTime = Time.time; sm.endTime = sm.startTime + float.Parse(movmentSpeed.ToString()); sm._3D = false; UpdateList.Add(sm); } else { temp.transform.position = Vector2.Lerp(temp.transform.position, nextPos, float.Parse(movmentSpeed.ToString())); } } else { if (firstTail == true) { temp.tag = "Tail2"; temp.name = snake_player.playernr.ToString(); firstTail = false; } else { temp.tag = "Snake"; temp.name = snake_player.playernr.ToString(); } Vector2 _temp = temp.transform.position; if (smoothmovment) { SmoothMovment sm = new SmoothMovment(); sm.GameObject = temp; sm.StartPos = temp.transform.position; sm.EndPos = lastpos; sm.startTime = Time.time; sm.endTime = sm.startTime + float.Parse(movmentSpeed.ToString()); sm._3D = false; UpdateList.Add(sm); } else { temp.transform.position = Vector2.Lerp(temp.transform.position, lastpos, float.Parse(movmentSpeed.ToString())); } lastpos = _temp; } } } x++; } } player_snake nps = new player_snake(); nps = snake_player; if (snake_player.name != null) { if (snake_player.newtail.Count != 0) { nps.neednewtail = true; List <Add_Tail> new_temp = new List <Add_Tail>(); foreach (Add_Tail newTail in snake_player.newtail) { Add_Tail nt = newTail; if (nt.ctailpos == 0) { nt.pos = newpos; } if (nt.tailpos == nt.ctailpos) { GameObject n = (GameObject)Instantiate(snakePrefab, nt.pos, transform.rotation); nps.snake.Add(n); } else { nt.ctailpos++; new_temp.Add(nt); } } nps.newtail = new_temp; } else { nps.neednewtail = false; } update_snake_list.Add(nps); snake_player.snake.Reverse(); playernr++; } } } startPlayerUpdate(); return; }
public player_snake ConvertUserInfoBackFromString(string s) { player_snake ps = new player_snake(); string[] PlayerData = s.Split('#'); if (PlayerData[0] == "UserInfo") { ps.name = PlayerData[1]; ps.neednewtail = bool.Parse(PlayerData[2]); ps.NESW_Direction = int.Parse(PlayerData[3]); ps.playernr = int.Parse(PlayerData[4]); ps.score = int.Parse(PlayerData[5]); ps.currentsize = int.Parse(PlayerData[6]); ps.dead = bool.Parse(PlayerData[7]); ps.newtail = new List <Add_Tail>(); ps.snake = new List <GameObject>(); int count_ = 0; bool snakeMode = false; Add_Tail Tailcache = new Add_Tail(); int cache_x = 0; int cache_y = 0; GameObject GOcache = new GameObject(); foreach (string data in PlayerData[8].Split('-')) { if (data == "TAILLIST") { count_ = 0; snakeMode = false; continue; } if (data == "SNAKELIST") { count_ = 0; snakeMode = true; continue; } if (snakeMode) { if (count_ == 0) { GOcache.tag = data; } if (count_ == 1) { GOcache.name = data; } if (count_ == 2) { cache_x = int.Parse(data); } if (count_ == 3) { cache_y = int.Parse(data); GOcache.transform.position = new Vector2(cache_x, cache_y); ps.snake.Add(GOcache); } else { if (count_ == 0) { Tailcache.ctailpos = int.Parse(data); } if (count_ == 1) { Tailcache.tailpos = int.Parse(data); } if (count_ == 2) { cache_x = int.Parse(data); } if (count_ == 3) { cache_y = int.Parse(data); Tailcache.pos = new Vector2(cache_x, cache_y); ps.newtail.Add(Tailcache); } count_++; } } } } return(ps); }