override public void Update(cl_Sector Sector)
 {
     base.Update(Sector);
     position += direction * speed * Time.deltaTime;
     if (target == null)
     {
         if (targetTimer < 10)
         {
             targetTimer += Time.deltaTime;
         }
         else
         {
             if (Random.Range(0, 10) == 0)
             {
                 List <int> targetWeights = new List <int>();
                 for (int i = 0; i < Sector.sectorObjects.Count; i++)
                 {
                     if (Sector.sectorObjects[i].tags.Contains(PLAYER) || Sector.sectorObjects[i].tags.Contains(TRADER))
                     {
                         targetWeights.Add(i);
                     }
                 }
                 target = Sector.sectorObjects[targetWeights[Random.Range(0, targetWeights.Count)]];
             }
             targetTimer -= 10;
         }
     }
     else
     {
         for (int i = 0; i < weapons.Count; i++)
         {
             AttackShip(target, i);
         }
     }
 }
Пример #2
0
 public override void Damaged(cl_Weapon Weapon, cl_SectorObject attacker)
 {
     base.Damaged(Weapon, attacker);
     if (hp <= 0)
     {
         OnDestroy(attacker);
     }
 }
 //Class Methods
 protected override void OnDestroy(cl_SectorObject Attacker)
 {
     base.OnDestroy(Attacker);
     if (Attacker.tags.Contains(PLAYER))
     {
         Attacker.GetVar <PlayerController>(cl_Ship_Player.CONTROLLER).currency += currencyVal;
     }
 }
Пример #4
0
    //Base Methods

    virtual protected void AttackShip(cl_SectorObject Target, int Weapon)
    {
        if (Weapon < weapons.Count && Weapon >= 0)
        {
            if (weapons[Weapon].GetVar <float>(cl_Weapon.COOLDOWNTIMER) >= weapons[Weapon].GetVar <float>(cl_Weapon.COOLDOWN))
            {
                if (Random.value < weapons[Weapon].GetVar <float>(cl_Weapon.ACCURACY) * (1.0f - evasion))
                {
                    Target.Damaged(weapons[Weapon], this);
                }
            }
        }
        else
        {
            throw new System.Exception("Index " + Weapon + " is not a valid weapon");
        }
    }
Пример #5
0
 void Start()
 {
     gyroContainer = new GameObject("Gyro Container");
     gyroContainer.transform.rotation = Quaternion.Euler(90f, 90f, 0f);
     gyroContainer.transform.position = transform.position;
     rotatation = new Quaternion(0f, 0f, 1f, 0f);
     transform.SetParent(gyroContainer.transform);
     gyroEnabled      = EnableGyro();
     objectManager    = GameObject.FindGameObjectWithTag("GameManager");
     sectorController = objectManager.GetComponent <scr_SectorController>();
     currSector       = sectorController.currSector;
     //sectorObjects = currSector.sectorObjects;
     sectorObjects = sectorController.currSector.sectorObjects;
     hitPlane      = new Plane(transform.forward, transform.forward * distanceToPlane);
     eyeTransform  = eye.GetComponent <Transform>();
     cam           = Camera.FindObjectOfType <Camera>();
     player        = currSector.sectorObjects[0];
 }
Пример #6
0
    //Default methods
    virtual public void Damaged(cl_Weapon Weapon, cl_SectorObject attacker)
    {
        int damageTaken = Weapon.GetVar <int>(cl_Weapon.DAMAGE);

        if (Weapon.tags.Contains(cl_Weapon.PIERCING) == false)
        {
            if (Weapon.tags.Contains(cl_Weapon.EXPLOSIVE))
            {
                damageTaken *= 2;
                shield      -= damageTaken;
                damageTaken  = -(shield / 2);
            }
            else
            {
                shield     -= damageTaken;
                damageTaken = -shield;
            }
        }
        if (damageTaken > 0)
        {
            if (Weapon.tags.Contains(cl_Weapon.KINETIC))
            {
                hp -= damageTaken * 2;
            }
            else
            {
                hp -= damageTaken;
            }

            if (Weapon.tags.Contains(cl_Weapon.ENERGY) == false)
            {
                damageTaken /= 2;
            }
            for (int i = 0; i < damageTaken; i++)
            {
                int target = Random.Range(0, 4 + systems.Count);
                if (target - 4 >= 0)
                {
                    systems[target].Damaged(Weapon);
                }
            }
        }
    }
