/// <summary> /// Обновление 2/2 - дейстиве клетки. /// </summary> public void PostUpdate() { // ex GOL: 23/3 switch (Status) { case LiveStatusEnum.Alive: // ex: Eсли у живой клетки есть N живые соседки, то эта клетка продолжает жить; // В противном случае клетка умирает if (!rule.RuleToStayLive[liveAround]) { Status = DyingTimes == 0 ? LiveStatusEnum.Dead : LiveStatusEnum.Dying; isAliveGetOne = 0; } break; case LiveStatusEnum.Dying: if (--DyingTimes <= 0) { Status = LiveStatusEnum.Dead; isAliveGetOne = 0; } break; case LiveStatusEnum.Dead: // В пустой (мёртвой) клетке, рядом с которой N живые клетки, зарождается жизнь; if (rule.RuleToBorn[liveAround]) // any flags { Alive(); } break; } }
public Live(int x, int y, Rule rule) { this.x = x; this.y = y; this.rule = rule; Status = LiveStatusEnum.Dead; DyingTimes = 0; Pos = new Vector2(x * rule.PixelSize, y * rule.PixelSize); }
/// <summary> /// Убить клетку. /// </summary> public void Kill() { isAliveGetOne = 0; Status = LiveStatusEnum.Dead; }
public void Alive() { Status = LiveStatusEnum.Alive; DyingTimes = rule.DyingTimes; isAliveGetOne = 1; }