Beispiel #1
0
    void RoundEnd()
    {
        //print("轮结束");
        //启用暂停按钮
        BattleManager.instance.button_wait.interactable = true;

        //所有单位行为计数-1
        foreach (Unit item in BattleManager.instance.allUnits)
        {
            for (int i = 0; i < item.behaviors.Count; i++)
            {
                Behavior behavior = item.behaviors[i];
                if (behavior.duration > 1)
                {
                    behavior.duration--;
                }
                else if (behavior.duration == 1)
                {
                    BehaviorMgr.RemoveBehavior(item, behavior);
                }
            }
        }

        RoundStart();
    }
Beispiel #2
0
    public override void Invoke()
    {
        base.Invoke();

        if (addOrRemove == AddOrRemove.Add)
        {
            BehaviorMgr.AddBehavior(originPlayer, targetUnit, behavior);
        }
        else
        {
            BehaviorMgr.RemoveBehavior(targetUnit, behavior);
        }
    }
Beispiel #3
0
    IEnumerator InvokeOrderCor()
    {
        if (order.type == OrderType.move)
        {
            NodeMovingMgr.instance.Event_StartMoving  += StartMoving;
            NodeMovingMgr.instance.Event_ReachTarget  += ReachTarget;
            NodeMovingMgr.instance.Event_MovingToNode += MoveToNode;

            if (order.origin.isWalker)
            {
                //行走
                NodeMovingMgr.instance.MoveObject(order.origin.gameObject, order.path,
                                                  order.origin.UnitActualSpeed, MapCoord.xy);
            }
            else if (TraitManager.PossessTrait(order.origin, "Flying"))
            {
                //飞行
                NodeMovingMgr.instance.MoveObjectFlying(order.origin.gameObject, order.targetNode,
                                                        order.origin.UnitActualSpeed, MapCoord.xy);
            }
            //else if 瞬移

            if (order.origin.RestoreFacing())
            {
                //需要转身
                yield return(new WaitForSeconds(UnitAttackMgr.instance.animTurnbackTime));
            }

            while (NodeMovingMgr.instance.moving)
            {
                yield return(null);
            }

            if (order.origin.RestoreFacing())
            {
                //需要转身
                yield return(new WaitForSeconds(UnitAttackMgr.instance.animTurnbackTime));
            }
        }
        else if (order.type == OrderType.attack)
        {
            //移动后攻击
            if (order.path != null || order.targetNode != null)
            {
                NodeMovingMgr.instance.Event_StartMoving  += StartMoving;
                NodeMovingMgr.instance.Event_ReachTarget  += ReachTarget;
                NodeMovingMgr.instance.Event_MovingToNode += MoveToNode;

                if (order.path != null)
                {
                    NodeMovingMgr.instance.MoveObject(order.origin.gameObject, order.path,
                                                      order.origin.UnitActualSpeed, MapCoord.xy);
                }
                else
                {
                    NodeMovingMgr.instance.MoveObjectFlying(order.origin.gameObject, order.targetNode,
                                                            order.origin.UnitActualSpeed, MapCoord.xy);
                }

                while (NodeMovingMgr.instance.moving)
                {
                    yield return(null);
                }
            }

            //攻击
            UnitAttackMgr.instance.Attack(order.origin, order.target);

            while (UnitAttackMgr.operating)
            {
                yield return(null);
            }
        }
        else if (order.type == OrderType.rangeAttack)
        {
            UnitAttackMgr.instance.Attack(order.origin, order.target, true);

            while (UnitAttackMgr.operating)
            {
                yield return(null);
            }
        }
        else if (order.type == OrderType.wait)
        {
            BattleManager bm = BattleManager.instance;
            bm.AddUnitToActionList(ref bm.waitingUnitList, BattleManager.currentActionUnit, false);
        }
        else if (order.type == OrderType.defend)
        {
            //获得+1/5防御力buff一回合
            BehaviorMgr.AddBehavior(order.origin, BehaviorMgr.GetBehavior("Defend"));
        }

        order = null;
    }
Beispiel #4
0
 /// <summary>
 /// A Tpm2 must be created attached to an underlying device
 /// </summary>
 /// <param name="device"></param>
 /// <param name="mode"></param>
 public Tpm2(Tpm2Device device, Behavior b = Behavior.Default)
 {
     Device = device;
     _Behavior = b;
     Sessions = new SessionBase[0];
     Helpers = new TpmHelpers(this);
 }