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(); } }); }
public virtual void OnWork(CuboController user) { if (workFxObj == null) { return; } Instantiate(workFxObj, user.transform.position + Vector3.up * 4f, Quaternion.LookRotation(Vector3.up, Vector3.left)); }
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); }
public override void OnWork(CuboController user) { if (m_health.IsFull()) { return; } base.OnWork(user); m_health.Heal(healPerWork); PlaySound(turretRepair); }
public override void OnWork(CuboController user) { if (m_health.IsFull()) { return; } m_health.Heal(healPerWork); Camera.main.GetComponent <AudioSource>().PlayOneShot(repairNoise); base.OnWork(user); }
private int GetMoneyPerWork(CuboController user) { int idx = users.IndexOf(user); if (idx < 4) { return(7); } else if (idx < 8) { return(6); } else { return(5); } }
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>()); } }
public virtual void LeaveWorkTarget(WorkTarget workTarget, CuboController user) { workTarget.state = WorkTarget.WorkTargetState.CLEAR; workTarget.renderer.material.color = clearWorkTargetColor; }
public override void LeaveWorkTarget(WorkTarget workTarget, CuboController user) { }
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; } } }
public override void LeaveWorkTarget(WorkTarget workTarget, CuboController user) { base.LeaveWorkTarget(workTarget, user); users.Remove(user); }