/* 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)); } }
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; }
public void SpawnUnNotify(ENyangPosition position) { NyangPosition nyang = nyangPositions.Find(n => n.position.Equals(position)); if (nyang != null) { nyang.UnNotified(); } }
/* 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); }
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(); }
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); }
public NyangPosition(bool _isEmpty, ENyangPosition _position) { isEmpty = _isEmpty; position = _position; }