public void SetMoveOrderToUnits(Unit[] units, Vector3 destination) { foreach (Unit unit in units) { MoveOrderVariableParams moveOrderVariableParams = new MoveOrderVariableParams(destination, unit.gameObject); unit.orderableObject.GiveOrder(new MoveOrder(moveOrderVariableParams)); } }
public void GiveOrderWithNonFixedParams(OrderableObject[] EntetiesToOrder, GameOrderInitParams orderType, bool isIdleState = false) { Vector2 mousePos = Mouse.current.position.ReadValue(); if (isIdleState) { RaycastHit hit; if (Physics.Raycast(Camera.main.ScreenPointToRay(mousePos), out hit, 100f, 1 << 8)) { GameObject raycastHitGameObject = hit.collider.gameObject; FractionMember raycastHitGameObjectFraction = raycastHitGameObject.GetComponent <FractionMember>(); if (raycastHitGameObject.GetComponent <DamageSystem>() == null) { foreach (OrderableObject entety in EntetiesToOrder) { MoveOrderInitParams moveOrderInitParams = new MoveOrderInitParams(""); MoveOrderVariableParams moveOrderVariableParams = new MoveOrderVariableParams(GetDestinationWithOffset(hit.point, EntetiesToOrder.Length), null); GiveOrderToUnits(entety, moveOrderInitParams, moveOrderVariableParams); } } else { if (fraction != raycastHitGameObjectFraction.fraction) { AttackOrderInitParams attackOrderInitParams = new AttackOrderInitParams(""); AttackOrderVariableParams attackOrderVariableParams = new AttackOrderVariableParams(raycastHitGameObject, null); GiveOrderToUnits(EntetiesToOrder, attackOrderInitParams, attackOrderVariableParams); } } } else if (Physics.Raycast(Camera.main.ScreenPointToRay(mousePos), out hit, 100f, 1 << 10)) { GameObject enemyObject = hit.collider.gameObject; FractionMember victimFraction = enemyObject.GetComponent <FractionMember>(); if (victimFraction.fraction != fraction) { if (inputHandler.PossibleOrders.Any(x => x is AttackOrderInitParams)) { AttackOrderInitParams attackOrderInitParams = new AttackOrderInitParams(""); AttackOrderVariableParams attackOrderVariableParams = new AttackOrderVariableParams(enemyObject, null); GiveOrderToUnits(EntetiesToOrder, attackOrderInitParams, attackOrderVariableParams); } } else { if (inputHandler.PossibleOrders.Any(x => x is BuildOrderInitParams) && hit.transform.TryGetComponent(typeof(Building), out Component building)) { foreach (OrderableObject entity in inputHandler.SelectedEnteties) { BuildOrderVariableParams buildOrderVariableParams = new BuildOrderVariableParams(building as Building, entity.gameObject); entity.GiveOrder(new BuildOrder(buildOrderVariableParams)); } } } } else { if (hexGrid.TryRaycastHexGrid(Camera.main.ScreenPointToRay(mousePos), out Vector3 output)) { foreach (OrderableObject EntetyToOrder in EntetiesToOrder) { MoveOrderInitParams moveOrderInitParams = new MoveOrderInitParams(""); MoveOrderVariableParams moveOrderVariableParams = new MoveOrderVariableParams(GetDestinationWithOffset(output, EntetiesToOrder.Length), EntetyToOrder.gameObject); GiveOrderToUnits(EntetyToOrder, moveOrderInitParams, moveOrderVariableParams); } } } } else { if (orderType is MoveAttackOrderInitParams) { RaycastHit hit; if (Physics.Raycast(Camera.main.ScreenPointToRay(mousePos), out hit, 100f, 1 << 8)) { foreach (OrderableObject EntetyToOrder in EntetiesToOrder) { MoveAttackOrderInitParams moveAttackOrderInitParams = new MoveAttackOrderInitParams(""); MoveAttackOrderVariableParams moveAttackOrderVariableParams = new MoveAttackOrderVariableParams(GetDestinationWithOffset(hit.point, EntetiesToOrder.Length), EntetyToOrder.gameObject); GiveOrderToUnits(EntetyToOrder, moveAttackOrderInitParams, moveAttackOrderVariableParams); } } else { if (hexGrid.TryRaycastHexGrid(Camera.main.ScreenPointToRay(mousePos), out Vector3 output)) { foreach (OrderableObject EntetyToOrder in EntetiesToOrder) { MoveAttackOrderInitParams moveAttackOrderInitParams = new MoveAttackOrderInitParams(""); MoveAttackOrderVariableParams moveAttackOrderVariableParams = new MoveAttackOrderVariableParams(GetDestinationWithOffset(output, EntetiesToOrder.Length), EntetyToOrder.gameObject); GiveOrderToUnits(EntetyToOrder, moveAttackOrderInitParams, moveAttackOrderVariableParams); } } } } if (orderType is MoveOrderInitParams) { if (hexGrid.TryRaycastHexGrid(Camera.main.ScreenPointToRay(mousePos), out Vector3 output)) { foreach (OrderableObject EntetyToOrder in EntetiesToOrder) { MoveOrderInitParams moveOrderInitParams = new MoveOrderInitParams(""); MoveOrderVariableParams moveOrderVariableParams = new MoveOrderVariableParams(GetDestinationWithOffset(output, EntetiesToOrder.Length), EntetyToOrder.gameObject); GiveOrderToUnits(EntetyToOrder, moveOrderInitParams, moveOrderVariableParams); return; } } } if (orderType is AttackOrderInitParams) { if (Physics.Raycast(Camera.main.ScreenPointToRay(mousePos), out RaycastHit hit, 100f, 1 << 8)) { GameObject victim = hit.collider.gameObject; FractionMember victimFraction = victim.GetComponent <FractionMember>(); if (victim.GetComponent <DamageSystem>() != null) { if (fraction != victimFraction.fraction) { AttackOrderInitParams currentParameters = new AttackOrderInitParams(""); AttackOrderVariableParams attackOrderVariableParams = new AttackOrderVariableParams(victim, null); GiveOrderToUnits(EntetiesToOrder, currentParameters, attackOrderVariableParams); } } } } } }