public PowerHeader Read() { var powersHeader = new PowerHeader(); var versionDataReader = new VersionDataReader(_reader); powersHeader.Prefix = _reader.ReadString(); powersHeader.VersionData = versionDataReader.Read(); powersHeader.LevelVersion = versionDataReader.Read(); powersHeader.EffectVersion = versionDataReader.Read(); powersHeader.InventionOriginAssignmentVersion = versionDataReader.Read(); powersHeader.Count = _reader.ReadInt32(); return(powersHeader); }
public bool Read() { switch (_state) { case State.End: return false; case State.Start: _issue12Header = new Issue12HeaderReader(_reader).Read(); OnIssue12HeaderRead?.Invoke(_issue12Header); _state = State.Archetypes; return true; case State.Archetypes: if (_archetypeHeader == null) { _archetypeHeader = new RecordHeaderReader(_reader).Read(); OnArchetypeHeaderRead?.Invoke(_archetypeHeader); _archetypeIndex = 0; return true; } if (_archetypeHeader.Count < _archetypeIndex) return false; if (_archetypeReader == null) _archetypeReader = new ArchetypeReader(_reader); var archetype = _archetypeReader.Read(); OnArchetypeRead?.Invoke(archetype); _archetypeIndex++; if (_archetypeIndex > _archetypeHeader.Count) _state = State.Powersets; return true; case State.Powersets: if (_powersetHeader == null) { _powersetHeader = new RecordHeaderReader(_reader).Read(); OnPowerSetHeaderRead?.Invoke(_powersetHeader); _powersetIndex = 0; return true; } if (_powersetHeader.Count < _powersetIndex) return false; if (_powersetReader == null) _powersetReader = new PowerSetReader(_reader); var powerset = _powersetReader.Read(); OnPowerSetRead?.Invoke(powerset); _powersetIndex++; if (_powersetIndex > _powersetHeader.Count) _state = State.Powers; return true; case State.Powers: if (_powerHeader == null) { _powerHeader = new PowerHeaderReader(_reader).Read(); OnPowersHeaderRead?.Invoke(_powerHeader); _powerIndex = 0; return true; } if (_powerHeader.Count < _powerIndex) return false; if (_powerReader == null) _powerReader = new PowerReader(_reader); var power = _powerReader.Read(); OnPowerRead?.Invoke(power); _powerIndex++; if (_powerIndex > _powerHeader.Count) { _state = State.Summons; OnPowersCompleted?.Invoke(); } return true; case State.Summons: return false; } return false; }