Пример #1
0
        /// <summary>
        /// Calculates a hash integer that defines a unique hash for the message
        /// Only LVL, ENG, the Originator, OWN and the First parameter of the TXT will be taken in account.
        /// BEWARE: there are rare occasions where two messages are considered equal although they are not. Your code should be fault tolerant to these conditions
        /// The Salt can be use to add a random or other string-source to the Hash
        /// </summary>
        /// <param name="Salt"></param>
        /// <returns></returns>
        public int GetHash(string Salt)
        {
            int hash = 0;

            if (!string.IsNullOrEmpty(Salt))
            {
                hash += Salt.GetHashCode();
            }
            hash += LVL.GetHashCode();
            if (!string.IsNullOrEmpty(ENG))
            {
                hash += ENG.GetHashCode();
            }
            hash += GetOriginator().GetHashCode();
            if (!string.IsNullOrEmpty(OWN))
            {
                hash += OWN.GetHashCode();
            }
            string[] t = TheCommonUtils.cdeSplit(TXT, ";:;", false, false);
            if (t != null && t.Length > 0 && !string.IsNullOrEmpty(t[0]))
            {
                hash += t[0].GetHashCode();
            }
            return(hash);
        }
Пример #2
0
 public DeepField(LVL lvl)
 {
     InitializeComponent();
     for (var y = 0; y < lvl.Height; y++)
     {
         for (var x = 0; x < lvl.Widgth; x++)
         {
             Controls.Add(lvl.DeepArray[x, y]);
         }
     }
 }
Пример #3
0
        // Constractor for users loaded from DB.
        public User(int UserID, string name, string pass, LVL LVL, DateTime memberSince)
        {
            this.UserID      = UserID;
            this.username    = name;
            this.password    = pass;
            this.LVL         = LVL;
            this.MemberSince = memberSince;

            // Initialize lists.
            this.Saves    = new List <Event>();
            this.MyEvents = new List <Event>();
        }
Пример #4
0
        //
        //Methods
        //
        public List <User> LoadUsers()
        {
            List <User> UL = new List <User>();

            using (SqlConnection conn = new SqlConnection(this.ConnectionString)){
                try
                {
                    conn.Open();
                }
                catch (SqlException ex)
                {
                    throw new Exception("Server is under maintenance. Please try again later. Thank you!!", ex);
                }

                using (SqlCommand command = new SqlCommand("Select * from Users", conn))
                {
                    using (SqlDataReader reader = command.ExecuteReader())
                    {
                        if (reader.HasRows)
                        {
                            while (reader.Read())
                            {
                                int    UserID      = (int)reader["UserID"];
                                string username    = (string)reader["username"];
                                string password    = (string)reader["password"];
                                LVL    LVL         = (LVL)Enum.Parse(typeof(LVL), reader["LVL"].ToString());
                                var    MemberSince = reader["MemberSince"].ToString();

                                UL.Add(new User(UserID, username, password, LVL, DateTime.Parse(MemberSince)));
                            }
                        }
                    }
                }
            }
            return(UL);
        }
Пример #5
0
 public int CalculateMaxEXP()
 {
     MaxEXP = LVL.GetValue() * 100;
     return(MaxEXP);
 }
