public void AddTimedStatus(CharacterStatusType statusType, int numTurns) { numTurns++; foreach (var s in _timedStatuses) { if (s.Type == statusType) { if (s.Life < numTurns) { s.Life = numTurns; } OnStatusAdded?.Invoke(s); return; } } var status = Create(statusType); if (status != null) { status.Life = numTurns; _timedStatuses.Add(status); UpdateWorldState(statusType, true); OnStatusAdded?.Invoke(status); } }
public ChunkChapter() { Data = new byte[Length]; CharacterStatus = new CharacterStatusType[SaveFf7Remake.CharacterCount]; Positions = Enumerable.Range(0, SaveFf7Remake.CharacterCount).Select(x => new Vector3f()).ToArray(); Rotations = Enumerable.Range(0, SaveFf7Remake.CharacterCount).Select(x => new Vector3f()).ToArray(); }
public ChunkChapter() { Data = new byte[Length]; CharacterStatus = new CharacterStatusType[SaveFf7Remake.CharacterCount]; Positions = Enumerable.Range(0, SaveFf7Remake.CharacterCount).Select(x => new Vector3f()).ToArray(); Rotations = Enumerable.Range(0, SaveFf7Remake.CharacterCount).Select(x => new Vector3f()).ToArray(); Npc = Enumerable.Range(0, MaxNpcEntryCount).Select(x => new ChapterObject()).ToArray(); Objects = Enumerable.Range(0, MaxObjectEntryCount).Select(x => new ChapterObject()).ToArray(); Enemies = Enumerable.Range(0, MaxEnemyEntryCount).Select(x => new ChapterObject()).ToArray(); }
public void RemovePermanentStatus(CharacterStatusType statusType) { foreach (var s in _permanentStatuses) { if (s.Type == statusType) { _permanentStatuses.Remove(s); UpdateWorldState(statusType, false); OnStatusRemoved?.Invoke(s); return; } } }
public bool Find(CharacterStatusType type, out UiStatusDbEntry effect) { foreach (var entry in _statusEffectDb) { if (entry.Type == type) { effect = entry; return(true); } } effect = null; return(false); }
private void UpdateWorldState(CharacterStatusType statusType, bool added) { switch (statusType) { case CharacterStatusType.Stunned: Context.SetState(CharacterWorldState.IsStunned, added, EffectType.Permanent); break; case CharacterStatusType.Confused: Context.SetState(CharacterWorldState.IsConfused, added, EffectType.Permanent); break; case CharacterStatusType.Drunk: Context.SetState(CharacterWorldState.IsDrunk, added, EffectType.Permanent); break; } }
public void AddPermanentStatus(CharacterStatusType statusType) { foreach (var s in _permanentStatuses) { if (s.Type == statusType) { return; } } var status = Create(statusType); if (status != null) { _permanentStatuses.Add(status); UpdateWorldState(statusType, true); OnStatusAdded?.Invoke(status); } }
public bool HasStatus(CharacterStatusType statusType) { foreach (var s in _permanentStatuses) { if (s.Type == statusType) { return(true); } } foreach (var s in _timedStatuses) { if (s.Type == statusType) { return(true); } } return(false); }
private Status Create(CharacterStatusType statusType) { Status status = null; switch (statusType) { case CharacterStatusType.Stunned: status = new StunnedStatus(); break; case CharacterStatusType.Confused: status = new ConfusedStatus(); break; case CharacterStatusType.Drunk: status = new DrunkStatus(); break; } return(status); }