Example #1
0
    public override void OnUpdate()
    {
        if (_timeSinceStateChanged >= _passenger.DragChangeStatePeriod)
        {
            _timeSinceStateChanged = 0;
            if ((Randomizer.GetPercentageBasedBoolean((int)_passenger.GetAttackProbabilityForClass("conductor")) && !_passenger.IsNearBench) || !_passenger.HasTicket())
            {
                if (!_passenger.IsRunawayDenied())
                {
                    StopDragByConductor(true);
                    return;
                }
            }
        }
        if (_hero.CanKick(_passenger) && !_passenger.HasTicket())
        {
            if (!_passenger.IsRunawayDenied() && Randomizer.GetPercentageBasedBoolean((int)_passenger.GetRunAwayProbabilityForClass("conductor")))
            {
                _floor.OnMouseUp();
                _passenger.BeginEscape(_hero);
                return;
            }
        }
        MovableCharacter.Animator.Play("attacked");
        Vector3 targetPos = new Vector3();

        if (!_floor.GetCurrentMousePosition(ref targetPos))
        {
            return;
        }
        MovableCharacter.transform.position = new Vector3(targetPos.x, targetPos.y, -1);
    }
Example #2
0
    public override void HandleDoubleClick()
    {
        ConductorSM hero = MonobehaviorHandler.GetMonobeharior().GetObject <Floor>("Floor").GetHero();

        if (hero.CanKick(this))
        {
            if (_isFlyAwayDenied)
            {
                return;
            }
            hero.Kick(this);
            return;
        }
        hero.StartDrag(this);
    }
Example #3
0
    public void StopDrag(bool attack)
    {
        if (GetActiveState() != (int)MovableCharacterStates.Dragged)
        {
            return;
        }
        Floor floor = MonobehaviorHandler.GetMonobeharior().GetObject <Floor>("Floor");

        floor.OnMouseUp();
        ConductorSM conductor = floor.GetHero();

        if (conductor.CanKick(this))
        {
            if (!HasTicket())
            {
                BeginEscape(conductor);
            }
        }
        else
        {
            if (attack)
            {
                if (_isConductorAttackDenied)
                {
                    MakeIdle();
                    return;
                }
                AttackTarget = conductor;
                AttackIfPossible();
            }
            else
            {
                MakeIdle();
            }
        }
    }