public override void Execute(TemplateControllerCustom _controller, float _delta = 0)
    {
        if (!_controller.gameObject.activeSelf)
        {
            return;
        }

        TemplateUnits unit = _controller as TemplateUnits;

        if (unit.targetPosition == vectorZero)
        {
            if (checkIsAlive)
            {
                if (!CityMaster.instance.IsBuildAlive(this.buildTag))
                {
                    return;
                }
            }

            if (CityMaster.instance.HasFreeSlot(this.buildTag))
            {
                ConstructionData data = CityMaster.instance.FindBuild(this.buildTag);

                unit.targetPosition   = data.obj.transform.position;
                unit.targetPosition.y = _controller.transform.position.y;
                unit.targetBuild      = this.buildTag;
                unit.targetBuildData  = data;

                unit.agent.SetDestination(unit.targetPosition);
            }
        }
    }
Exemple #2
0
    public override void Execute(TemplateControllerCustom _controller, float _delta = 0)
    {
        Guards unit = _controller as Guards;

        if (!CityMaster.instance.HasAttackers())
        {
            if (unit.targetEnemys.Count > 0)
            {
                return;
            }

            Collider[] colliders = Physics.OverlapSphere(unit.transform.position, this.radius, this.mask);

            for (int count = 0; count < colliders.Length; count++)
            {
                unit.AddTarget(TargetType.Close, colliders[count].gameObject);
            }

            return;
        }

        if (unit.targetEnemys.Count > 0 && unit.targetEnemys[0].type != TargetType.Attacker)
        {
            unit.targetEnemys.Clear();
        }

        TemplateUnits enemy = CityMaster.instance.GetAttacker();

        if (enemy != null && !unit.HasTarget(TargetType.Attacker, enemy.gameObject))
        {
            unit.AddTarget(TargetType.Attacker, enemy.gameObject);
        }
    }
    public override void Execute(TemplateControllerCustom _controller, float _delta = 0)
    {
        if (!(_controller is TemplateUnits))
        {
            return;
        }

        TemplateUnits units = _controller as TemplateUnits;

        if (units.targetEnemys.Count > 0)
        {
            return;
        }

        Collider[] colliders = Physics.OverlapSphere(units.transform.position, this.radius, this.mask);

        for (int count = 0; count < colliders.Length; count++)
        {
            if (!colliders[count].gameObject.activeSelf)
            {
                continue;
            }

            units.AddTarget(this.type, colliders[count].gameObject);
        }
    }
Exemple #4
0
    public override void Execute(TemplateControllerCustom _controller, float _delta = 0)
    {
        TemplateUnits unit = _controller as TemplateUnits;


        if (Vector3.Distance(unit.transform.position, unit.agent.destination) > unit.attackDistance || (unit.targetEnemy == null && unit.targetBuild == null))
        {
            return;
        }

        if (unit.currAttackCoolDown <= 0)
        {
            if (unit.targetEnemy != null)
            {
                unit.targetEnemy.ApplyDamage(unit, unit.attackDamage);
                unit.anim.Play("Attack");
                unit.currAttackCoolDown = unit.attackCoolDown;
            }
            else if (unit.targetBuild != null)
            {
                CityMaster.instance.AttackBuild(unit.attackDamage, unit.targetBuild, unit);
                unit.currAttackCoolDown = unit.attackCoolDown;
            }
        }

        unit.currAttackCoolDown -= _delta;
    }
