예제 #1
0
 public virtual void ChangeMasterToTargetOwner(SheepControlThree Sheep, HerdSheepBase target)
 {
     herdSheepList.Remove(Sheep);
     Sheep.Follower = target;
     Sheep.GetSpriteRenderer().color = target.GetOwner().GetSymbolColor();
     target.AddSheepList(Sheep);
 }
예제 #2
0
 private void CheckSheepFollower(HerdSheepBase target)          //부딪힌 오브젝트에 HerdSheepBase가 존재할시 행동.
 {
     //양에 주인이 없을 경우.
     if (SS.Equals(SheepState.NOOWNER))
     {
         this.follower = target;
         SS            = SheepState.HAVEOWNER;
         target.AddSheepList(this);
         ManagerHandler.Instance.GameManager().FromHordeSheepToOwneredSheep(this);
     }
     //양에게 주인이 있을경우 능동성 및 마스터 여부를 따져서 행동한다.
     else if (SS.Equals(SheepState.HAVEOWNER))
     {
         // Equals는 대상의 내용, ==는 대상의 주소를 비교한다.
         if (target.GetOwner() == this.follower.GetOwner())
         {
             //주인이 같은경우 행동하지 않는다.
             return;
         }
         else
         {
             if (!target.isTakeOverPermit())
             {
                 //주인이 다르나 탈취 권한이 없을경우 역시 행동하지 않는다.
             }
             else
             {
                 //주인도 다르고 탈취 권환도 있을경우 행동.
                 this.follower.ChangeMasterToTargetOwner(this, target);
             }
         }
     }
 }
예제 #3
0
    private void OnTriggerEnter(Collider col)       //부딪힌 오브젝트에 HerdSheepBase가 존재하는지 확인.
    {
        HerdSheepBase target = col.GetComponent <HerdSheepBase>();

        if (target != null)
        {
            CheckSheepFollower(target);
        }
    }
예제 #4
0
    public override void ChangeMasterToTargetOwner(SheepControlThree Sheep, HerdSheepBase target)
    {
        base.ChangeMasterToTargetOwner(Sheep, target);
        int index = herdSheepList.IndexOf(Sheep);

        for (int temp = index; temp <= herdSheepList.Count - 1; temp++)
        {
            herdSheepList[temp].Follower = target;
            //ManagerHandler.Instance.GameManager().FindAndRemoveAtSheepList(this.herdSheepList[temp].gameObject);
            target.AddSheepList(this.herdSheepList[temp]);
        }
        herdSheepList.RemoveRange(index, herdSheepList.Count - index);
    }
예제 #5
0
 public virtual IEnumerator MoveAllSheepToTarget(HerdSheepBase target)
 {
     if (herdSheepList.Count > 0)
     {
         for (int i = herdSheepList.Count - 1; i >= 0; i--)
         {
             SheepControlThree Sheep = herdSheepList[i];
             herdSheepList.Remove(Sheep);
             Sheep.Follower = target;
             Sheep.GetSpriteRenderer().color = target.GetOwner().GetSymbolColor();
             target.AddSheepList(Sheep);
             yield return(new WaitForSeconds(0.1f));
         }
     }
 }
예제 #6
0
 public override void ChangeMasterToTargetOwner(SheepControlThree Sheep, HerdSheepBase target)
 {
     base.ChangeMasterToTargetOwner(Sheep, target);
 }