Beispiel #1
0
 public void LoadGameData() //Загрузка игровых данных из файловой системы устройства
 {
     if (File.Exists(save_path + "data.json"))
     {
         gameData = JsonUtility.FromJson <game_data>(File.ReadAllText(save_path + "data.json"));
         Debug.Log("Game data was successfuly loaded!");
     }
 }
    // Use this for initialization
    void Start()
    {
        //
        //  TODO: UNCOMMENT WHEN GOING TO PROD...
        //
        //GameObject go = GameObject.Find("SocketIO_AWS");
        GameObject go = GameObject.Find("SocketIO");

        _gameball = GetComponent <gameBall>();
        user_inst = Camera.main.GetComponent <player>();
        socket    = go.GetComponent <SocketIOComponent>();
        balldata  = new Dictionary <string, string>();
        theyWin   = GameObject.Find("THEY_WIN");

        socket.On("client_connect", (SocketIOEvent e) => {
            //send down information they need for multiplayer.. perferably how many players are playing.. highscore data.. any news?
            json_user_data DANK      = JsonUtility.FromJson <json_user_data>(e.data.ToString());
            high_score_data realDank = JsonUtility.FromJson <high_score_data>(DANK.dank);

            Dictionary <string, string> data = new Dictionary <string, string>();
            data["user_joined"] = user_inst.askForASpot();
            socket.Emit("cookieCheck", new JSONObject(data));
        });

        socket.On("confirm_player", (SocketIOEvent hb) => {
            current_game current = JsonUtility.FromJson <current_game>(hb.data.ToString());
            user_inst.loadAPlayer(current.spot);

            socket.On(current.gameID + "gameball", (SocketIOEvent gb) => {
                if (!_gameball.isGameStarted)
                {
                    //Start the game with gb information
                    iv_class iv = JsonUtility.FromJson <iv_class>(gb.data.ToString());
                    isHost      = iv.server_host;

                    if (!isHost)
                    {
                        socket.On(current.gameID + "end_game", (SocketIOEvent endGame) => {
                            end_game_msg eg = JsonUtility.FromJson <end_game_msg>(endGame.data.ToString());
                            _gameball.displayMessageFromServer(eg.msg);
                        });
                    }
                    else
                    {
                        socket.On(current.gameID + "start_the_game", (SocketIOEvent startGame) => {
                            //TODO: COULD SEND MORE DATA BACK BUT FOR NOW WE JUST TELL THE HOST TO START GAME
                            _gameball.startKeepingScore();
                        });
                    }

                    _gameball.startTheGame(iv.IV_0, iv.IV_1, iv.IV_2, isHost);
                    if (isHost)
                    {
                        InvokeRepeating("updateBall", 0f, 0.05f);
                    }
                }
            });

            socket.On(current.gameID + "gameball_ball", (SocketIOEvent gb) => {
                if (!isHost)
                {
                    ball_position ball = JsonUtility.FromJson <ball_position>(gb.data.ToString());
                    _gameball.updateBallPos(ball.x, ball.y, ball.z, ball.vx, ball.vy, ball.vz);
                }
            });

            socket.On(current.gameID + "update_score", (SocketIOEvent sc) => {
                score_msg _score = JsonUtility.FromJson <score_msg>(sc.data.ToString());
                StartCoroutine(_gameball.displayScore(_score.score));
            });

            socket.On(current.gameID + "restart_Game", (SocketIOEvent gb) => {
                _gameball.restartTheGame();
            });

            socket.On(current.gameID, (SocketIOEvent data) => {
                game_data game = JsonUtility.FromJson <game_data>(data.data.ToString());
                for (int i = 1; i <= 32; i++)
                {
                    GameObject item = GameObject.Find(i.ToString());
                    item.GetComponent <MeshRenderer>().enabled   = true;
                    item.GetComponent <MeshCollider>().isTrigger = false;
                    item.GetComponent <MeshCollider>().convex    = false;
                    item.GetComponent <MeshCollider>().enabled   = true;
                    foreach (Transform _childO in item.transform)
                    {
                        _childO.GetComponent <MeshRenderer>().material = outSide;
                    }
                }

                for (int i = 0, len = game.players.Length; i < len; i++)
                {
                    if (game.players[i] != user_inst.target.transform.name)
                    {
                        GameObject otherplayer = GameObject.Find(game.players[i]);
                        otherplayer.GetComponent <MeshRenderer>().enabled   = false;
                        otherplayer.GetComponent <MeshCollider>().convex    = false;
                        otherplayer.GetComponent <MeshCollider>().isTrigger = false;
                        otherplayer.GetComponent <MeshCollider>().enabled   = false;
                        //TODO: NEED TO PUT A WIN OBJECT BEHIND THE PLAYER SO MAKE A PREFAB
                        foreach (Transform _childO in otherplayer.transform)
                        {
                            _childO.GetComponent <MeshRenderer>().material = greenColor;
                        }
                        if (isHost)
                        {
                            theyWin.transform.position = otherplayer.transform.position * 1.48f;
                            theyWin.transform.LookAt(otherplayer.transform);
                        }
                    }
                    else
                    {
                        GameObject otherplayer = GameObject.Find(game.players[i]);
                        otherplayer.GetComponent <MeshRenderer>().enabled   = false;
                        otherplayer.GetComponent <MeshCollider>().convex    = true;
                        otherplayer.GetComponent <MeshCollider>().isTrigger = true;
                        foreach (Transform _childO in otherplayer.transform)
                        {
                            _childO.GetComponent <MeshRenderer>().material = playerColor;
                        }
                    }
                }
            });
        });
    }