/// <summary> /// Transfere o índice da rede para a lista especificada. /// </summary> /// <param name="idx">índice a transferir.</param> /// <param name="state">região da rede.</param> private void MoveIndexTo(int idx, Being.HealthStatus state) { MoveIndexTo(new List <int>() { idx }, state); }
public void SetSprite(Being.HealthStatus state) { switch (state) { case Being.HealthStatus.HEALTHY: SetSpriteImpl(healthy); break; case Being.HealthStatus.IMUNE: SetSpriteImpl(imune); break; case Being.HealthStatus.INFECTED: SetSpriteImpl(infected); break; case Being.HealthStatus.PSEUDOIMUNE: SetSpriteImpl(pseudoImunes); break; case Being.HealthStatus.DEAD: SetSpriteImpl(deadByAccident); break; } }
/// <summary> /// Transfere a lista de índices da rede para a lista especificada. /// </summary> /// <param name="idxs">enumerável com os índices a transferir.</param> /// <param name="state">região da rede.</param> private void MoveIndexTo(IEnumerable <int> idxs, Being.HealthStatus state) { foreach (Being.HealthStatus stateIdx in indexes.Keys) { indexes[stateIdx].RemoveAll(i => idxs.Contains(i)); } indexes[state].AddRange(idxs); }
/// <summary> /// Distribui seres com a saúde especificada pela rede. /// </summary> /// <param name="health">estado de saúde dos seres.</param> /// <param name="remaining">distribuir por todos os disponíveis remanescentes?</param> private IEnumerable <int> Distribute(Being.HealthStatus health, bool remaining = false) { List <int> distributed = new List <int>(); int qtd = remaining ? canChoose.Count : UnityEngine.Random.Range(1, canChoose.Count); for (int i = 0; i < qtd; ++i) { int idx = RandomPosition(); data[idx].Health = health; distributed.Add(idx); } indexes[health].AddRange(distributed); return(distributed); }