Пример #6
0
        protected override async Task Load()
        {
            try {
                if (gameDataBinFolder == null || gameDataBinFolder.Trim().Equals(""))
                {
                    throw new Exception("GAMEDATABIN folder doesn't exist");
                }
                if (lvlName == null || lvlName.Trim() == "")
                {
                    throw new Exception("No level name specified!");
                }
                globals            = new Globals();
                gameDataBinFolder += "/";
                await FileSystem.CheckDirectory(gameDataBinFolder);

                if (!FileSystem.DirectoryExists(gameDataBinFolder))
                {
                    throw new Exception("GAMEDATABIN folder doesn't exist");
                }

                loadingState = "Initializing files";
                await CreateCNT();

                if (lvlName.EndsWith(".exe"))
                {
                    if (!Settings.s.hasMemorySupport)
                    {
                        throw new Exception("This game does not have memory support.");
                    }
                    Settings.s.loadFromMemory = true;
                    MemoryFile mem = new MemoryFile(lvlName);
                    files_array[0] = mem;
                    await WaitIfNecessary();

                    LoadMemory();
                }
                else
                {
                    // Prepare paths
                    string fixFolder = gameDataBinFolder;
                    string lvlFolder = gameDataBinFolder + ConvertCase(lvlName + "/", Settings.CapsType.LevelFolder);

                    paths["fix.lvl"]     = fixFolder + ConvertCase("Fix.lvl", Settings.CapsType.Fix);
                    paths["fix.ptr"]     = fixFolder + ConvertCase("Fix.ptr", Settings.CapsType.Fix);
                    paths["lvl.lvl"]     = lvlFolder + ConvertCase(lvlName + ".lvl", Settings.CapsType.LevelFile);
                    paths["lvl.ptr"]     = lvlFolder + ConvertCase(lvlName + ".ptr", Settings.CapsType.LevelFile);
                    paths["transit.lvl"] = lvlFolder + ConvertCase("transit.lvl", Settings.CapsType.LevelFile);
                    paths["transit.ptr"] = lvlFolder + ConvertCase("transit.ptr", Settings.CapsType.LevelFile);
                    if (Settings.s.platform == Settings.Platform.GC)
                    {
                        paths["menu.tpl"]    = fixFolder + ConvertCase("menu.tpl", Settings.CapsType.Fix);
                        paths["fix.tpl"]     = fixFolder + ConvertCase((Settings.s.mode == Settings.Mode.RaymanArenaGC) ? "../common.tpl" : "Fix.tpl", Settings.CapsType.Fix);
                        paths["lvl.tpl"]     = lvlFolder + ConvertCase(lvlName + (Settings.s.game == Settings.Game.R3 ? "_Lvl" : "") + ".tpl", Settings.CapsType.TextureFile);
                        paths["transit.tpl"] = lvlFolder + ConvertCase(lvlName + "_Trans.tpl", Settings.CapsType.TextureFile);
                    }
                    else if (Settings.s.platform == Settings.Platform.Xbox)
                    {
                        paths["fix.btf"]     = fixFolder + ConvertCase("Fix.btf", Settings.CapsType.Fix);
                        paths["fix.bhf"]     = fixFolder + ConvertCase("Fix.bhf", Settings.CapsType.Fix);
                        paths["lvl.btf"]     = lvlFolder + ConvertCase(lvlName + ".btf", Settings.CapsType.TextureFile);
                        paths["lvl.bhf"]     = lvlFolder + ConvertCase(lvlName + ".bhf", Settings.CapsType.TextureFile);
                        paths["transit.btf"] = lvlFolder + ConvertCase("transit.btf", Settings.CapsType.TextureFile);
                        paths["transit.bhf"] = lvlFolder + ConvertCase("transit.bhf", Settings.CapsType.TextureFile);
                    }
                    else if (Settings.s.platform == Settings.Platform.Xbox360)
                    {
                        paths["fix.btf"]     = fixFolder + ConvertCase("Fix.btf", Settings.CapsType.Fix);
                        paths["fix.bhf"]     = fixFolder + ConvertCase("Fix.bhf", Settings.CapsType.Fix);
                        paths["lvl.btf"]     = lvlFolder + ConvertCase(lvlName + "_2.btf", Settings.CapsType.TextureFile);
                        paths["lvl.bhf"]     = lvlFolder + ConvertCase(lvlName + "_2.bhf", Settings.CapsType.TextureFile);
                        paths["transit.btf"] = lvlFolder + ConvertCase("transit_6.btf", Settings.CapsType.TextureFile);
                        paths["transit.bhf"] = lvlFolder + ConvertCase("transit_6.bhf", Settings.CapsType.TextureFile);
                    }
                    paths["lvl_vb.lvl"] = lvlFolder + ConvertCase(lvlName + "_vb.lvl", Settings.CapsType.LevelFile);
                    paths["lvl_vb.ptr"] = lvlFolder + ConvertCase(lvlName + "_vb.ptr", Settings.CapsType.LevelFile);
                    paths["fixkf.lvl"]  = fixFolder + ConvertCase("Fixkf.lvl", Settings.CapsType.Fix);
                    paths["fixkf.ptr"]  = fixFolder + ConvertCase("Fixkf.ptr", Settings.CapsType.Fix);
                    paths["lvlkf.lvl"]  = lvlFolder + ConvertCase(lvlName + "kf.lvl", Settings.CapsType.LevelFile);
                    paths["lvlkf.ptr"]  = lvlFolder + ConvertCase(lvlName + "kf.ptr", Settings.CapsType.LevelFile);

                    // Download files

                    /*foreach (KeyValuePair<string, string> path in paths) {
                     *      if (path.Value != null) await PrepareFile(path.Value);
                     * }*/



                    // Fix
                    lvlNames[0] = "fix";
                    lvlPaths[0] = paths["fix.lvl"];
                    ptrPaths[0] = paths["fix.ptr"];
                    if (Settings.s.platform == Settings.Platform.GC)
                    {
                        await PrepareFile(paths["fix.tpl"]);
                        await PrepareFile(paths["menu.tpl"]);
                    }
                    else if (Settings.s.platform == Settings.Platform.Xbox ||
                             Settings.s.platform == Settings.Platform.Xbox360)
                    {
                        await PrepareFile(paths["fix.btf"]);
                        await PrepareFile(paths["fix.bhf"]);
                    }
                    await PrepareFile(lvlPaths[0]);

                    if (FileSystem.FileExists(lvlPaths[0]))
                    {
                        await PrepareFile(ptrPaths[0]);
                    }

                    // Level
                    lvlNames[1] = lvlName;
                    lvlPaths[1] = gameDataBinFolder + lvlName + "/" + lvlName.ToLower() + ".lvl";
                    ptrPaths[1] = gameDataBinFolder + lvlName + "/" + lvlName.ToLower() + ".ptr";
                    await PrepareFile(lvlPaths[1]);

                    if (FileSystem.FileExists(lvlPaths[1]))
                    {
                        await PrepareFile(ptrPaths[1]);

                        if (Settings.s.platform == Settings.Platform.GC)
                        {
                            await PrepareFile(paths["lvl.tpl"]);
                        }
                        else if (Settings.s.platform == Settings.Platform.Xbox ||
                                 Settings.s.platform == Settings.Platform.Xbox360)
                        {
                            await PrepareFile(paths["lvl.btf"]);
                            await PrepareFile(paths["lvl.bhf"]);
                        }
                    }

                    // Transit
                    lvlNames[2] = "transit";
                    lvlPaths[2] = gameDataBinFolder + lvlName + "/transit.lvl";
                    ptrPaths[2] = gameDataBinFolder + lvlName + "/transit.ptr";
                    await PrepareFile(lvlPaths[2]);

                    if (FileSystem.FileExists(lvlPaths[2]))
                    {
                        await PrepareFile(ptrPaths[2]);

                        if (Settings.s.platform == Settings.Platform.GC)
                        {
                            await PrepareFile(paths["transit.tpl"]);
                        }
                        else if (Settings.s.platform == Settings.Platform.Xbox ||
                                 Settings.s.platform == Settings.Platform.Xbox360)
                        {
                            await PrepareFile(paths["transit.btf"]);
                            await PrepareFile(paths["transit.bhf"]);
                        }
                    }
                    hasTransit = FileSystem.FileExists(lvlPaths[2]) && (FileSystem.GetFileLength(lvlPaths[2]) > 4);

                    // Vertex buffer
                    lvlNames[4] = lvlName + "_vb";
                    lvlPaths[4] = gameDataBinFolder + lvlName + "/" + lvlName.ToLower() + "_vb.lvl";
                    ptrPaths[4] = gameDataBinFolder + lvlName + "/" + lvlName.ToLower() + "_vb.ptr";
                    await PrepareFile(lvlPaths[4]);

                    if (FileSystem.FileExists(lvlPaths[4]))
                    {
                        await PrepareFile(ptrPaths[4]);
                    }

                    // Fix Keyframes
                    lvlNames[5] = "fixkf";
                    lvlPaths[5] = gameDataBinFolder + "fixkf.lvl";
                    ptrPaths[5] = gameDataBinFolder + "fixkf.ptr";
                    await PrepareFile(lvlPaths[5]);

                    if (FileSystem.FileExists(lvlPaths[5]))
                    {
                        await PrepareFile(ptrPaths[5]);
                    }

                    // Level Keyframes
                    lvlNames[6] = lvlName + "kf";
                    lvlPaths[6] = gameDataBinFolder + lvlName + "/" + lvlName.ToLower() + "kf.lvl";
                    ptrPaths[6] = gameDataBinFolder + lvlName + "/" + lvlName.ToLower() + "kf.ptr";
                    await PrepareFile(lvlPaths[6]);

                    if (FileSystem.FileExists(lvlPaths[6]))
                    {
                        await PrepareFile(ptrPaths[6]);
                    }

                    for (int i = 0; i < lvlPaths.Length; i++)
                    {
                        if (lvlPaths[i] == null)
                        {
                            continue;
                        }
                        if (FileSystem.FileExists(lvlPaths[i]))
                        {
                            files_array[i] = new LVL(lvlNames[i], lvlPaths[i], i);
                        }
                    }
                    for (int i = 0; i < loadOrder.Length; i++)
                    {
                        int j = loadOrder[i];
                        if (files_array[j] != null && FileSystem.FileExists(ptrPaths[j]))
                        {
                            ((LVL)files_array[j]).ReadPTR(ptrPaths[j]);
                        }
                    }

                    await LoadFIX();
                    await LoadLVL();
                }
            } finally {
                for (int i = 0; i < files_array.Length; i++)
                {
                    if (files_array[i] != null)
                    {
                        if (!(files_array[i] is MemoryFile))
                        {
                            files_array[i].Dispose();
                        }
                    }
                }
                if (cnt != null)
                {
                    cnt.Dispose();
                }
            }
            await WaitIfNecessary();

            InitModdables();
        }
