Esempio n. 1
0
    //создание и заполнение карты, основываясь на данных из базы данных
    void Start()
    {
        NetworkDBwork data = Camera.main.GetComponent <NetworkDBwork>();

        data.OnSceneLoad();


        if (PhotonNetwork.isMasterClient)
        {
            NetworkStreetPath[] pathForBuys = data.GetAllPaths();
            for (int i = 1; i < pathForBuys.Length; i++)
            {
                GameObject newStreetPath = Instantiate(emptyStreet) as GameObject;
                newStreetPath.name = "StreetPath" + i;
                BoxCollider coll = newStreetPath.GetComponent <BoxCollider>();
                coll.size = new Vector3(GetVectorLength(pathForBuys[i].end - pathForBuys[i].start), 3, 8);

                if (pathForBuys[i].canBuy)
                {
                    newStreetPath.AddComponent <NetworkPathForBuy>();
                    newStreetPath.GetComponent <NetworkPathForBuy>().TakeData(data.GetPathForBuy(i));
                    newStreetPath.GetComponent <NetworkPathForBuy>().GetNeighbors();
                    data.updatePath(newStreetPath.GetComponent <NetworkPathForBuy>());
                }
                else
                {
                    newStreetPath.AddComponent <NetworkGovermentPath>();
                    newStreetPath.GetComponent <NetworkGovermentPath>().TakeData(data.GetGovermentPath(i));
                    if (newStreetPath.GetComponent <NetworkGovermentPath>().GetNameOfPrefab().Equals("Court"))
                    {
                        data.SetCourt(newStreetPath.GetComponent <NetworkGovermentPath>());
                    }
                    newStreetPath.GetComponent <NetworkGovermentPath>().GetNeighbors();
                    data.updatePath(newStreetPath.GetComponent <NetworkGovermentPath>());
                }
                newStreetPath.transform.rotation =
                    Quaternion.Euler(0f, Angle(pathForBuys[i].start, pathForBuys[i].end), 0f);
                newStreetPath.transform.position = GetCenter(pathForBuys[i].start, pathForBuys[i].end);
            }

            NetworkBuild[] builds = data.GetAllBuilds();

            for (int i = 1; i < builds.Length; i++)
            {
                GameObject newBuild = Instantiate(emptyBuild) as GameObject;
                newBuild.name = builds[i].NameBuild;

                newBuild.AddComponent <NetworkBuild>();
                newBuild.GetComponent <NetworkBuild>().TakeData(builds[i]);
                data.updateBuild(newBuild.GetComponent <NetworkBuild>());

                newBuild.transform.rotation = data.GetPathById(builds[i].IdStreetPath).transform.rotation;
                newBuild.transform.position = newBuild.GetComponent <NetworkBuild>().Place;
                newBuild.SetActive(newBuild.GetComponent <NetworkBuild>().Enable);
            }


            NetworkPlayer[] players = data.GetAllPlayers();

            for (int j = 1; j < players.Length; j++)
            {
                Debug.Log(players[j].NickName + "   " + players[j].isBot);
                int id1 = PhotonNetwork.AllocateViewID();
                if (!players[j].IsBot())
                {
                    GameObject newPlayer = Instantiate(emptyPlayer) as GameObject;
                    newPlayer.GetComponent <NetworkPlayer>().GetData(players[1]);
                    newPlayer.GetComponent <NetworkPlayer>().ViewId = id1;
                    newPlayer.transform.position = players[j].Destination;
                    data.updatePlayer(newPlayer.GetComponent <NetworkPlayer>());
                    transform.Find("/Town").GetComponent <Cameras>()
                    .SetCamera(newPlayer.GetComponentInChildren <Camera>());
                    newPlayer.GetComponent <PhotonView>().viewID = id1;
                }
                else
                {
                    GameObject newBot = Instantiate(emptyBot) as GameObject;
                    newBot.GetComponent <NetworkBot>().GetData(players[j]);
                    newBot.GetComponent <NetworkBot>().ViewId = id1;
                    newBot.transform.position = players[j].Destination;
                    data.updatePlayer(newBot.GetComponent <NetworkBot>());
                    newBot.GetComponent <PhotonView>().viewID = id1;
                }
            }

            data.createWays();
        }
        else
        {
            StartCoroutine(WaitForUpdate());
        }
    }