Exemplo n.º 1
0
    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;
    }
Exemplo n.º 2
0
    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;
    }
Exemplo n.º 3
0
    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);
    }