Пример #7
0
        protected override async Task Load()
        {
            try {
                if (gameDataBinFolder == null || gameDataBinFolder.Trim().Equals(""))
                {
                    throw new Exception("GAMEDATABIN folder doesn't exist");
                }
                if (lvlName == null || lvlName.Trim() == "")
                {
                    throw new Exception("No level name specified!");
                }
                globals            = new Globals();
                gameDataBinFolder += "/";
                await FileSystem.CheckDirectory(gameDataBinFolder);

                if (!FileSystem.DirectoryExists(gameDataBinFolder))
                {
                    throw new Exception("GAMEDATABIN folder doesn't exist");
                }

                loadingState = "Initializing files";
                await CreateCNT();

                if (lvlName.EndsWith(".exe"))
                {
                    if (!Settings.s.hasMemorySupport)
                    {
                        throw new Exception("This game does not have memory support.");
                    }
                    Settings.s.loadFromMemory = true;
                    MemoryFile mem = new MemoryFile(lvlName);
                    files_array[0] = mem;
                    await WaitIfNecessary();

                    LoadMemory();
                }
                else
                {
                    // Prepare folder names
                    string fixFolder = gameDataBinFolder + ConvertCase("Fix/", Settings.CapsType.LevelFolder);
                    string lvlFolder = gameDataBinFolder + ConvertCase(lvlName + "/", Settings.CapsType.LevelFolder);

                    // Prepare paths
                    paths["fix.lvl"] = fixFolder + ConvertCase("Fix.lvl", Settings.CapsType.LevelFile);
                    paths["fix.ptr"] = fixFolder + ConvertCase("Fix.ptr", Settings.CapsType.LevelFile);
                    paths["fix.pbt"] = fixFolder + ConvertCase("Fix.pbt", Settings.CapsType.LevelFile);
                    paths["lvl.lvl"] = lvlFolder + ConvertCase(lvlName + ".lvl", Settings.CapsType.LevelFile);
                    paths["lvl.ptr"] = lvlFolder + ConvertCase(lvlName + ".ptr", Settings.CapsType.LevelFile);
                    paths["lvl.pbt"] = lvlFolder + ConvertCase(lvlName + ".pbt", Settings.CapsType.LevelFile);
                    paths["lvl.lms"] = lvlFolder + ConvertCase(lvlName + ".lms", Settings.CapsType.LMFile);

                    // Download files
                    foreach (KeyValuePair <string, string> path in paths)
                    {
                        if (path.Value != null)
                        {
                            await PrepareFile(path.Value);
                        }
                    }

                    lvlNames[Mem.Fix] = "fix";
                    lvlPaths[Mem.Fix] = paths["fix.lvl"];
                    ptrPaths[Mem.Fix] = paths["fix.ptr"];
                    lvlNames[Mem.Lvl] = lvlName;
                    lvlPaths[Mem.Lvl] = paths["lvl.lvl"];
                    ptrPaths[Mem.Lvl] = paths["lvl.ptr"];

                    for (int i = 0; i < lvlPaths.Length; i++)
                    {
                        if (lvlPaths[i] == null)
                        {
                            continue;
                        }
                        if (FileSystem.FileExists(lvlPaths[i]))
                        {
                            files_array[i] = new LVL(lvlNames[i], lvlPaths[i], i);
                        }
                    }
                    ReadLargoLVL(Mem.Fix, fixFolder + ConvertCase("Fix.dmp", Settings.CapsType.LevelFile));
                    ReadLargoLVL(Mem.Lvl, lvlFolder + ConvertCase(lvlName + ".dmp", Settings.CapsType.LevelFile));
                    if (FileSystem.mode != FileSystem.Mode.Web)
                    {
                        pbt[Mem.Fix] = ReadPBT(paths["fix.pbt"], fixFolder + ConvertCase("Fix_PBT.dmp", Settings.CapsType.LevelFile));
                        pbt[Mem.Lvl] = ReadPBT(paths["lvl.pbt"], lvlFolder + ConvertCase(lvlName + "_PBT.dmp", Settings.CapsType.LevelFile));
                        lms          = ReadLMS(paths["lvl.lms"]);
                    }
                    for (int i = 0; i < loadOrder.Length; i++)
                    {
                        int j = loadOrder[i];
                        if (files_array[j] != null && FileSystem.FileExists(ptrPaths[j]))
                        {
                            ((LVL)files_array[j]).ReadPTR(ptrPaths[j]);
                        }
                    }

                    await LoadFIX();
                    await LoadLVL();
                }
            } finally {
                for (int i = 0; i < files_array.Length; i++)
                {
                    if (files_array[i] != null)
                    {
                        if (!(files_array[i] is MemoryFile))
                        {
                            files_array[i].Dispose();
                        }
                    }
                }
                if (cnt != null)
                {
                    cnt.Dispose();
                }
            }
            await WaitIfNecessary();

            InitModdables();
        }