Exemple #5
0
    public override void Execute(TemplateControllerCustom _controller, float _delta = 0)
    {
        Vector3 totalMovement = this.vectorZero;

        if (this.mousePosition.value.x < this.threshold && this.cameraHolder.value.position.x > this.minPosition.x)
        {
            totalMovement += -this.vectorRight * Mathf.Clamp(this.speed * Mathf.Abs(1 - (this.mousePosition.value.x / this.threshold)), this.minSpeed, this.maxSpeed);
        }
        else if (this.mousePosition.value.x > Screen.width - this.threshold && this.cameraHolder.value.position.x < this.maxPosition.x)
        {
            float posMouse = Mathf.Abs(this.mousePosition.value.x - (Screen.width - this.threshold));
            totalMovement += this.vectorRight * Mathf.Clamp(this.speed * (posMouse / this.threshold), this.minSpeed, this.maxSpeed);
        }

        if (this.mousePosition.value.y < this.threshold && this.cameraHolder.value.position.z > this.minPosition.z)
        {
            totalMovement += -this.vectorForward * Mathf.Clamp(this.speed * Mathf.Abs(1 - (this.mousePosition.value.y / this.threshold)), this.minSpeed, this.maxSpeed);
        }
        else if (this.mousePosition.value.y > Screen.height - this.threshold && this.cameraHolder.value.position.z < this.maxPosition.z)
        {
            float posMouse = Mathf.Abs(this.mousePosition.value.y - (Screen.height - this.threshold));
            totalMovement += this.vectorForward * Mathf.Clamp((this.speed * (posMouse / this.threshold)), this.minSpeed, this.maxSpeed);
        }

        if (totalMovement != this.vectorZero)
        {
            this.cameraHolder.value.position += totalMovement * _delta;
        }
    }
 public override void Execute(TemplateControllerCustom _controller, float _delta = 0)
 {
     if (Input.GetKey(KeyCode.Escape))
     {
         this.escEvent.Raise();
     }
 }
Exemple #7
0
    public override void Execute(TemplateControllerCustom _controller, float _delta = 0)
    {
        TemplateUnits unit = _controller as TemplateUnits;

        Vector3 targetPosition = this.vectorZero;

        if (unit.targetEnemy != null)
        {
            targetPosition = unit.targetEnemy.transform.position;
        }
        else if (unit.targetBuildData != null && unit.targetBuildData.obj != null)
        {
            targetPosition = unit.targetBuildData.obj.transform.position;
        }
        else
        {
            targetPosition = unit.agent.destination;
        }

        Vector3 direction = (targetPosition - unit.transform.position).normalized;

        direction.y = 0;

        Quaternion lookRotation = Quaternion.LookRotation(direction);

        unit.transform.rotation = Quaternion.Slerp(unit.transform.rotation, lookRotation, Time.deltaTime * this.rotationSpeed);
    }
    public override void Execute(TemplateControllerCustom _controller, float _delta = 0)
    {
        TemplateUnits unit = _controller as TemplateUnits;

        unit.targetPosition  = this.vectorZero;
        unit.targetBuild     = null;
        unit.targetBuildData = null;
    }
    public override bool CheckCondition(TemplateControllerCustom _object)
    {
        if (Physics.CheckSphere(_object.transform.position, this.radius, this.layerEnemys))
        {
            return(true);
        }

        return(false);
    }
Exemple #10
0
    public override void Execute(TemplateControllerCustom _controller, float _delta = 0)
    {
        TemplateUnits unit = _controller as TemplateUnits;

        if (CityMaster.instance.HideInBuild(unit.targetBuild, unit))
        {
            unit.isHidden = true;
            unit.gameObject.SetActive(false);
        }
    }
Exemple #11
0
    public override bool CheckCondition(TemplateControllerCustom _object)
    {
        TemplateUnits guard = _object as TemplateUnits;

        if (guard.targetEnemys.Count <= 0)
        {
            return(true);
        }

        return(false);
    }
Exemple #12
0
    public override bool CheckCondition(TemplateControllerCustom _object)
    {
        TemplateUnits units = _object as TemplateUnits;

        if (!units.isAlive)
        {
            return(true);
        }

        return(false);
    }
