Exemplo n.º 1
0
        public Wonders(byte[] dates, byte[] states)
        {
            allWonders = new List <Wonder>(16);

            for (int i = 0; i < 16; i++)
            {
                Wonder w = new Wonder();
                w.Date       = StupidDate.GetDateFromOffset(i, dates);
                w.Name       = WonderList[i];
                w.Discovered = (states[i / 8] & (0x01 << (i % 8))) > 0;

                allWonders.Add(w);
            }
        }
Exemplo n.º 2
0
        public Artefacts(byte[] dates, byte[] states)
        {
            allArtefacts = new List <Artefact>(48);

            for (int i = 0; i < 47; i++)
            {
                Artefact w = new Artefact();
                w.Date       = StupidDate.GetDateFromOffset(i, dates);
                w.Name       = ArtefactList[i];
                w.Discovered = (states[(i + 1) / 8] & (0x01 << ((i + 1) % 8))) > 0;

                allArtefacts.Add(w);
            }
        }
Exemplo n.º 3
0
        public Feats(byte[] dates, byte[] states)
        {
            allFeats = new List <Feat>(96);

            for (int i = 0; i < 96; i++)
            {
                Feat f = new Feat();
                f.Date = StupidDate.GetDateFromOffset(i, dates);
                switch (i % 2)
                {
                case 1:
                    f.State = (State)((states[i / 2] & 0xF0) >> 4);
                    break;

                case 0:
                    f.State = (State)((states[i / 2] & 0x0F));
                    break;
                }
                f.Name = FeatList[i];

                allFeats.Add(f);
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// Fills in fields based on data with the assumption that this is a Playstation-style save
        /// </summary>
        private void BuildFromGMEFile(byte[] file)
        {
            CopyArray(file, offset0x00, 0, 0x60);
            offset0x00[0x100] = 0xFF;
            CopyArray(file, saveNameRaw, 0x101, 17);

            Date = StupidDate.FromNormalDate(file[0x114], file[0x115]);

            SaveScreenMapPosition = file[0x116];
            CopyArray(file, offset0x117, 0x117, 9);
            Timer = (uint)((uint)file[0x120] + ((uint)file[0x121] << 8) + ((uint)file[0x122] << 16) + ((uint)file[0x123] << 24));

            byte[] artefactsDates  = new byte[53];
            byte[] artefactsStates = new byte[6];
            CopyArray(file, artefactsDates, 0x124, 53);
            CopyArray(file, artefactsStates, 0x1AD8, 6);
            artefacts = new Artefacts(artefactsDates, artefactsStates);

            byte[] wondersDates  = new byte[18];
            byte[] wondersStates = new byte[2];
            CopyArray(file, wondersDates, 0x159, 18);
            CopyArray(file, wondersStates, 0x1ADE, 2);
            wonders = new Wonders(wondersDates, wondersStates);

            byte[] featsDates  = new byte[108];
            byte[] featsStates = new byte[48];
            CopyArray(file, featsDates, 0x16B, 108);
            CopyArray(file, featsStates, 0x1AE0, 48);
            feats = new Feats(featsDates, featsStates);

            CopyArray(file, offset0x400, 0x3F8, 64);
            numPropositions = file[0x438];
            CopyArray(file, prop1, 0x439, 9);
            CopyArray(file, prop2, 0x442, 9);
            CopyArray(file, prop3, 0x44B, 9);
            CopyArray(file, prop4, 0x454, 9);
            CopyArray(file, prop5, 0x45D, 9);
            CopyArray(file, prop6, 0x466, 9);
            CopyArray(file, prop7, 0x46F, 9);
            CopyArray(file, prop8, 0x478, 9);

            for (int i = 0; i < 16; i++)
            {
                byte[] charBytes = new byte[0xE0];
                CopyArray(file, charBytes, 0x484 + i * 0xE0, 0xE0);
                characters.Add(new Character(charBytes, i));
            }
            for (int i = 16; i < 24; i++)
            {
                characters.Add(new Character(i));
            }
            for (int i = 16; i < 20; i++)
            {
                byte[] charBytes = new byte[0xE0];
                CopyArray(file, charBytes, 0x484 + i * 0xE0, 0xE0);
                characters.Add(new Character(charBytes, i + 8));
            }

            byte[] inventoryBytes = new byte[316];
            CopyArray(file, inventoryBytes, 0x1604, 256);
            inventory = new Inventory(inventoryBytes);

            CopyArray(file, inventoryBytes, 0x1704, 256);
            poachersDen = new Inventory(inventoryBytes, 255);

            CopyArray(file, offset0x2304, 0x1804, 304);
            WarFunds = (uint)((uint)file[0x1934] + ((uint)file[0x1935] << 8) + ((uint)file[0x1936] << 16) + ((uint)file[0x1937] << 24));
            CopyArray(file, offset0x2438, 0x1938, 4);
            CopyArray(file, offset0x2444, 0x1944, 4);
            MapPosition = file[0x1948];
            CopyArray(file, offset0x2449, 0x1949, 191);
            Kills      = (uint)((uint)file[0x1A08] + ((uint)file[0x1A09] << 8) + ((uint)file[0x1A0A] << 16) + ((uint)file[0x1A0B] << 25));
            Casualties = (uint)((uint)file[0x1A0C] + ((uint)file[0x1A0D] << 8) + ((uint)file[0x1A0E] << 16) + ((uint)file[0x1A0F] << 24));
            CopyArray(file, offset0x2510, 0x1A10, 200);
            CopyArray(file, offset0x2610, 0x1B10, 372);

            byte[] optionsBytes = new byte[4];
            CopyArray(file, optionsBytes, 0x1C84, 4);
            options = new Options(optionsBytes);

            CopyArray(file, offset0x2788, 0x1C88, 376);
        }
Exemplo n.º 5
0
        /// <summary>
        /// Fills in fields based on data with assumption that this is a PSP-type save
        /// </summary>
        private void BuildFromPSPFile(byte[] file)
        {
            CopyArray(file, offset0x00, 0, 257);
            CopyArray(file, saveNameRaw, 0x101, 17);

            Date = new StupidDate(file[0x115], (Zodiac)((file[0x114] - 1) << 4));

            SaveScreenMapPosition = file[0x116];
            CopyArray(file, offset0x117, 0x117, 17);
            Timer = (uint)((uint)file[0x128] + ((uint)file[0x129] << 8) + ((uint)file[0x12A] << 16) + ((uint)file[0x12B] << 24));

            byte[] artefactsDates  = new byte[53];
            byte[] artefactsStates = new byte[6];
            CopyArray(file, artefactsDates, 0x12C, 53);
            CopyArray(file, artefactsStates, 0x25D8, 6);
            artefacts = new Artefacts(artefactsDates, artefactsStates);

            byte[] wondersDates  = new byte[18];
            byte[] wondersStates = new byte[2];
            CopyArray(file, wondersDates, 0x161, 18);
            CopyArray(file, wondersStates, 0x25DE, 2);
            wonders = new Wonders(wondersDates, wondersStates);

            byte[] featsDates  = new byte[108];
            byte[] featsStates = new byte[48];
            CopyArray(file, featsDates, 0x173, 108);
            CopyArray(file, featsStates, 0x25E0, 48);
            feats = new Feats(featsDates, featsStates);

            CopyArray(file, offset0x400, 0x400, 64);
            numPropositions = file[0x440];
            CopyArray(file, prop1, 0x441, 9);
            CopyArray(file, prop2, 0x44A, 9);
            CopyArray(file, prop3, 0x453, 9);
            CopyArray(file, prop4, 0x45C, 9);
            CopyArray(file, prop5, 0x465, 9);
            CopyArray(file, prop6, 0x46E, 9);
            CopyArray(file, prop7, 0x477, 9);
            CopyArray(file, prop8, 0x480, 9);

            for (int i = 0; i < 28; i++)
            {
                byte[] charBytes = new byte[256];
                CopyArray(file, charBytes, 0x48C + i * 0x100, 0x100);
                characters.Add(new Character(charBytes, i));
            }

            byte[] inventoryBytes = new byte[316];
            CopyArray(file, inventoryBytes, 0x208C, 316);

            inventory = new Inventory(inventoryBytes);

            CopyArray(file, inventoryBytes, 0x21C8, 316);
            poachersDen = new Inventory(inventoryBytes, 255);

            CopyArray(file, offset0x2304, 0x2304, 304);
            WarFunds = (uint)((uint)file[0x2434] + ((uint)file[0x2435] << 8) + ((uint)file[0x2436] << 16) + ((uint)file[0x2437] << 24));
            CopyArray(file, offset0x2438, 0x2438, 4);
            CopyArray(file, offset0x2444, 0x2444, 4);
            MapPosition = file[0x2448];
            CopyArray(file, offset0x2449, 0x2449, 191);
            Kills      = (uint)((uint)file[0x2508] + ((uint)file[0x2509] << 8) + ((uint)file[0x250A] << 16) + ((uint)file[0x250B] << 25));
            Casualties = (uint)((uint)file[0x250C] + ((uint)file[0x250D] << 8) + ((uint)file[0x250E] << 16) + ((uint)file[0x250F] << 24));
            CopyArray(file, offset0x2510, 0x2510, 200);
            CopyArray(file, offset0x2610, 0x2610, 372);

            byte[] optionsBytes = new byte[4];
            CopyArray(file, optionsBytes, 0x2784, 4);
            options = new Options(optionsBytes);

            CopyArray(file, offset0x2788, 0x2788, 692);
        }
Exemplo n.º 6
0
 public StupidDateEditor(StupidDate initialDate)
     : this()
 {
     monthCombo.SelectedItem = initialDate.Month;
     daySpinner.Value        = initialDate.Day;
 }