public ArtMulResource(GraphicsDevice graphics) { m_Graphics = graphics; m_FileIndex = ClientVersion.IsUopFormat ? FileManager.CreateFileIndex("artLegacyMUL.uop", 0x10000, false, ".tga") : FileManager.CreateFileIndex("artidx.mul", "art.mul", 0x10000, -1); // !!! must find patch file reference for artdata. m_LandTileTextureCache = new Texture2D[0x10000]; m_StaticTileTextureCache = new Texture2D[0x10000]; m_StaticDimensions = new Pair<int>[0x10000]; }
private static void setupFiles() { try { m_Index = FileManager.IsUopFormat ? FileManager.CreateFileIndex("soundLegacyMUL.uop", 0xFFF, false, ".dat") : FileManager.CreateFileIndex("soundidx.mul", "sound.mul", 0x1000, -1); // new BinaryReader(new FileStream(FileManager.GetFilePath("soundidx.mul"), FileMode.Open)); // m_Stream = new FileStream(FileManager.GetFilePath("sound.mul"), FileMode.Open); m_filesPrepared = true; } catch { m_filesPrepared = false; return; } Regex reg = new Regex(@"(\d{1,3}) \x7B(\d{1,3})\x7D (\d{1,3})", RegexOptions.Compiled); m_Translations = new Dictionary<int, int>(); string line; using (StreamReader reader = new StreamReader(FileManager.GetFilePath("Sound.def"))) { while ((line = reader.ReadLine()) != null) { if (((line = line.Trim()).Length != 0) && !line.StartsWith("#")) { Match match = reg.Match(line); if (match.Success) { m_Translations.Add(int.Parse(match.Groups[1].Value), int.Parse(match.Groups[2].Value)); } } } } }
private void GetIndexes(int body, int action, int direction, out int index, out AFileIndex fileIndex) { if (body < 0 || body >= COUNT_ANIMS) body = 0; int animIndex = BodyConverter.Convert(ref body); switch (animIndex) { default: case 1: { fileIndex = m_FileIndex; if (body < 200) index = body * 110; else if (body < 400) index = 22000 + ((body - 200) * 65); else index = 35000 + ((body - 400) * 175); break; } case 2: { fileIndex = m_FileIndex2; if (body < 200) index = body * 110; else index = 22000 + ((body - 200) * 65); break; } case 3: { fileIndex = m_FileIndex3; if (body < 300) index = body * 65; else if (body < 400) index = 33000 + ((body - 300) * 110); else index = 35000 + ((body - 400) * 175); break; } case 4: { fileIndex = m_FileIndex4; if (body < 200) index = body * 110; else if (body < 400) index = 22000 + ((body - 200) * 65); else index = 35000 + ((body - 400) * 175); break; } case 5: { fileIndex = m_FileIndex5; if ((body < 200) && (body != 34)) // looks strange, though it works. index = body * 110; else if (body < 400) index = 22000 + ((body - 200) * 65); else index = 35000 + ((body - 400) * 175); break; } } index += action * 5; if (direction <= 4) { index += direction; } else { index += direction - (direction - 4) * 2; } }
private void GetIndexes(ref int body, ref int hue, int action, int direction, out int index, out AFileIndex fileIndex) { Translate(ref body, ref hue); int fileType = BodyConverter.Convert(body); switch (fileType) { default: case 1: { fileIndex = m_FileIndex; if (body < 200) index = body * 110; else if (body < 400) index = 22000 + ((body - 200) * 65); else index = 35000 + ((body - 400) * 175); break; } case 2: { fileIndex = m_FileIndex2; if (body < 200) index = body * 110; else index = 22000 + ((body - 200) * 65); break; } case 3: { fileIndex = m_FileIndex3; if (body < 300) index = body * 65; else if (body < 400) index = 33000 + ((body - 300) * 110); else index = 35000 + ((body - 400) * 175); break; } case 4: { fileIndex = m_FileIndex4; if (body < 200) index = body * 110; else if (body < 400) index = 22000 + ((body - 200) * 65); else index = 35000 + ((body - 400) * 175); break; } // Issue 60 - Missing (or wrong) object animations - http://code.google.com/p/ultimaxna/issues/detail?id=60 - Smjert case 5: { fileIndex = m_FileIndex5; if ((body < 200) && (body != 34)) // looks strange, though it works. index = body * 110; else if (body < 400) index = 22000 + ((body - 200) * 65); else index = 35000 + ((body - 400) * 175); break; } // Issue 60 - End } index += action * 5; if (direction <= 4) { index += direction; } else { index += direction - (direction - 4) * 2; } }