Exemple #13
0
    public override void Execute(TemplateControllerCustom _controller, float _delta = 0)
    {
        TemplateUnits unit = _controller as TemplateUnits;

        if (unit.targetPosition == vectorZero)
        {
            unit.targetPosition   = Random.insideUnitSphere * this.data.Radius;
            unit.targetPosition.y = _controller.transform.position.y;
            unit.agent.SetDestination(unit.targetPosition);
        }
    }
    public override bool CheckCondition(TemplateControllerCustom _object)
    {
        TemplateUnits units = _object as TemplateUnits;

        if (Vector3.Distance(units.agent.destination, units.transform.position) < units.agent.stoppingDistance && units.targetPosition != vectorZero)
        {
            return(true);
        }

        return(false);
    }
 public override void Execute(TemplateControllerCustom _controller, float _delta = 0)
 {
     if (Input.GetButtonDown("Fire2"))
     {
         this.rightclickDownEvent.Raise();
     }
     else if (Input.GetButtonUp("Fire2"))
     {
         this.rightclickUpEvent.Raise();
     }
 }
    public override void Execute(TemplateControllerCustom _controller, float _delta = 0)
    {
        TemplateUnits unit = _controller as TemplateUnits;

        if (unit.targetEnemy != null)
        {
            if (unit.targetEnemy.isHidden)
            {
                unit.targetEnemy = null;
                unit.targetEnemys.RemoveAt(0);
            }
        }
    }
Exemple #17
0
    public override void Execute(TemplateControllerCustom _controller, float _delta = 0)
    {
        if (this.mouseScroll.value != 0)
        {
            Vector3 cameraPos = this.cameraHolder.value.position;

            cameraPos.y = Mathf.Lerp(cameraPos.y, cameraPos.y + this.mouseScroll.value * this.speed, this.speed * _delta);
            Debug.Log(cameraPos.y);

            cameraPos.y = Mathf.Clamp(cameraPos.y, this.minY, this.maxY);

            this.cameraHolder.value.position = cameraPos;
        }
    }
Exemple #18
0
    public override bool CheckCondition(TemplateControllerCustom _object)
    {
        if (!Physics.CheckSphere(_object.transform.position, this.radius, this.layerEnemys))
        {
            TemplateUnits unit = _object as TemplateUnits;

            if (this.CheckHidden && unit.isHidden)
            {
                return(false);
            }

            return(true);
        }

        return(false);
    }
    public override bool CheckCondition(TemplateControllerCustom _object)
    {
        TemplateUnits unit = _object as TemplateUnits;

        if (!Physics.CheckSphere(_object.transform.position, this.radius, this.layerEnemys))
        {
            if (Time.timeSinceLevelLoad - unit.TimeSinceLastEnemy < this.maxTimeWithoutEnemys)
            {
                return(false);
            }

            return(true);
        }

        unit.TimeSinceLastEnemy = Time.timeSinceLevelLoad;

        return(false);
    }
    public override void Execute(TemplateControllerCustom _controller, float _delta = 0)
    {
        TemplateUnits unit = _controller as TemplateUnits;

        if (unit.lastAttacker != null)
        {
            if (!unit.lastAttacker.isAlive)
            {
                unit.lastAttacker = null;
                return;
            }

            unit.targetEnemys.Clear();

            unit.targetEnemy = unit.lastAttacker;
            unit.AddTarget(TargetType.Attacker, unit.lastAttacker.gameObject);

            unit.agent.SetDestination(unit.lastAttacker.transform.position);
        }
    }
Exemple #21
0
    public override bool CheckCondition(TemplateControllerCustom _object)
    {
        TemplateUnits units = _object as TemplateUnits;

        if (units.targetBuild == null)
        {
            return(false);
        }

        float distance = Vector3.Distance(units.targetPosition, units.transform.position);

        if (distance < this.minDistance)
        {
            if (this.checkUnitsSlot && !CityMaster.instance.HasFreeSlot(units.targetBuild))
            {
                return(false);
            }

            return(true);
        }

        return(false);
    }
    public override void Execute(TemplateControllerCustom _controller, float _delta = 0)
    {
        if (!_controller.gameObject.activeSelf)
        {
            return;
        }

        TemplateUnits unit = _controller as TemplateUnits;

        if (unit.targetPosition == vectorZero)
        {
            if (unit.targetBuild == null)
            {
                Vector3 newPosition = unit.transform.forward * Random.Range(this.distance, this.distance);
                newPosition += unit.transform.right * Random.Range(-this.distance, this.distance);

                unit.targetPosition   = newPosition;
                unit.targetPosition.y = _controller.transform.position.y;
                unit.targetBuild      = null;

                unit.agent.SetDestination(unit.targetPosition);
            }
        }
    }
