示例#1
0
        public static void Process(PlayerPosition packet)
        {
            Main clientInst = InstanceKeeper.GetMainClient();

            foreach (GameObject gameobject in clientInst.playerShips)
            {
                ZeroGPlayer playerName = gameobject.GetComponent <ZeroGPlayer>();
                try
                {
                    if (playerName.PlayerName == packet.PlayerName)
                    {
                        gameobject.GetComponentInChildren <PlayerObjectConfiguration>().GetShip().transform.position = ConvertCustomTypes.ConvertVectorOriginal(packet.Position);
                        gameobject.GetComponentInChildren <PlayerObjectConfiguration>().GetShip().transform.rotation = ConvertCustomTypes.ConvertQuaternionOriginal(packet.Rotation);
                    }
                }
                catch (Exception ex)
                {
                    WriteLog.Error("Error while processing remote player movement: " + ex.Message + ex.StackTrace);
                }
            }
        }
        public static void Postfix(PlayerCanvas __instance)
        {
            if (Main.IsConnected)
            {
                try
                {
                    WriteLog.General("Da parent GameObject is " + __instance.gameObject.gameObject.transform.parent.gameObject.name + " in scene " + __instance.gameObject.scene.name);
                    foreach (GameObject gameObject in SceneManager.GetActiveScene().GetRootGameObjects())
                    {
                        WriteLog.General("Current GameObject is " + gameObject.name + " in scene " + gameObject.scene.name);
                        if (gameObject.name == "AITargets")
                        {
                            UnityEngine.Object.Destroy(gameObject);
                        }
                        if (gameObject.name == "Players")
                        {
                            WriteLog.General("Found players gameobject");

                            List <string> playersList = new List <string>();
                            Main          clientInst  = InstanceKeeper.GetMainClient();
                            playersList = clientInst.opponentsNames;
                            List <string> addedNames = new List <string>();
                            int           count      = gameObject.transform.GetChildCount();
                            WriteLog.General("Found " + count + " children");
                            for (int counter = 0; counter < count; counter++)
                            {
                                WriteLog.General("Current player : " + counter);
                                foreach (Component component in gameObject.transform.GetChild(counter).gameObject.GetComponentsInChildren <Component>())
                                {
                                    WriteLog.General("TEMP, for testing: found sub-component called " + component.name + " of type " + component.GetType().Name + " and pos " + component.transform.position);
                                }
                                OnShipUI playerUI = gameObject.transform.GetChild(counter).gameObject.GetComponentInChildren <OnShipUI>();
                                if (playerUI == null /* && gameObject.transform.GetChild(counter).gameObject.name=="Player (Clone)"*/)
                                {
                                    WriteLog.General("Found an AI player");
                                    gameObject.transform.GetChild(counter).gameObject.GetComponentInChildren <VehicleBehaviour>().SetAI(false);
                                    foreach (string name in playersList)
                                    {
                                        if (!addedNames.Contains(name) && (File.ReadAllText("username.txt") != name))
                                        {
                                            WriteLog.General("Adding player: " + name);
                                            gameObject.transform.GetChild(counter).gameObject.AddComponent <ZeroGPlayer>();
                                            ZeroGPlayer playerLocalName = gameObject.transform.GetChild(counter).gameObject.GetComponent <ZeroGPlayer>();
                                            playerLocalName.PlayerName = name;
                                            addedNames.Add(name);
                                            goto Endforeach;
                                        }
                                    }
                                    Endforeach :;
                                    clientInst.playerShips.Add(gameObject.transform.GetChild(counter).gameObject);
                                }
                            }
                            InstanceKeeper.SetMainClient(clientInst);
                        }
                    }
                }
                catch (Exception ex)
                {
                    WriteLog.Error("Error while trying to get GameObject, : " + ex.Message + ex.StackTrace);
                }
            }
            else
            {
            }
        }