Пример #7
0
 public void AttackShip(cl_SectorObject Target, int Weapon)
 {
 }
Пример #8
0
    void Update()
    {
        if (gyroEnabled)
        {
            sectorObjects = sectorController.currSector.sectorObjects;
            if (!firstRun)
            {
                for (int i = 0; i < sectorObjects.Count; i++)
                {
                    blips.Add(GameObject.Instantiate(blipPrefab));
                    blipToObjDict.Add(blips[i], sectorObjects[i]);
                }
                firstRun = true;
            }

            blips[0].gameObject.SetActive(false);

            for (int i = 0; i < sectorObjects.Count; i++)
            {
                if (sectorObjects[i].GetVar <int>("HullPoints") <= 0 && sectorObjects[i].tags.Contains("Ship"))
                {
                    sectorObjects.Remove(sectorObjects[i]);
                    GameObject.Destroy(GameObject.FindGameObjectWithTag("Gyro").GetComponent <GyroControl>().blips[i]);
                    GameObject.FindGameObjectWithTag("Gyro").GetComponent <GyroControl>().blips.Remove(GameObject.FindGameObjectWithTag("Gyro").GetComponent <GyroControl>().blips[i]);
                    GameObject.Destroy(GameObject.FindGameObjectWithTag("Gyro").GetComponent <GyroControl>().dispScrn);
                    GameObject.Destroy(GameObject.FindGameObjectWithTag("Gyro").GetComponent <GyroControl>().fireButton);
                    i--;
                }
            }


            if (Input.GetMouseButtonDown(0))
            {
                Vector3    touchPosFar  = new Vector3(Input.mousePosition.x, Input.mousePosition.y, cam.farClipPlane);
                Vector3    touchPosNear = new Vector3(Input.mousePosition.x, Input.mousePosition.y, cam.nearClipPlane);
                Vector3    touchPosF    = cam.ScreenToWorldPoint(touchPosFar);
                Vector3    touchPosN    = cam.ScreenToWorldPoint(touchPosNear);
                RaycastHit rayHit;

                if (Physics.Raycast(touchPosN, touchPosF - touchPosN, out rayHit))
                {
                    if (!rayHit.transform.gameObject.CompareTag("FireButton") && fireButton != null)
                    {
                        Destroy(fireButton);
                    }
                    if (!rayHit.transform.gameObject.CompareTag("TargetButton") && targetButton != null)
                    {
                        Destroy(targetButton);
                    }
                    if (rayHit.transform.gameObject.CompareTag("Radar") && dispScrn != null)
                    {
                        dispScrn.SetActive(false);
                        if (traderButton != null)
                        {
                            Destroy(traderButton);
                        }
                    }
                    else if (rayHit.transform.gameObject.CompareTag("TradeButton"))
                    {
                        traderObjBuffer.CallMethod("OpenShop");
                        Destroy(traderButton);
                    }
                    else if (rayHit.transform.gameObject.CompareTag("FireButton"))
                    {
                        player.CallMethod("AttackShip", pirateObjBuffer, 0);
                        dispScrn.GetComponentInChildren <TMPro.TextMeshProUGUI>().text = pirateObjBuffer.GetVar <int>("HullPoints").ToString();
                        //Debug.Log(pirateObjBuffer.GetVar<int>("HullPoints"));
                    }
                    else if (rayHit.transform.gameObject.CompareTag("TargetButton"))
                    {
                        List <cl_Weapon> tempWeps = new List <cl_Weapon>();
                        //int listCount = currSector.sectorObjects[0].GetVar<int>("Weapons");
                        //for(int i = 0; i < listCount; i++)
                        //{
                        //tempWeps.Add(currSector.sectorObjects[0].GetVarIndex<cl_Weapon>("Weapons", 0));
                        //}
                        tempWeps.Add(new cl_W_LowDmg());
                        ((cl_Ship_Pirate)pirateObjBuffer).Target(tempWeps);
                        Destroy(targetButton);
                    }
                    else if (rayHit.transform.gameObject.CompareTag("Blip"))
                    {
                        if (traderButton != null)
                        {
                            Destroy(traderButton);
                        }
                        cl_SectorObject tempObj = blipToObjDict[rayHit.transform.gameObject];

                        if (dispScrn == null)
                        {
                            dispScrn     = GameObject.Instantiate(dispScrnPrefab);
                            dispScrnInfo = dispScrn.GetComponentInChildren <TMPro.TextMeshProUGUI>();
                            string tempStr = "";
                            for (int i = 0; i < tempObj.tags.Count; i++)
                            {
                                if (tempStr != "")
                                {
                                    tempStr += " ";
                                }
                                tempStr += tempObj.tags[i];
                            }
                            dispScrnInfo.text = tempStr;
                        }
                        else
                        {
                            dispScrn.SetActive(true);
                            string tempStr = "";
                            for (int i = 0; i < tempObj.tags.Count; i++)
                            {
                                if (tempStr != "")
                                {
                                    tempStr += " ";
                                }
                                tempStr += tempObj.tags[i];
                            }
                            dispScrnInfo.text = tempStr;
                        }

                        if (tempObj.tags.Contains("Trader"))
                        {
                            if (traderButton != null)
                            {
                                Destroy(traderButton);
                            }
                            if (targetButton != null)
                            {
                                Destroy(targetButton);
                            }
                            traderButton    = GameObject.Instantiate(traderButtonPrefab);
                            traderObjBuffer = tempObj;
                        }
                        if (tempObj.tags.Contains("Pirate"))
                        {
                            if (targetButton != null)
                            {
                                Destroy(targetButton);
                            }
                            if (traderButton != null)
                            {
                                Destroy(traderButton);
                            }
                            targetButton    = GameObject.Instantiate(targetButtonPrefab);
                            pirateObjBuffer = tempObj;
                        }

                        for (int i = 0; i < tempObj.tags.Count; i++)
                        {
                            Debug.Log(tempObj.tags[i]);
                        }
                    }
                }
            }

            distanceToQuad          = quad.transform.position.z - transform.position.z;
            transform.localRotation = gyro.attitude * rotatation;
            hitPlane.SetNormalAndPosition(transform.forward, transform.forward * distanceToPlane);

            Debug.DrawLine(transform.position, hitPlane.ClosestPointOnPlane(transform.position), Color.red, 0.0f, false);

            for (int i = 0; i < sectorObjects.Count; i++)
            {
                float distanceToObject;
                Ray   ray = new Ray(transform.position, sectorObjects[i].position);

                if (hitPlane.Raycast(ray, out distanceToObject))
                {
                    Vector3 v = ray.GetPoint(distanceToObject);
                    eyeTransform.rotation       = transform.rotation;
                    blips[i].transform.position = v;
                    blips[i].transform.SetParent(eyeTransform, false);
                    eyeTransform.rotation = new Quaternion(0, 0, 0, 0);
                    blips[i].transform.SetParent(eyeTransform, true);
                    Vector3 blipV = blips[i].transform.position;
                    if (blipV.x < -0.5f ||
                        blipV.x > 0.5f ||
                        blipV.y < -0.5f ||
                        blipV.y > 0.5f)
                    {
                        blips[i].GetComponent <Renderer>().enabled = false;
                    }
                    else
                    {
                        blips[i].GetComponent <Renderer>().enabled = true;
                    }
                }
                else
                {
                    blips[i].GetComponent <Renderer>().enabled = false;
                }
            }
        }
    }
