Ejemplo n.º 1
0
    public void HandleCommand(ZACommons commons, EventDriver eventDriver,
                              string argument, Action <ZACommons, Vector3D> targetAction)
    {
        argument = argument.Trim().ToLower();
        switch (argument)
        {
        case "compute":
            var firstReference = GetReference(commons, STATIC_REFERENCE_GROUP);
            var rotorReference = GetReference(commons, ROTOR_REFERENCE_GROUP);

            var      first = new Rangefinder.LineSample(firstReference);
            var      second = new Rangefinder.LineSample(rotorReference);
            Vector3D closestFirst, closestSecond;
            if (Rangefinder.Compute(first, second, out closestFirst, out closestSecond))
            {
                // Take midpoint of closestFirst-closestSecond segment
                var target = (closestFirst + closestSecond) / 2.0;
                targetAction(commons, target);
            }
            break;

        default:
            rotorStepper.HandleCommand(commons, eventDriver, argument);
            break;
        }
    }
        public void onClick()
        {
            CombatUiStateKeeper.hideCombatUi();

            this._ability = AbilityFactory.getAbility(this.name);

            this.abilityRangeSelection = new Range(Rangefinder.findAllTilesInRange(TurnOrder.getActiveCharacter().GetComponent <CharacterBase>().getCurrentTileOfCharacter(), this._ability.range), "ability");
            this.abilityRangeSelection.colorRange();
            this._targetMode = true;
            CombatUiStateKeeper.jumpBackEnabled = false;
        }
        public void onClick()
        {
            CombatCharacterController activeCharacter = TurnOrder.getActiveCharacter().GetComponent <CombatCharacterController>();
            HashSet <GameObject>      foundRange      = Rangefinder.findAllTilesInRange(
                activeCharacter.getCurrentTileOfCharacter(),
                activeCharacter.GetComponent <CombatCharacterController>().walkRange
                );

            CombatUiStateKeeper.hideCombatUi();
            this._currentMovementRange = new Range(foundRange, "movement");
            _currentMovementRange.colorRange();
            this._isMovementPhase = true;
        }
Ejemplo n.º 4
0
    public void HandleCommand(ZACommons commons, string argument)
    {
        argument = argument.Trim().ToLower();
        var parts = argument.Split(new char[] { ' ' }, 2);

        if (parts.Length < 2 || parts[0] != "rfinder")
        {
            return;
        }
        var command = parts[1];

        switch (command)
        {
        case "origin":
        {
            var reference = GetReference(commons);
            if (reference == null)
            {
                return;
            }
            Origin = new Rangefinder.LineSample(reference);
            Last   = null;
            Result.Clear();
            break;
        }

        case "snapshot":
        {
            var reference = GetReference(commons);
            if (reference == null)
            {
                return;
            }
            var second = new Rangefinder.LineSample(reference);

            Last = null;
            Result.Clear();

            Vector3D closestFirst, closestSecond;
            if (Rangefinder.Compute(Origin, second, out closestFirst,
                                    out closestSecond))
            {
                var target = (closestFirst + closestSecond) / 2.0;
                Last = target;

                Result.Append(string.Format("Target: {0:F2}, {1:F2}, {2:F2}",
                                            target.GetDim(0),
                                            target.GetDim(1),
                                            target.GetDim(2)));
                Result.Append('\n');

                var targetVector = target - reference.GetPosition();
                Result.Append(string.Format("Distance: {0} m", (ulong)(targetVector.Length() + 0.5)));

                TargetAction(commons, target);
            }
            else
            {
                Result.Append("Parallel lines???");
            }
            break;
        }

        case "restore":
            if (Last != null)
            {
                TargetAction(commons, (Vector3D)Last);
            }
            break;
        }
    }