Exemple #1
0
    private List <PlayerController> ThirdPartyPlayers; // 행동이 통찰인 경우에, 행동 대상의 추정 목표 대상 두 명을 지정

    // 행동 객체의 생성자입니다.
    public Behavior(BasicBehavior behavior, PlayerController subjectPlayer,
                    List <PlayerController> objectPlayers = null, List <PlayerController> thirdPartyPlayers = null)
    {
        this.behavior     = behavior;
        SubjectPlayer     = subjectPlayer;
        ObjectPlayers     = objectPlayers;
        ThirdPartyPlayers = thirdPartyPlayers;
    }
Exemple #2
0
        public void SetUp()
        {
            _page                    = MockRepository.GenerateStub <IFubuPage>();
            _partialFactory          = MockRepository.GenerateStub <IPartialFactory>();
            _behavior                = new WrappingBehavior();
            PartialInvokingHandler   = MockRepository.GenerateStub <IPartialInvokingHandler>();
            _behavior.InsideBehavior = new PartialHandlingBehavior();

            _partialFactory.Stub(f => f.BuildPartial(typeof(InputModel))).Return(_behavior);
            _page.Stub(p => p.Get <IPartialFactory>()).Return(_partialFactory);

            _request = MockRepository.GenerateStub <IFubuRequest>();
            _page.Stub(p => p.Get <IFubuRequest>()).Return(_request);
        }
Exemple #3
0
 /// <summary>
 /// 인자로 주어진 행동 종류에 따른 스킬 종류를 반환합니다. 올바른 행동 종류가 아니면 -1을 반환합니다.
 /// </summary>
 /// <param name="bb">행동 종류</param>
 /// <returns>기본 행동이면 0, 캐릭터 고유 스킬이면 1, 공용 스킬이면 2를 반환합니다.</returns>
 public static int GetSkillType(BasicBehavior bb)
 {
     if (bb == null)
     {
         return(-1);
     }
     foreach (BehaviorInfo bi in behaviorInfo)
     {
         if (bi.GetBehaviorName().Equals(bb.Name))
         {
             return(bi.GetSkillType());
         }
     }
     return(-1);
 }
Exemple #4
0
    /// <summary>
    /// 자신의 행동을 결정하는 함수입니다. 행동 이름을 우선 결정하고, 대상을 결정하는 Coroutine을 호출합니다.
    /// </summary>
    /// <param name="behaviorName">행동 이름</param>
    public void MakeBehavior(string behaviorName)
    {
        // 자신이 사망했거나 빙결되어 행동할 수 없는 경우
        if (isDead || isFreezed || bm.GetEnd())
        {
            if (playerNum == 1)
            {
                Debug.Log("You cannot make behavior.");
            }
            return;
        }
        BasicBehavior bb = new BasicBehavior(behaviorName);
        // 행동 이름이 존재하지 않는 경우
        int skillType = BehaviorManager.GetSkillType(bb);

        if (skillType == -1)
        {
            Debug.LogWarning("Bad behavior in MakeBehavior.");
            return;
        }
        // 행동이 스킬이고 자신이 침묵되어 스킬을 사용할 수 없는 경우
        else if ((skillType == 1 || skillType == 2) && isSilenced)
        {
            Debug.Log("You cannot invoke skill in this turn.");
            return;
        }
        // 행동에 필요한 마나가 부족한 경우
        if (!BehaviorManager.EnoughMana(bb, mana))
        {
            Debug.Log("Not enough mana.");
            return;
        }
        // 행동에서 지정해야 하는 대상 수가 지정 가능한 대상 수보다 많은 경우
        if (!BehaviorManager.TargetsExist(bb, this))
        {
            Debug.Log("Targets don't exist.");
            return;
        }
        // TODO 다수 대상 행동을 지정할 대상이 없을 때 행동을 제한할 필요가 있다.
        // TODO 이때 인공지능의 경우 다른 행동으로 다시 결정하게 할 필요가 있다. 지금은 여기서 return하면 그 턴에 아무 행동도 결정하지 않는다.
        behavior       = new Behavior(bb, this);
        isTargetDecide = true;
        StartCoroutine("SelectTarget", behavior);
    }
Exemple #5
0
 /// <summary>
 /// 인자로 주어진 행동 종류를 수행하는 데 필요한 마나보다 인자로 주어진 마나가 적지 않은지 확인합니다. 올바른 행동 종류가 아니면 false를 반환합니다.
 /// </summary>
 /// <param name="bb">행동 종류</param>
 /// <param name="mana">행동 주체의 현재 마나</param>
 /// <returns>행동에 필요한 마나가 충분하면 true, 마나가 부족하면 false를 반환합니다.</returns>
 public static bool EnoughMana(BasicBehavior bb, int mana)
 {
     if (bb == null)
     {
         return(false);
     }
     foreach (BehaviorInfo bi in behaviorInfo)
     {
         if (bi.GetBehaviorName() == bb.Name)
         {
             if (mana >= bi.GetConsumedMana())
             {
                 return(true);
             }
             else
             {
                 return(false);
             }
         }
     }
     return(false);
 }
Exemple #6
0
 public static bool TargetsExist(BasicBehavior bb, PlayerController subject)
 {
     if (bb == null)
     {
         return(false);
     }
     foreach (BehaviorInfo bi in behaviorInfo)
     {
         if (bi.GetBehaviorName() == bb.Name)
         {
             if (bi.GetTargetMyself())
             {
                 if (bi.GetTargetNumber() <= bm.TargetableNumber())
                 {
                     return(true);
                 }
                 else
                 {
                     return(false);
                 }
             }
             else
             {
                 if (bi.GetTargetNumber() <= bm.TargetableNumberExceptOneself(subject))
                 {
                     return(true);
                 }
                 else
                 {
                     return(false);
                 }
             }
         }
     }
     return(false);
 }
Exemple #7
0
 void Awake()
 {
     bb = transform.parent.gameObject.GetComponent(typeof(BasicBehavior)) as BasicBehavior;
 }
Exemple #8
0
 public void SetBehavior(BasicBehavior behavior)
 {
     this.behavior = behavior;
 }