Пример #9
0
 virtual protected void OnDestroy(cl_SectorObject Attacker)
 {
 }
Пример #10
0
    void Update()
    {
        if (gyroEnabled)
        {
            sectorObjectsVis = sectorController.sectorObjects;
            if (!firstRun)
            {
                for (int i = 0; i < sectorObjectsVis.Count; i++)
                {
                    blips.Add(GameObject.Instantiate(blipPrefab));
                    blipToObjDict.Add(blips[i], sectorObjects[i]);
                }
                firstRun = true;
            }

            if (Input.GetMouseButtonDown(0))
            {
                Vector3    touchPosFar  = new Vector3(Input.mousePosition.x, Input.mousePosition.y, cam.farClipPlane);
                Vector3    touchPosNear = new Vector3(Input.mousePosition.x, Input.mousePosition.y, cam.nearClipPlane);
                Vector3    touchPosF    = cam.ScreenToWorldPoint(touchPosFar);
                Vector3    touchPosN    = cam.ScreenToWorldPoint(touchPosNear);
                RaycastHit rayHit;

                if (Physics.Raycast(touchPosN, touchPosF - touchPosN, out rayHit))
                {
                    if (rayHit.transform.gameObject.CompareTag("Radar") && dispScrn != null)
                    {
                        dispScrn.SetActive(false);
                        if (traderButton != null)
                        {
                            Destroy(traderButton);
                        }
                    }
                    else if (rayHit.transform.gameObject.CompareTag("Button"))
                    {
                        traderObjBuffer.CallMethod("OpenShop");
                        Destroy(traderButton);
                    }
                    else if (rayHit.transform.gameObject.CompareTag("Blip"))
                    {
                        if (traderButton != null)
                        {
                            Destroy(traderButton);
                        }
                        cl_SectorObject tempObj = blipToObjDict[rayHit.transform.gameObject];

                        if (dispScrn == null)
                        {
                            dispScrn     = GameObject.Instantiate(dispScrnPrefab);
                            dispScrnInfo = dispScrn.GetComponentInChildren <TMPro.TextMeshProUGUI>();
                            string tempStr = "";
                            for (int i = 0; i < tempObj.tags.Count; i++)
                            {
                                if (tempStr != "")
                                {
                                    tempStr += " ";
                                }
                                tempStr += tempObj.tags[i];
                            }
                            dispScrnInfo.text = tempStr;
                        }
                        else
                        {
                            dispScrn.SetActive(true);
                            string tempStr = "";
                            for (int i = 0; i < tempObj.tags.Count; i++)
                            {
                                if (tempStr != "")
                                {
                                    tempStr += " ";
                                }
                                tempStr += tempObj.tags[i];
                            }
                            dispScrnInfo.text = tempStr;
                        }

                        if (tempObj.tags.Contains("Trader"))
                        {
                            if (traderButton != null)
                            {
                                Destroy(traderButton);
                            }
                            traderButton    = GameObject.Instantiate(buttonPrefab);
                            traderObjBuffer = tempObj;
                        }

                        for (int i = 0; i < tempObj.tags.Count; i++)
                        {
                            Debug.Log(tempObj.tags[i]);
                        }
                    }
                }
            }

            distanceToQuad          = quad.transform.position.z - transform.position.z;
            transform.localRotation = gyro.attitude * rotatation;
            hitPlane.SetNormalAndPosition(transform.forward, transform.forward * distanceToPlane);

            Debug.DrawLine(transform.position, hitPlane.ClosestPointOnPlane(transform.position), Color.red, 0.0f, false);

            for (int i = 0; i < sectorObjectsVis.Count; i++)
            {
                float distanceToObject;
                Ray   ray = new Ray(transform.position, sectorObjectsVis[i].transform.position);

                if (hitPlane.Raycast(ray, out distanceToObject))
                {
                    Vector3 v = ray.GetPoint(distanceToObject);
                    eyeTransform.rotation       = transform.rotation;
                    blips[i].transform.position = v;
                    blips[i].transform.SetParent(eyeTransform, false);
                    eyeTransform.rotation = new Quaternion(0, 0, 0, 0);
                    blips[i].transform.SetParent(eyeTransform, true);
                    Vector3 blipV = blips[i].transform.position;
                    if (blipV.x < -0.5f ||
                        blipV.x > 0.5f ||
                        blipV.y < -0.5f ||
                        blipV.y > 0.5f)
                    {
                        blips[i].GetComponent <Renderer>().enabled = false;
                    }
                    else
                    {
                        blips[i].GetComponent <Renderer>().enabled = true;
                    }
                }
                else
                {
                    blips[i].GetComponent <Renderer>().enabled = false;
                }
            }
        }
    }