Ejemplo n.º 1
0
    public override void OnWork(CuboController user)
    {
        PlayerCommands.Get().OnCuboDestroyed();
        user.GetComponentInChildren <Selectable>().enabled = false;

        GameObject model = user.model;

        model.transform.DOPunchScale(new Vector3(1.025f, 0.8f, 1.025f), 0.25f, 0, 2f);

        Sequence seq = DOTween.Sequence();

        seq.Append(model.transform.DOLocalMoveY(5f, sacrificeTime).SetEase(Ease.InQuad));
        seq.Join(model.transform.DOScale(0f, sacrificeTime - 0.4f).SetEase(Ease.InQuad).SetDelay(0.4f));
        seq.Play();

        Camera.main.GetComponent <AudioSource>().PlayOneShot(sacrificeNoise);

        Timing.CallDelayed(sacrificeTime + 0.1f, delegate
        {
            Instantiate(workFxObj, transform.position + Vector3.up * 17f, Quaternion.LookRotation(Vector3.up, Vector3.left));
            power++;
            UIStatic.SetInt(UIStatic.CUR_SACRIFICE, power);
            Destroy(user.gameObject);

            if (power >= goalPower)
            {
                PlayerCommands.Get().Win();
            }
        });
    }
Ejemplo n.º 2
0
    public virtual void OnWork(CuboController user)
    {
        if (workFxObj == null)
        {
            return;
        }

        Instantiate(workFxObj, user.transform.position + Vector3.up * 4f, Quaternion.LookRotation(Vector3.up, Vector3.left));
    }
Ejemplo n.º 3
0
 public override void OnWork(CuboController user)
 {
     base.OnWork(user);
     if (!users.Contains(user))
     {
         users.Add(user);
     }
     PlayerCommands.Get().AddMoney(GetMoneyPerWork(user));
     Camera.main.GetComponent <AudioSource>().PlayOneShot(moneyNoise);
 }
Ejemplo n.º 4
0
    public override void OnWork(CuboController user)
    {
        if (m_health.IsFull())
        {
            return;
        }

        base.OnWork(user);
        m_health.Heal(healPerWork);
        PlaySound(turretRepair);
    }
Ejemplo n.º 5
0
    public override void OnWork(CuboController user)
    {
        if (m_health.IsFull())
        {
            return;
        }

        m_health.Heal(healPerWork);
        Camera.main.GetComponent <AudioSource>().PlayOneShot(repairNoise);
        base.OnWork(user);
    }
Ejemplo n.º 6
0
    private int GetMoneyPerWork(CuboController user)
    {
        int idx = users.IndexOf(user);

        if (idx < 4)
        {
            return(7);
        }
        else if (idx < 8)
        {
            return(6);
        }
        else
        {
            return(5);
        }
    }
Ejemplo n.º 7
0
    private void Start()
    {
        m_curMoney   = startingMoney;
        m_curUIMoney = m_curMoney;

        foreach (Selectable selectable in Selection.selectables)
        {
            CuboController cubo = selectable.GetComponent <CuboController>();
            if (cubo != null)
            {
                m_curCuboCount++;
            }
        }

        foreach (GameObject obj in GameObject.FindGameObjectsWithTag("NoTurretZone"))
        {
            m_noTurretZones.Add(obj.GetComponent <BoxCollider>());
        }
    }
Ejemplo n.º 8
0
 public virtual void LeaveWorkTarget(WorkTarget workTarget, CuboController user)
 {
     workTarget.state = WorkTarget.WorkTargetState.CLEAR;
     workTarget.renderer.material.color = clearWorkTargetColor;
 }
Ejemplo n.º 9
0
 public override void LeaveWorkTarget(WorkTarget workTarget, CuboController user)
 {
 }
Ejemplo n.º 10
0
    private void UpdateOrders()
    {
        if (!Input.GetButtonDown("Order"))
        {
            return;
        }

        if (Selection.GetSelected().Count == 0)
        {
            return;
        }

        Ray        mouseToWorldRay = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hitInfo;

        if (Physics.Raycast(mouseToWorldRay, out hitInfo, 1000f, orderLayerMask, QueryTriggerInteraction.Ignore))
        {
            //Debug.DrawLine( Camera.main.transform.position, hitInfo.point, Color.red, 3f );
            //DebugExtension.DebugPoint( hitInfo.point, 3f, 3f );
            string layer = LayerMask.LayerToName(hitInfo.collider.gameObject.layer);
            switch (layer)
            {
            case "Ground":
                List <Selectable> moveableUnits = new List <Selectable>();
                foreach (Selectable selectable in Selection.GetSelected())
                {
                    if (selectable.canMove)
                    {
                        moveableUnits.Add(selectable);
                    }
                }
                if (moveableUnits.Count == 0)
                {
                    break;
                }

                Vector3 groundedPoint = hitInfo.point;
                groundedPoint.y = 1f;
                GameObject orderUI = (GameObject)Instantiate(moveOrderUIPrefab, groundedPoint + Vector3.up * 0.01f, Quaternion.LookRotation(Vector3.down));

                foreach (KeyValuePair <Selectable, Vector3> order in CalculateFormationMovementPoints(moveableUnits, groundedPoint))
                {
                    order.Key.OrderGround(order.Value);
                }

                break;

            case "OrderableCollision":
                OrderableTarget target = hitInfo.collider.gameObject.GetComponentInChildren <OrderableTarget>();

                List <Selectable> workingUnits = new List <Selectable>();
                foreach (Selectable selectable in Selection.GetSelected())
                {
                    CuboController cubo = selectable.GetComponent <CuboController>();
                    if (selectable.canMove && (cubo == null || cubo.GetOrderableTarget() != target))
                    {
                        workingUnits.Add(selectable);
                    }
                }
                if (workingUnits.Count == 0)
                {
                    break;
                }

                List <WorkTarget> workTargets = target.GetOpenWorkTargets();

                if (target.GetComponent <NegaCube>() != null)
                {
                    foreach (Selectable unit in workingUnits)
                    {
                        unit.OrderOrderableTarget(target, target.GetOpenWorkTargets()[0]);
                    }
                }

                foreach (KeyValuePair <Selectable, WorkTarget> kvp in CalculateMovementPointsForOrderable(workingUnits, workTargets))
                {
                    kvp.Key.OrderOrderableTarget(target, kvp.Value);
                }
                break;

            /*case "Enemy":
             *      GameObject enemy = hitInfo.collider.gameObject.GetComponentInParent<EnemyBehaviour>().gameObject;
             *      if ( enemy == null )
             *              break;
             *
             *      List<Selectable> targetingUnits = new List<Selectable>();
             *      foreach( Selectable selectable in Selection.GetSelected() )
             *      {
             *              if ( selectable.canTargetEnemies )
             *                      selectable.OrderTargetEnemy( enemy );
             *      }
             *
             *      break;*/
            default:
                Debug.LogWarning("Unknown order raycast hit. Layer: " + layer);
                break;
            }
        }
    }
Ejemplo n.º 11
0
 public override void LeaveWorkTarget(WorkTarget workTarget, CuboController user)
 {
     base.LeaveWorkTarget(workTarget, user);
     users.Remove(user);
 }