Exemple #23
0
    public override void Execute(TemplateControllerCustom _controller, float _delta = 0)
    {
        if (!_controller.gameObject.activeSelf)
        {
            return;
        }

        TemplateUnits unit = _controller as TemplateUnits;

        if (unit.targetPosition == vectorZero)
        {
            ConstructionData data = CityMaster.instance.GetClosestBuild(_controller.transform.position);

            if (data != null)
            {
                unit.targetPosition   = data.obj.transform.position;
                unit.targetPosition.y = _controller.transform.position.y;
                unit.targetBuild      = data.ID;
                unit.targetBuildData  = data;

                unit.agent.SetDestination(unit.targetPosition);
            }
        }
    }
Exemple #24
0
    public override void Execute(TemplateControllerCustom _controller, float _delta = 0)
    {
        if (!AIMaster.instance.HasStarted())
        {
            return;
        }

        if (this.currUnits.value >= this.totalUnits.value)
        {
            this.remainCoolDown = this.cooldown;
            return;
        }

        this.remainCoolDown        -= _delta;
        this.addUnitTimerPerc.value = this.remainCoolDown / this.cooldown;

        if (this.remainCoolDown <= 0)
        {
            this.currUnits.value++;
            this.remainCoolDown = this.cooldown;

            this.uiEvent.Raise();
        }
    }
Exemple #25
0
    public override void Execute(TemplateControllerCustom _controller, float _delta = 0)
    {
        if (!(_controller is TemplateUnits))
        {
            return;
        }

        TemplateUnits unit = _controller as TemplateUnits;

        if (unit.targetEnemys.Count <= 0)
        {
            return;
        }

        if (unit.targetEnemys[0].obj == null)
        {
            unit.targetEnemys.RemoveAt(0);
            return;
        }


        if (unit.targetEnemys[0].type != TargetType.Construction)
        {
            if (unit.targetEnemy == null)
            {
                unit.targetEnemy = unit.targetEnemys[0].obj.GetComponent <TemplateUnits>();
                unit.agent.SetDestination(unit.targetEnemy.transform.position);
                return;
            }

            if (Vector3.Distance(unit.agent.destination, unit.targetEnemy.transform.position) > Threshold)
            {
                unit.agent.SetDestination(unit.targetEnemy.transform.position);
            }

            if (!unit.targetEnemy.isAlive)
            {
                unit.targetEnemy = null;
                unit.targetEnemys.RemoveAt(0);
            }
        }
        else
        {
            if (unit.targetBuild == null)
            {
                ConstructionData data = CityMaster.instance.FindBuildByGameObject(unit.targetEnemys[0].obj);

                unit.targetBuild     = data.ID;
                unit.targetBuildData = data;

                unit.agent.SetDestination(unit.targetBuildData.obj.transform.position);
            }

            if (!CityMaster.instance.IsBuildAlive(unit.targetBuild))
            {
                unit.targetBuild     = null;
                unit.targetBuildData = null;
                unit.targetEnemys.RemoveAt(0);
            }
        }
    }
    public override void Execute(TemplateControllerCustom _controller, float _delta = 0)
    {
        TemplateUnits unit = _controller as TemplateUnits;

        unit.anim.SetFloat(this.VariableName, unit.agent.velocity.magnitude);
    }
 public override void Execute(TemplateControllerCustom _controller, float _delta = 0)
 {
     this.mousePosition.value = Input.mousePosition;
 }
Exemple #28
0
    public override void Execute(TemplateControllerCustom _controller, float _delta = 0)
    {
        TemplateUnits unit = _controller as TemplateUnits;

        UIManager.instance.AddUnit(unit, this.color, unit.offsetUI);
    }
    public override void Execute(TemplateControllerCustom _controller, float _delta = 0)
    {
        TemplateUnits unit = _controller as TemplateUnits;

        unit.agent.stoppingDistance = this.stopDistance;
    }
Exemple #30
0
 public override bool CheckCondition(TemplateControllerCustom _object)
 {
     return(!CityMaster.instance.HasAttackers());
 }