Пример #1
0
    /* DESC :>
     * 3시 또는 8시가 아닐 경우
     * 시간 흐름에 따라 냥이 지속적 생성 루프
     * 3마리 이하 : 3~5초, 4마리 이상 : 10~20초
     */
    public void UpdateSpawn()
    {
        if (!IsAvailableSpawn())
        {
            return;
        }

        SpawnEventNyang();

        spawnTick++;
        if (spawnTick < spawnCompleteTick)
        {
            return;
        }

        int            randPosition = Random.Range(0, AvailableSpawnSize() - 1);
        ENyangPosition position     = AvailableSpawn()[randPosition].position;

        SpawnNyang(position);

        spawnCompleteTick = 0;

        if (UnavailableSpawnSize() < 4)
        {
            Spawn(Random.Range(3, 5));
        }
        else
        {
            Spawn(Random.Range(10, 20));
        }
    }
Пример #2
0
 public void SetData(int id, string name, ENyangRank rank, EConditionType[] appearType, int[] appear, ENyangPosition pos)
 {
     this.id         = id;
     this.name       = name;
     this.rank       = rank;
     this.appearType = appearType;
     this.appear     = appear;
     this.position   = pos;
 }
Пример #3
0
    public void SpawnUnNotify(ENyangPosition position)
    {
        NyangPosition nyang = nyangPositions.Find(n => n.position.Equals(position));

        if (nyang != null)
        {
            nyang.UnNotified();
        }
    }
Пример #4
0
    /* DESC :>
     * 생성 조건에 맞는 냥이들 리스트 중, 확률적으로 노멀/랜덤/히든 냥이 생성
     */
    public void SpawnNyang(ENyangPosition position)
    {
        XMLNyang nyangData = new XMLNyang();

        List <XMLNyang> normals;
        List <XMLNyang> rares;
        List <XMLNyang> hidden;

        if (NyangManager.getInstance.GetNyang(position, out normals, out rares, out hidden) == false)
        {
            return;
        }

        bool  bSelected = false;
        float rankRate  = Random.Range(0, 100);

        if (rankRate / 70 >= 1)
        {
            if (rares.Count > 0)
            {
                nyangData = rares[Random.Range(0, rares.Count)];
                bSelected = true;
            }
        }
        else if (rankRate / 40 >= 1)
        {
            if (hidden.Count > 0)
            {
                nyangData = hidden[Random.Range(0, hidden.Count)];
                bSelected = true;
            }
        }

        if (!bSelected)
        {
            if (normals.Count > 0)
            {
                nyangData = normals[Random.Range(0, normals.Count)];
            }
            else
            {
                if (rares.Count > 0)
                {
                    nyangData = rares[Random.Range(0, rares.Count)];
                }
                else if (hidden.Count > 0)
                {
                    nyangData = hidden[Random.Range(0, hidden.Count)];
                }
            }
        }

        SpawnNyang(nyangData);
    }
Пример #5
0
    public void SetNyang(int id, string nyangName, ENyangPosition position, ENyangRank rank, EConditionType[] appearType, int[] appearCondition)
    {
        this.id              = id;
        this.nyangName       = nyangName;
        this.position        = position;
        this.rank            = rank;
        this.appearType      = appearType;
        this.appearCondition = appearCondition;

        SetState(ENyangState.wait);

        Initialize();
    }
Пример #6
0
    public bool GetNyang(ENyangPosition position, out List <XMLNyang> normals, out List <XMLNyang> rares, out List <XMLNyang> hidden)
    {
        List <XMLNyang> equalPositions = nyangs.FindAll(n => n.position.Equals(position));

        normals = new List <XMLNyang>();
        rares   = new List <XMLNyang>();
        hidden  = new List <XMLNyang>();

        normals = equalPositions.FindAll(GetPredicate(ENyangRank.Normal));
        rares   = equalPositions.FindAll(GetPredicate(ENyangRank.Rare));
        hidden  = equalPositions.FindAll(GetPredicate(ENyangRank.Hidden));

        return(normals.Count + rares.Count + hidden.Count > 0);
    }
Пример #7
0
 public NyangPosition(bool _isEmpty, ENyangPosition _position)
 {
     isEmpty  = _isEmpty;
     position = _position;
 }