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();
    }
Beispiel #2
0
    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;
        }
    }