Пример #8
0
        protected override async Task Load()
        {
            try {
                if (gameDataBinFolder == null || gameDataBinFolder.Trim().Equals(""))
                {
                    throw new Exception("GAMEDATABIN folder doesn't exist");
                }
                if (lvlName == null || lvlName.Trim() == "")
                {
                    throw new Exception("No level name specified!");
                }
                globals            = new Globals();
                gameDataBinFolder += "/";
                await FileSystem.CheckDirectory(gameDataBinFolder);

                if (!FileSystem.DirectoryExists(gameDataBinFolder))
                {
                    throw new Exception("GAMEDATABIN folder doesn't exist");
                }
                loadingState = "Initializing files";
                await CreateCNT();


                // Prepare folder names
                string fixFolder = gameDataBinFolder + ConvertCase("Fix/", Settings.CapsType.LevelFolder);
                string lvlFolder = gameDataBinFolder + ConvertCase(lvlName + "/", Settings.CapsType.LevelFolder);

                // Prepare paths
                paths["fix.lv2"]   = fixFolder + ConvertCase("Fix.lv2", Settings.CapsType.LevelFile);
                paths["fix.pt2"]   = fixFolder + ConvertCase("Fix.pt2", Settings.CapsType.LevelFile);
                paths["lvl.lv2"]   = lvlFolder + ConvertCase(lvlName + ".lv2", Settings.CapsType.LevelFile);
                paths["lvl.pt2"]   = lvlFolder + ConvertCase(lvlName + ".pt2", Settings.CapsType.LevelFile);
                paths["lvl.ato.0"] = lvlFolder + ConvertCase(lvlName + ".ato.0", Settings.CapsType.LevelFile);
                paths["lvl.rw3.0"] = lvlFolder + ConvertCase(lvlName + ".rw3.0", Settings.CapsType.LevelFile);
                paths["lvl.lm3.0"] = lvlFolder + ConvertCase(lvlName + ".lm3.0", Settings.CapsType.LevelFile);
                paths["lvl.lm3.1"] = lvlFolder + ConvertCase(lvlName + ".lm3.1", Settings.CapsType.LevelFile);
                paths["lvl.lm3.2"] = lvlFolder + ConvertCase(lvlName + ".lm3.2", Settings.CapsType.LevelFile);
                paths["lvl.dmo"]   = lvlFolder + ConvertCase(lvlName + ".dmo", Settings.CapsType.LevelFile);

                // Download files
                foreach (KeyValuePair <string, string> path in paths)
                {
                    if (path.Value != null)
                    {
                        await PrepareFile(path.Value);
                    }
                }

                loadingState = "Loading textures";
                await WaitIfNecessary();

                txds.Add(new TextureDictionary(paths["lvl.rw3.0"]));
                loadingState = "Loading lightmaps";
                await WaitIfNecessary();

                if (FileSystem.FileExists(paths["lvl.lm3.0"]))
                {
                    txds.Add(new TextureDictionary(paths["lvl.lm3.0"]));
                }
                if (FileSystem.FileExists(paths["lvl.lm3.1"]))
                {
                    txds.Add(new TextureDictionary(paths["lvl.lm3.1"]));
                }
                loadingState = "Loading geometry";
                await WaitIfNecessary();

                ato = new MeshFile(paths["lvl.ato.0"]);

                loadingState = "Loading level files";
                await WaitIfNecessary();

                LVL fix = new LVL(lvlName, paths["fix.lv2"], 0);
                LVL lvl = new LVL(lvlName, paths["lvl.lv2"], 1);
                files_array[0] = fix;
                files_array[1] = lvl;
                fix.ReadPTR(paths["fix.pt2"]);
                lvl.ReadPTR(paths["lvl.pt2"]);
                await LoadPS2();
            } finally {
                for (int i = 0; i < files_array.Length; i++)
                {
                    if (files_array[i] != null)
                    {
                        files_array[i].Dispose();
                    }
                }
                if (cnt != null)
                {
                    cnt.Dispose();
                }
            }
            await WaitIfNecessary();

            InitModdables();
        }
Пример #9
0
 public SounderPresenter(ISounder view, LVL lvl)
 {
     CurLVL             = lvl;
     _view              = view;
     view.SounderPaint += SounderPanel_Paint;
 }