public void RemoveTail(int pid) { player_snake a = completeSnake_allPlayers[pid]; if (a.dead != true) { if (a.snake.Count - 1 == 0) { a.dead = true; } a.removetail = true; try { Destroy(a.snake[a.snake.Count - 1].gameObject); a.snake.Reverse(); a.snake.RemoveAt(a.snake.Count - 1); a.snake.Reverse(); a.currentsize--; a.score--; } catch (System.Exception) { } } completeSnake_allPlayers[pid] = a; }
void AddPlayerSnakeTooUpdateList(player_snake ps) { bool added = false; while (added == false) { if (isUpdating == false) { update_snake_list.Add(ps); added = true; } } }
public void setNextPlayerPos(int id, Vector2 pos) { try { player_snake ps = completeSnake_allPlayers[id]; ps.nextpos = pos; update_snake_list.Add(ps); startPlayerUpdate(); } catch (System.Exception) { create_new_player(id, pos.x, pos.y); } }
void Start() { Instance = this; airplainstarttime = 0; c = FindObjectOfType <Client>(); lineRenderer.startWidth = 0.2f; lineRenderer.endWidth = 0.2f; lineRenderer.numPositions = 2; try { online = c.server; player_count = c.playerscount; tickrateChanger(c.tickrate); End_game_at = 1; localplayernr = 0; } catch (System.Exception e) { print(e.Message); online = false; player_count = 1; End_game_at = 1; localplayernr = 0; } int x = 0; while (x != player_count) { player_snake tmp = new player_snake(); tmp.playernr = -1; completeSnake_allPlayers.Add(tmp); x++; } if (online) { get_local_id(); } print("OnlineMode:" + online + " | " + "Players:" + player_count + " | ID:" + localplayernr); InvokeRepeating("TimerInvoke", 0, float.Parse(tickrate.ToString())); if (!online) { FoodFunction(); } }
public void ChangeDirectionForPlayer(int playernr, int direction) { if (playernr != localplayernr) { foreach (player_snake ps in completeSnake_allPlayers) { if (!ps.dead) { if (playernr == ps.playernr) { player_snake nps = ps; nps.NESW_Direction = direction; update_snake_list.Add(nps); } } } startPlayerUpdate(); } }
public void create_new_player(int id, float x = 0, float y = 0, string name = "_") { print("AddPlayer " + id); bool alreadyexist = false; foreach (player_snake p in completeSnake_allPlayers) { if (p.playernr == id) { alreadyexist = true; } } if (!alreadyexist) { List <GameObject> p_snake = new List <GameObject>(); GameObject newHead; if (x == 0 && y == 0) { newHead = (GameObject)Instantiate(snakePrefab, new Vector2(Random.Range(-10, 10), Random.Range(-10, 10)), transform.rotation); } else { newHead = (GameObject)Instantiate(snakePrefab, new Vector2(x, y), transform.rotation); } player_snake N_ps = new player_snake(); N_ps.neednewtail = false; N_ps.newtail = new List <Add_Tail>(); N_ps.playernr = id; N_ps.localplayer = false; N_ps.score = 0; N_ps.NESW_Direction = 0; N_ps.dead = false; N_ps.name = name; p_snake.Add(newHead); N_ps.snake = p_snake; N_ps.currentsize = 1; try { completeSnake_allPlayers[id] = N_ps; } catch (System.Exception) { } } }
public void delPlayer(int id) { if (id == localplayernr) { localplayerdeathmanager(); } try { player_snake ps = completeSnake_allPlayers[id]; ps.dead = true; foreach (GameObject snakepart in ps.snake) { Destroy(snakepart); } update_snake_list.Add(ps); startPlayerUpdate(); } catch (System.Exception) { } }
void ComChangeDirection() { foreach (player_snake ps in completeSnake_allPlayers) { if (!ps.dead) { if (localplayernr == ps.playernr) { player_snake nps = ps; int int_cache = nps.NESW_Direction; if (nps.NESW_Direction != 2 && Input.GetKeyDown(KeyCode.W)) { nps.NESW_Direction = 0; } if (nps.NESW_Direction != 3 && Input.GetKeyDown(KeyCode.D)) { nps.NESW_Direction = 1; } if (nps.NESW_Direction != 0 && Input.GetKeyDown(KeyCode.S)) { nps.NESW_Direction = 2; } if (nps.NESW_Direction != 1 && Input.GetKeyDown(KeyCode.A)) { nps.NESW_Direction = 3; } if (online) { if (int_cache != nps.NESW_Direction) { c.Send("ChangeDirection|" + nps.playernr + "|" + nps.NESW_Direction.ToString()); } } update_snake_list.Add(nps); } } } startPlayerUpdate(); }
public void ReSyncUser(string s) { print("Starting Resync"); player_snake resyn = ConvertUserInfoBackFromString(s); try { foreach (GameObject del in completeSnake_allPlayers[resyn.playernr].snake) { Destroy(del); } List <GameObject> newSnake = new List <GameObject>(); foreach (GameObject resyncObjects in resyn.snake) { GameObject snake = Instantiate(resyncObjects); newSnake.Add(snake); } resyn.snake = newSnake; update_snake_list.Add(resyn); }catch (System.Exception) { c.Send("getPlayer|" + resyn.playernr.ToString()); } }
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; }
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; }
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); }