/// <summary> Executes the fight operation.</summary>
    private void Fight()
    {
        attackTarget = nearbyEnemies[0];

        float distance;

        try
        {
            distance = Vector2.Distance(transform.position, attackTarget.transform.position);
        }
        catch (NullReferenceException e)
        {
            e.ToString();
            return;
        }

        if (distance < Range)
        {
            isMoving = false;
            Shoot(attackTarget);
        }
        else
        {
            Vector2 dir = attackTarget.transform.position - transform.position;
            dir.Normalize();

            dir *= (distance - Range);



            MoveTo((Vector2)transform.position + dir);
        }
    }
    void OnCollisionEnter(Collision c)
    {
        Solider s = c.gameObject.GetComponent <Solider>();

        if (s != null)
        {
            switch (type)
            {
            case (PowerUpType.Damage):

                StartCoroutine(s.ApplyEffect(Solider.EffectType.Damage, EffectAmount, EffectDuration));

                break;

            case (PowerUpType.Health):

                StartCoroutine(s.ApplyEffect(Solider.EffectType.Health, EffectAmount, EffectDuration));

                break;

            case (PowerUpType.Speed):

                StartCoroutine(s.ApplyEffect(Solider.EffectType.Speed, EffectAmount, EffectDuration));

                break;
            }
        }
    }
    /// <summary> Shoots the given target.</summary>
    /// <param name="target"> Target for the Solider.</param>
    public void Shoot(Solider target)
    {
        if (!isMoving && canShoot)
        {
            if ((target.transform.position - transform.position).magnitude < Range)
            {
                float angle = 0;

                Vector2 diff = target.transform.position - transform.position;

                angle = Mathf.Atan2(diff.y, diff.x);

                angle *= Mathf.Rad2Deg;

                //Debug.Log( "Angle: " + angle );

                transform.rotation = Quaternion.Euler(0, 0, angle);

                //Random 50% change to hit

                float chance = Random.Range(0.0f, 100.0f);

                if (chance > 50)
                {
                    target.ApplyDamage(Damage + EffectedDamage);
                }

                canShoot = false;

                StartCoroutine(shotWaitTime());
            }
        }
    }
示例#4
0
    public static void PostData(string nick, Vector3 pos, Vector3 velocity)
    {
        var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://52.171.228.182/api/game");

        httpWebRequest.ContentType = "application/json";
        httpWebRequest.Method      = "POST";
        using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
        {
            Solider pc = new Solider
            {
                Nick = nick,
                pos  = new PosVextor3 {
                    X = pos.x, Y = pos.y, Z = pos.z
                },
                velocity = new PosVextor3 {
                    X = velocity.x, Y = velocity.y, Z = velocity.z
                }
            };
            string json = JsonConvert.SerializeObject(pc);
            streamWriter.Write(json);
        }
        var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();

        using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
        {
            var result = streamReader.ReadToEnd();
        }
    }
示例#5
0
 public IActionResult Post([FromBody] Solider solider)
 {
     if (solider != null)
     {
         list.Add(solider);
     }
     return(Ok());
 }
        public void getXMLTest()
        {
            System.Diagnostics.Trace.WriteLine("TEST START");
            Solider  testSolider1 = new Solider("Jeff", "Banister", "BA1234", false, 5.6, 125, 'M');
            PoolData testData1    = new PoolData(testSolider1, DateTime.Now, PoolData.Pool.CRCM);

            System.Diagnostics.Trace.WriteLine(testData1.getXML().ToString());
            Assert.Fail();
        }
示例#7
0
    public static Solider GetData(string nick)
    {
        string         url     = string.Format("http://52.171.228.182/api/game/{0}", nick);
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

        request.Method = "GET";
        var     webResponse    = request.GetResponse();
        var     webStream      = webResponse.GetResponseStream();
        var     responseReader = new StreamReader(webStream);
        string  response       = responseReader.ReadToEnd();
        Solider pc             = JsonConvert.DeserializeObject <Solider>(response);

        responseReader.Close();
        return(pc);
    }
示例#8
0
    public Unit CreateUnit(float x, float y, GameObject prefab, bool isFriendly)
    {
        Vector3 position = new Vector3(x, y, 0);
        var     solider  = new Solider
        {
            Prefab = Object.Instantiate(prefab)
        };

        _cost                   = 10;
        solider.Data.Cost       = _cost;
        solider.Data.IsFriendly = isFriendly;
        solider.Prefab.transform.SetPositionAndRotation(position, solider.Prefab.transform.rotation);
        solider.Prefab.GetComponent <UnitController>().SetDestination(position);

        return(solider);
    }
示例#9
0
    void OnCollisionEnter(Collision c)
    {
        Solider s = c.gameObject.GetComponent <Solider>();

        if (s != null)
        {
            switch (type)
            {
            case (TrapType.Bear):
                s.ApplyDamage(EffectAmount);
                break;

            case (TrapType.Snare):
                StartCoroutine(s.ApplyEffect(Solider.EffectType.Speed, EffectAmount, Duration));
                break;
            }
        }
    }
    /// <summary> Executes the fight operation.</summary>
    private void Fight()
    {
        attackTarget = nearbyEnemies[ 0 ];

        float distance;
        try
        {
            distance = Vector2.Distance( transform.position, attackTarget.transform.position );
        }
        catch ( NullReferenceException e )
        {
            e.ToString();
            return;
        }

        if ( distance < Range )
        {
            isMoving = false;
            Shoot( attackTarget );
        }
        else
        {
            Vector2 dir = attackTarget.transform.position - transform.position;
            dir.Normalize();

            dir *= ( distance - Range );

            MoveTo( (Vector2)transform.position + dir );
        }
    }
    /// <summary> Shoots the given target.</summary>
    /// <param name="target"> Target for the Solider.</param>
    public void Shoot( Solider target )
    {
        if ( !isMoving && canShoot )
        {

            if ( ( target.transform.position - transform.position ).magnitude < Range )
            {

                float angle = 0;

                Vector2 diff = target.transform.position - transform.position;

                angle = Mathf.Atan2( diff.y, diff.x );

                angle *= Mathf.Rad2Deg;

                //Debug.Log( "Angle: " + angle );

                transform.rotation = Quaternion.Euler( 0, 0, angle );

                //Random 50% change to hit

                float chance = Random.Range( 0.0f, 100.0f );

                if ( chance > 50 )
                {
                    target.ApplyDamage( Damage + EffectedDamage );
                }

                canShoot = false;

                StartCoroutine( shotWaitTime() );
            }
        }
    }
 public void RegisterSolider( Solider s )
 {
     Teams[ s.AssignedTeam ].Add( s );
 }
 public void DeregisterSolider( Solider s )
 {
     Teams[ s.AssignedTeam ].Remove( s );
 }
 public void DeregisterSolider(Solider s)
 {
     Teams[s.AssignedTeam].Remove(s);
 }
 public void RegisterSolider(Solider s)
 {
     Teams[s.AssignedTeam].Add(s);
 }