Exemplo n.º 1
0
        public MDRDungeon LoadDungeon(Stream source)
        {
            SetupInput(source, 20);

            MDRDungeon result = new MDRDungeon();

            try {
                //find how many levels there are
                int floors = data.ReadMDRWord();

                //make sure it's reasonable
                if ((floors > 255) || (floors < 1))
                {
                    throw new Exception("Invalid number of levels in file, found " + floors + " expecting between 1 and 255");
                }

                //stub fixed width and height
                result.Initialize(32, 32, floors);

                for (int level = 1; level <= floors; level++)
                {
                    result.Floor[level]             = ReadMap(level);
                    result.Floor[level].FloorNumber = level;
                    if (result.Floor[level].Width != 32 || result.Floor[level].Height != 32)
                    {
                        throw new Exception("Floors must all have the standard dimentions.  We expecting 32x32 but found " + result.Floor[level].Width + "x" + result.Floor[level].Height);
                    }
                }
            } finally {
                data.Close();
            }

            return(result);
        }
Exemplo n.º 2
0
    /**
     * Deletes current gamestate (characters, explored map etc) and creates default data.
     * This will causes all characters, maps, etc to be lost
     */
    public void Reset()
    {
        if (!CoM.GameDataLoaded)
        {
            throw new Exception("Can not reset save file until game data has been loaded.");
        }

        SpawnManager = new SpawnManager();

        // Store.
        Store = new MDRStore();
        Store.SetDefault();

        GameStats.AddDefaultStats();

        // Explored dungeon.
        ExploredDungeon = new MDRDungeon();
        ExploredDungeon.Initialize(CoM.Dungeon.Width, CoM.Dungeon.Height, CoM.Dungeon.Floors);

        // characters and party
        CharacterList = loadFromStore <MDRCharacterLibrary>("DefaultCharacters");
        PartyList     = loadFromStore <MDRPartyLibrary>("DefaultParty");

        Trace.Log("Save file reset.");

        _loaded = true;
    }
Exemplo n.º 3
0
Arquivo: CoM.cs Projeto: bsimser/CoM
    /** Loads all the static data, this includes things like monsters, items, etc.  These values do not change as the game progresses */
    public static void LoadGameData()
    {
        DateTime startTime = DateTime.Now;

        Trace.Log("Loading game data:");

        DamageTypes = LoadLibrary <MDRDamageTypeLibrary, MDRDamageType>("DamageTypes", 0, true);
        Skills      = LoadLibrary <MDRSkillLibrary, MDRSkill>("Skills", 0, true);

        SpellClasses = LoadLibrary <MDRSpellClassLibrary, MDRSpellClass>("SpellClasses");
        Spells       = LoadLibrary <MDRSpellLibrary, MDRSpell>("Spells");

        Races  = LoadLibrary <MDRRaceLibrary, MDRRace>("Races");
        Guilds = LoadLibrary <MDRGuildLibrary, MDRGuild>("Guilds");

        ItemClasses = LoadLibrary <MDRItemClassLibrary, MDRItemClass>("ItemClasses");
        ItemTypes   = LoadLibrary <MDRItemTypeLibrary, MDRItemType>("ItemTypes");
        Items       = LoadLibrary <MDRItemLibrary, MDRItem>("Items");

        MonsterClasses = LoadLibrary <MDRMonsterClassLibrary, MDRMonsterClass>("MonsterClasses");
        MonsterTypes   = LoadLibrary <MDRMonsterTypeLibrary, MDRMonsterType>("MonsterTypes");
        Monsters       = LoadLibrary <MDRMonsterLibrary, MDRMonster>("Monsters");

        // stub: import dungeon
        var importer = new MapImporter();

        Dungeon = importer.LoadDungeon(Util.ResourceToStream("Data/MDATA11"));
        //Dungeon = LoadData<MDRDungeon>("Dungeon", 2.0f);

        Trace.Log("Game data loading completed in " + (DateTime.Now - startTime).TotalMilliseconds.ToString("0.0") + "ms.");

        _gameDataLoaded = true;
    }
Exemplo n.º 4
0
    /** Restores game from save file. */
    public void Load()
    {
        Util.Assert(CoM.GameDataLoaded, "Data must be loaded before loading a save file.");

        DateTime startTime = DateTime.Now;

        GameStats       = loadFromStoreDefault <GameRecords>("GameStats");
        Store           = loadFromStoreDefault <MDRStore>("Store");
        ExploredDungeon = loadFromStoreDefault <MDRDungeon>("ExploredDungeon");
        CharacterList   = loadFromStoreDefault <MDRCharacterLibrary>("Characters");
        PartyList       = loadFromStoreDefault <MDRPartyLibrary>("Parties");
        SpawnManager    = loadFromStoreDefault <SpawnManager>("SpawnData");

        Trace.Log("Save file loading completed in " + (DateTime.Now - startTime).TotalMilliseconds.ToString("0.0") + "ms.");

        _loaded = true;

        UpdateCharacterRecords(true);
    }