public SelectableLevel(LevelPack levelPack, int index, string levelXml, LevelHeader header, bool finished, int score) { Finished = finished; Score = score; LevelHeader = header; LevelXml = levelXml; Index = index; LevelPack = levelPack; }
void Awake() { if (instance == null) { instance = this; //DontDestroyOnLoad (this); } else if (instance != this) { Destroy(this); } }
public void Init() { R2PS1Loader l = MapLoader.Loader as R2PS1Loader; h = l.levelHeader; a1h = l.actor1Header; a2h = l.actor2Header; if (perso != null && perso.p3dData != null && perso.p3dData.family != null) { Family fam = perso.p3dData.family; if (fam.animations != null) { PointerList <State> statePtrs = l.GetStates(perso.p3dData); State[] tempStates = statePtrs.pointers.Select(s => s.Value).ToArray(); int ind = (int)perso.p3dData.stateIndex; if (ind >= tempStates.Length) { ind = 0; } int stateInd = ind; states = fam.states; stateNames = new string[states.Length + 1 + fam.animations.Length]; stateNames[0] = "Null"; for (int i = 0; i < states.Length; i++) { State s = states[i]; stateNames[i + 1] = (s.anim == null || s.anim.index >= fam.animations.Length) ? "Null" : $"State {Array.IndexOf(tempStates, s)}: {fam.animations[s.anim.index].name}"; } for (int i = 0; i < fam.animations.Length; i++) { stateNames[i + 1 + states.Length] = $"(Animation {i}) {fam.animations[i].name}"; } hasStates = true; stateIndex = stateInd - (int)fam.startState; stateIndex++; // After null currentState = stateIndex; SetState(stateIndex); } } IsLoaded = true; }
public override bool LoadFromBytes(byte[] bytes) { //Need the offset before loading if (_levelInfoOffset == -1 || _levelHeaderOffset == -1) { return(false); } base.LoadFromBytes(bytes); if (LevelObjects == null) { LevelObjects = new List <SFLevelObject>(); } LevelObjects.Clear(); if (LevelScripts == null) { LevelScripts = new List <SFAdvancedObjectScript>(); } LevelScripts.Clear(); byte[] data; if (!_dmaData.TakeMemory(_levelHeaderOffset, LevelHeader.Size, out data)) { return(false); } LevelHeader = new DataObjects.LevelHeader(_levelHeaderOffset, data); int levelObjectOffset = _levelInfoOffset; bool one = true; while (one) { if (!_dmaData.TakeMemory(levelObjectOffset, SFLevelObject.Size, out data)) { break; } SFLevelObject newObj = new SFLevelObject(levelObjectOffset, data); // default dlist offset to 0 newObj.DListOffset = 0x00; // if object id == 0xffff, break out because this marks end of data! if (newObj.ID == 0xFFFF) { break; } levelObjectOffset += SFLevelObject.Size; LevelObjects.Add(newObj); } return(true); }
public async Task LoadData() { Reader reader = files_array[SMem.Data].reader; if (exportTextures) { string state = loadingState; loadingState = "Exporting textures"; await WaitIfNecessary(); ExportTextures(reader); loadingState = state; await WaitIfNecessary(); return; } // Load current level data loadingState = "Loading level data"; await WaitIfNecessary(); LevelHeader lh = GetOrRead <LevelHeader>(reader, (ushort)(CurrentLevel | (ushort)FATEntry.Flag.Fix)); level = lh; loadingState = "Loading additional object lists"; await WaitIfNecessary(); for (ushort i = 0; i < 0x7FFF; i++) { // Only do it a few times because we're trying to load way more than there is, // so it takes really long if we yield for everything if (i % 4096 == 0) { loadingState = "Loading additional object lists: " + (i + 1); await WaitIfNecessary(); } ObjectsTable ot = GetOrRead <ObjectsTable>(reader, (ushort)(i | (ushort)FATEntry.Flag.Fix)); if (ot != null) { objectsTables.Add(ot); } } for (ushort i = 0; i < 0x8000; i++) { // Only do it a few times because we're trying to load way more than there is, // so it takes really long if we yield for everything if (i % 4096 == 0) { loadingState = "Loading additional object lists: " + (i + 1); await WaitIfNecessary(); } ObjectsTable ot = GetOrRead <ObjectsTable>(reader, i); if (ot != null) { objectsTables.Add(ot); } } for (ushort i = 0; i < 0x7FFF; i++) { // Only do it a few times because we're trying to load way more than there is, // so it takes really long if we yield for everything if (i % 4096 == 0) { loadingState = "Loading waypoints: " + (i + 1); await WaitIfNecessary(); } WayPoint wp = GetOrRead <WayPoint>(reader, (ushort)(i | (ushort)FATEntry.Flag.Fix)); } for (ushort i = 0; i < 0x8000; i++) { // Only do it a few times because we're trying to load way more than there is, // so it takes really long if we yield for everything if (i % 4096 == 0) { loadingState = "Loading waypoints: " + (i + 1); await WaitIfNecessary(); } WayPoint wp = GetOrRead <WayPoint>(reader, i); } for (ushort i = 0; i < 0x7FFF; i++) { // Only do it a few times because we're trying to load way more than there is, // so it takes really long if we yield for everything if (i % 4096 == 0) { loadingState = "Loading graphs: " + (i + 1); await WaitIfNecessary(); } Graph g = GetOrRead <Graph>(reader, (ushort)(i | (ushort)FATEntry.Flag.Fix)); } for (ushort i = 0; i < 0x8000; i++) { // Only do it a few times because we're trying to load way more than there is, // so it takes really long if we yield for everything if (i % 4096 == 0) { loadingState = "Loading graphs: " + (i + 1); await WaitIfNecessary(); } Graph g = GetOrRead <Graph>(reader, i); } loadingState = "Initializing hierarchy"; await WaitIfNecessary(); if (lh != null) { if (lh.hierarchyRoot.Value != null) { lh.hierarchyRoot.Value.GetGameObject(); } } }