public void Run(bool debug, int portOffset, TankMovement mv, TankObservation obv, TankShooting shoot, GenerateMaze generateMaze) { DebugMode = debug; m_Movement = mv; m_Observation = obv; m_Shooting = shoot; m_GenerateMaze = generateMaze; m_running = true; m_portOffset = portOffset; m_ControllerClient = new UdpClient(CONTROL_PORT + m_portOffset); //m_ObservationClient = new UdpClient(OBSERVATION_PORT + m_portOffset); m_ipEndPoint = new IPEndPoint(IPAddress.Any, OBSERVATION_PORT + m_portOffset); var debugString = DebugMode ? "Debug" : ""; var startString = $"Starting {debugString} Server: {m_ipEndPoint.Address}"; Debug.Log(startString); // Control thread ThreadStart controlThreadDelegate = new ThreadStart(ControlListener); Thread controlThread = new Thread(controlThreadDelegate); controlThread.Start(); // Obervation thread ThreadStart observationThreadDelegate = new ThreadStart(ObservationListener); Thread observationThread = new Thread(observationThreadDelegate); observationThread.Start(); }
public float distanceToFlag; //can change to public getter and setters instead public void Setup(Transform spawnPoint, Transform flag, GenerateMaze generateMaze) { //sets random spawn point for tank this.spawnPoint = m_SpawnPoint.position; m_GenerateMaze = generateMaze; m_Movement = m_Instance.GetComponent <TankMovement>(); m_Movement.m_PlayerNumber = teamNumber; m_Shooting = m_Instance.GetComponent <TankShooting>(); m_Shooting.m_PlayerNumber = teamNumber; //UI Healthbar manager m_Health = m_Instance.GetComponent <TankHealth>(); healthCanvas = GameObject.FindGameObjectWithTag("HealthBar" + teamNumber); m_Health.ui_HealthSlider = healthCanvas.GetComponentInChildren <Slider>(); //Kill count Ui manager killCountCanvas = GameObject.FindGameObjectWithTag("KillCount" + teamNumber); killCount = killCountCanvas.GetComponent <Text>(); killCount.text = "KILL COUNT: " + getKillCount().ToString();//Not updating for some reason // Observation m_tankObservation = m_Instance.GetComponent <TankObservation>(); m_tankObservation.SetFlag(flag); m_Instance.GetComponentsInChildren <ScreenshotHandler>()[0].SetScreenshotName($"Player{teamNumber}"); // Player server m_playerServer = new PlayerServer(); m_Movement.m_PlayerNumber = m_PlayerNumber; m_Shooting.m_PlayerNumber = m_PlayerNumber; m_CanvasGameObject = m_Instance.GetComponentInChildren <Canvas>().gameObject; if (teamNumber == 1) { m_PlayerColor = Color.red; } else if (teamNumber == 2) { m_PlayerColor = Color.blue; } else //this one shouldn't matter so long as I did the mod operation correctly { m_PlayerColor = Color.black; } m_ColoredPlayerText = "<color=#" + ColorUtility.ToHtmlStringRGB(m_PlayerColor) + ">TEAM " + teamNumber + "</color>"; //html like text to handle the text colour MeshRenderer[] renderers = m_Instance.GetComponentsInChildren <MeshRenderer>(); //gets all mesh renderers in tank prefab //set all renderers in tank's meshrenderers to the player's colour for (int i = 0; i < renderers.Length; i++) { renderers[i].material.color = m_PlayerColor; } }