コード例 #1
0
ファイル: BIQTerrain.cs プロジェクト: jimmyh77/IndieCiv
        public void Load( BinaryFormatter formatter )
        {
            NumTotalResources = formatter.ReadInt32();

            int bytesOfAllowedResourceDataToInput = ( NumTotalResources + 7 ) / 8;
            PossibleResources = new List<byte>();
            for ( int j = 0; j < bytesOfAllowedResourceDataToInput; j++ )
                PossibleResources.Add ( formatter.ReadByte() );

            Name = formatter.ReadString( ( int ) BIQTerrainSizes.Name );
            Civlopedia = formatter.ReadString( ( int ) BIQTerrainSizes.CivilopediaEntry );

            FoodBonus = formatter.ReadInt32();

            ShieldsBonus = formatter.ReadInt32();
            CommerceBonus = formatter.ReadInt32();
            DefenceBonus = formatter.ReadInt32();
            MovementCost = formatter.ReadInt32();
            Food = formatter.ReadInt32();
            Shields = formatter.ReadInt32();
            Commerce = formatter.ReadInt32();
            WorkerJob = formatter.ReadInt32();
            PollutionEffect = formatter.ReadInt32();
            AllowCities = formatter.ReadByte();
            AllowColonies = formatter.ReadByte();
            Impassible = formatter.ReadByte();
            ImpassibleWheeled = formatter.ReadByte();
            AllowAirfields = formatter.ReadByte();
            AllowForts = formatter.ReadByte();
            AllowOutposts = formatter.ReadByte();
            AllowRadarTowers = formatter.ReadByte();

            Unknown1 = formatter.ReadInt32();
            LandmarkEnabled = formatter.ReadByte();
            LandmarkFood = formatter.ReadInt32();
            LandmarkShields = formatter.ReadInt32();
            LandmarkCommerce = formatter.ReadInt32();
            LandmarkFoodBonus = formatter.ReadInt32();
            LandmarkShieldBonus = formatter.ReadInt32();
            LandmarkCommerceBonus = formatter.ReadInt32();
            LandmarkMovementCost = formatter.ReadInt32();
            LandmarkDefenseBonus = formatter.ReadInt32();
            LandmarkName = formatter.ReadString( ( int ) BIQTerrainSizes.LandmarkName );
            LandmarkCivlopedia = formatter.ReadString( ( int ) BIQTerrainSizes.LandmarkCivlopedia);
            Unknown2 = formatter.ReadInt32();
            TerrainFlags = formatter.ReadInt32();
            DiseaseStrength = formatter.ReadInt32();
        }
コード例 #2
0
ファイル: BIQLead.cs プロジェクト: jimmyh77/IndieCiv
        public void Load( BinaryFormatter formatter )
        {
            CustomCivData = formatter.ReadInt32();
            HumanPlayer = formatter.ReadInt32();
            LeaderName = formatter.ReadString((int)BIQLeadSizes.LeaderName);
            Unknown1 = formatter.ReadInt32();
            Unknown2 = formatter.ReadInt32();

            NumberOfDifferentStartUnits = formatter.ReadInt32();
            DifferentStartUnits = new List<StartUnits>();
            for (int i = 0; i < NumberOfDifferentStartUnits; i++)
            {
                StartUnits startUnits = new StartUnits();
                startUnits.UnitsOfThisType = formatter.ReadInt32();
                startUnits.TypeOfStartingUnit = formatter.ReadInt32();

                DifferentStartUnits.Add(startUnits);
            }

            GenderOfLeaderName = formatter.ReadInt32();

            NumberOfStartingTechnologies = formatter.ReadInt32();
            StartingTechnologies = new List<int>();
            for (int i = 0; i < NumberOfStartingTechnologies; i++)
                StartingTechnologies.Add(formatter.ReadInt32());

            Difficulty = formatter.ReadInt32();
            InitialEra = formatter.ReadInt32();
            StartCash = formatter.ReadInt32();
            Government = formatter.ReadInt32();
            Civ = formatter.ReadInt32();
            Color = formatter.ReadInt32();
            SkipFirstTurn = formatter.ReadInt32();

            Unknown3 = formatter.ReadInt32();
            StartEmbassies = formatter.ReadByte();
        }
コード例 #3
0
ファイル: BIQGame.cs プロジェクト: jimmyh77/IndieCiv
        public void Load( BinaryFormatter formatter )
        {
            UseDefaultRules = formatter.ReadInt32();
            DefaultVictoryConditions = formatter.ReadInt32();
            NumberOfPlayableCivs = formatter.ReadInt32();

            IdOfPlayableCivs = new List<int>();
            for ( int i = 0; i < NumberOfPlayableCivs; i++ )
                IdOfPlayableCivs.Add( formatter.ReadInt32() );

            VictoryConditionsAndRules = formatter.ReadInt32();
            PlaceCaptureUnits = formatter.ReadInt32();
            AutoPlaceKings = formatter.ReadInt32();
            AutoPlaceVictoryLocations = formatter.ReadInt32();
            DebugMode = formatter.ReadInt32();
            UseTimeLimit = formatter.ReadInt32();
            BaseTimeUnit = formatter.ReadInt32();
            StartMonth = formatter.ReadInt32();
            StartWeek = formatter.ReadInt32();
            StartYear = formatter.ReadInt32();
            MinuteTimeLimit = formatter.ReadInt32();
            TurnTimeLimit = formatter.ReadInt32();

            TurnsPerTimescalePart = new List<int>();
            for ( int i = 0; i < 7; i++ )
                TurnsPerTimescalePart.Add( formatter.ReadInt32() );

            TimeUnitsPerTurn = new List<int>();
            for ( int i = 0; i < 7; i++ )
                TimeUnitsPerTurn.Add( formatter.ReadInt32() );

            ScenarioSearchFolders = formatter.ReadString( ( int ) BIQGameSizes.ScenarioSearchFolders );

            CivPartOfWhichAlliance = new List<int>();
            for ( int i = 0; i < NumberOfPlayableCivs; i++ )
                CivPartOfWhichAlliance.Add( formatter.ReadInt32() );

            VictoryPointLimit = formatter.ReadInt32();
            CityEliminationCount  = formatter.ReadInt32();
            OneCityCultureWinLimit  = formatter.ReadInt32();
            AllCitiesCultureWinLimit = formatter.ReadInt32();
            DominationTerrainPercent = formatter.ReadInt32();
            DominationPopulationPercent = formatter.ReadInt32();
            WonderVP = formatter.ReadInt32();
            DefeatingOpposingUnitVP = formatter.ReadInt32();
            AdvancementVP = formatter.ReadInt32();
            CityConquestVP = formatter.ReadInt32();
            VictoryPointVP = formatter.ReadInt32();
            CaptureSpecialUnitVP = formatter.ReadInt32();
            Unknown1 = formatter.ReadInt32();
            Unknown2 = formatter.ReadByte();

            Alliance0 = formatter.ReadString( ( int ) BIQGameSizes.Alliance0 );
            Alliance1 = formatter.ReadString( ( int ) BIQGameSizes.Alliance1 );
            Alliance2 = formatter.ReadString( ( int ) BIQGameSizes.Alliance2 );
            Alliance3 = formatter.ReadString( ( int ) BIQGameSizes.Alliance3 );
            Alliance4 = formatter.ReadString( ( int ) BIQGameSizes.Alliance4 );

            warWith0 = new List<int>();
            warWith1 = new List<int>();
            warWith2 = new List<int>();
            warWith3 = new List<int>();
            warWith4 = new List<int>();
            for ( int i = 0; i < 5; i++ )
            {
                warWith0.Add( formatter.ReadInt32() );
                warWith1.Add( formatter.ReadInt32() );
                warWith2.Add( formatter.ReadInt32() );
                warWith3.Add( formatter.ReadInt32() );
                warWith4.Add( formatter.ReadInt32() );
            }

            AllianceVictoryType = formatter.ReadInt32();

            PlaugeName = formatter.ReadString( ( int ) BIQGameSizes.PlaugeName );
            PermitPlagues = formatter.ReadByte();
            PlagueEarliestStart = formatter.ReadInt32();
            PlagueVariation = formatter.ReadInt32();
            PlagueDuration = formatter.ReadInt32();
            PlagueStrength = formatter.ReadInt32();
            PlagueGracePeriod = formatter.ReadInt32();
            PlagueMaxOccurance = formatter.ReadInt32();
            Unknown3 = formatter.ReadInt32();
            Unknown4 = formatter.ReadString( ( int ) BIQGameSizes.Unknown4 );
            RespawnFlagUnits = formatter.ReadInt32();
            CaptureAnyFlag = formatter.ReadByte();
            GoldForCapture = formatter.ReadInt32();
            MapVisible = formatter.ReadByte();
            RetainCulture = formatter.ReadByte();
            Unknown5 = formatter.ReadInt32();
            EruptionPeriod = formatter.ReadInt32();

            if ( BIQHeader.MajorVer == 12 && BIQHeader.MinorVer >= 7 )
            {
                MpBaseTime = formatter.ReadInt32();
                MpCityTime = formatter.ReadInt32();
                MpUnitTime = formatter.ReadInt32();
            }
            else
            {
                MpBaseTime = 24;
                MpCityTime = 2;
                MpUnitTime = 3;
            }
        }
コード例 #4
0
ファイル: BIQUnit.cs プロジェクト: jimmyh77/IndieCiv
        public void Load( BinaryFormatter formatter )
        {
            ZoneOfControl = formatter.ReadInt32();
            Name = formatter.ReadString( ( int ) BIQUnitSizes.Name );
            Civlopedia = formatter.ReadString( ( int ) BIQUnitSizes.Civlopedia );
            BombardStrength = formatter.ReadInt32();
            BombardRange = formatter.ReadInt32();
            Capacity = formatter.ReadInt32();
            Cost = formatter.ReadInt32();
            Defence = formatter.ReadInt32();
            IconIndex = formatter.ReadInt32();
            Attack = formatter.ReadInt32();
            OperationalRange = formatter.ReadInt32();
            PopulationCost = formatter.ReadInt32();
            RateOfFire = formatter.ReadInt32();
            Movement = formatter.ReadInt32();
            Tech = formatter.ReadInt32();
            UpgradeTo = formatter.ReadInt32();
            Resource1 = formatter.ReadInt32();
            Resource2 = formatter.ReadInt32();
            Resource3 = formatter.ReadInt32();
            UnitAbilities = formatter.ReadInt32();
            AIStrategy = formatter.ReadInt32();
            AvailableTo = formatter.ReadInt32();
            StandardOrdersSpecialActions = formatter.ReadInt32();
            AirMissions = formatter.ReadInt32();
            UnitClass = formatter.ReadInt32();
            OtherStrategy = formatter.ReadInt32();
            HitPointBonus = formatter.ReadInt32();
            PTWStandardOrders = formatter.ReadInt32();
            PTWSpecialActions = formatter.ReadInt32();
            PTWWorkerActions = formatter.ReadInt32();
            PTWAirMissions = formatter.ReadInt32();

            PTWActionsMix = formatter.ReadShort16();
            Unknown1 = formatter.ReadShort16();
            BombardEffects = formatter.ReadInt32();
            IgnoreMovementCost = new List<byte>();
            for ( int i = 0; i < 14; i++ )
                IgnoreMovementCost.Add ( formatter.ReadByte() );
            RequireSupport = formatter.ReadInt32();
            UseExactCost = formatter.ReadInt32();
            TelepadRange = formatter.ReadInt32();
            Unknown4 = formatter.ReadInt32();
            NumLegalUnitTelepads = formatter.ReadInt32();

            LegalUnitTelepads = new List<int>();
            for ( int i = 0; i < NumLegalUnitTelepads; i++ )
                LegalUnitTelepads.Add( formatter.ReadInt32() );

            EnslaveResults = formatter.ReadInt32();
            Unknown6 = formatter.ReadInt32();
            NumberOfStealthTargets = formatter.ReadInt32();

            StealthTargets = new List<int>();
            for ( int i = 0; i < NumberOfStealthTargets; i++ )
                StealthTargets.Add ( formatter.ReadInt32() );

            Unknown7 = formatter.ReadInt32();
            NumLegalBuildingTelepads = formatter.ReadInt32();
            LegalBuildingTelepads = new List<int>();
            for ( int i = 0; i < NumLegalBuildingTelepads; i++ )
                LegalBuildingTelepads.Add( formatter.ReadInt32() );

            CreateCraters = formatter.ReadByte();
            WorkerStrength1 = formatter.ReadInt32();

            int temp = formatter.ReadInt32();
            if ( temp == 1 )
            {
                WorkerStrength2 = temp;
                WorkerStrength3 = formatter.ReadInt32();

                temp = formatter.ReadInt32();
            }

            Unknown9 = temp;
            AitDefense = formatter.ReadInt32();
        }
コード例 #5
0
ファイル: BIQTile.cs プロジェクト: jimmyh77/IndieCiv
        public void Load( BinaryFormatter formatter )
        {
            RiverConnectionInfo = formatter.ReadByte();
            Border = formatter.ReadByte();
            Resource = formatter.ReadInt32();
            Image = formatter.ReadByte();
            File = formatter.ReadByte();
            Unknown1 = formatter.ReadShort16();
            Overlays = formatter.ReadByte();
            BaseRealTerrain = formatter.ReadByte();
            Bonuses = formatter.ReadByte();
            RiverCrossingData = formatter.ReadByte();
            BarbarianTribe = formatter.ReadShort16();
            City = formatter.ReadShort16();
            Colony = formatter.ReadShort16();
            Continent = formatter.ReadShort16();
            Unknown2 = formatter.ReadByte();
            VictoryPointLocation = formatter.ReadShort16();
            Ruin = formatter.ReadInt32();

            // Conquests
            C3COverlays = formatter.ReadInt32();
            Unknown3 = formatter.ReadByte();
            C3CBaseRealTerrain = formatter.ReadByte();
            Unknown4 = formatter.ReadShort16();
            FogOfWar = formatter.ReadShort16();
            C3CBonuses = formatter.ReadInt32();
            Unknown5 = formatter.ReadShort16();
        }
コード例 #6
0
ファイル: Flc.cs プロジェクト: jimmyh77/IndieCiv
        long FlcDeltaFlc(BinaryFormatter formatter, int frame)
        {
            long pos, read;
            short lines, l, b, colour;
            byte skip;
            sbyte change;

            lines = formatter.ReadShort16();

            read = 6 + sizeof(short);

            l = 0;
            while (lines > 0) {
                pos = l * FlcHeader.width;

                b = formatter.ReadShort16();
                read += 2;
                if ((b & 0xC000) == 0x0000) {
                    b &= 0x3FFF;
                    for (int j = 0; j < b; j++) {
                        skip = formatter.ReadByte();
                        pos += skip;
                        read += 1;

                        change = formatter.ReadSByte();
                        read += 1;
                        if (change > 0) {
                            for (int i = 0; i < change; i++) {
                                colour = formatter.ReadShort16();
                                read += 2;
                                mBufferFrames[frame][pos++] = (byte)(colour & 0x00FF);
                                mBufferFrames[frame][pos++] = (byte)((colour >> 8) & 0x00FF);
                            }
                        }
                        else {
                            change = (sbyte)-change;
                            colour = formatter.ReadShort16();
                            read += 2;

                            for (int i = 0; i < change; i++) {
                                mBufferFrames[frame][pos++] = (byte)(colour & 0x00FF);
                                mBufferFrames[frame][pos++] = (byte)((colour >> 8) & 0x00FF);
                            }
                        }
                    }
                    lines--;
                    l++;

                }
                else {
                    if ((b & 0xC000) == 0xC000)
                        l -= b;
                    else
                        mBufferFrames[frame][pos++] = (byte)(b & 0x00FF);

                }
            }

            if ((read % 4) == 1) {
                formatter.ReadBytes(2);
                read++;
            }

            return read;
        }
コード例 #7
0
ファイル: Flc.cs プロジェクト: jimmyh77/IndieCiv
        void FlcColour256(BinaryFormatter formatter, int frame)
        {
            short packets, idx;
            byte skip, change;

            packets = formatter.ReadShort16();

            idx = 0;
            for (int i = 0; i < packets; i++) {

                skip = formatter.ReadByte();
                idx += skip;

                change = formatter.ReadByte();

                if (change == 0) {

                    for (idx = 0; idx < 256; idx++) {
                        mColourMap[frame][idx].red = formatter.ReadByte();
                        mColourMap[frame][idx].green = formatter.ReadByte();
                        mColourMap[frame][idx].blue = formatter.ReadByte();
                    }

                }
                else {
                    for (int j = 0; j < change; j++) {
                        mColourMap[frame][idx].red = formatter.ReadByte();
                        mColourMap[frame][idx].green = formatter.ReadByte();
                        mColourMap[frame][idx].blue = formatter.ReadByte();
                        idx++;

                    }
                }

            }
        }
コード例 #8
0
ファイル: Flc.cs プロジェクト: jimmyh77/IndieCiv
        void FlcBitwiseRun(BinaryFormatter formatter, int frame)
        {
            int line = 0;
            int k, pos = 0;
            sbyte size;
            byte colour;

            while (line++ < FlcHeader.height) {
                formatter.ReadByte();
                k = 0;
                while (k < FlcHeader.width) {
                    size = (sbyte)formatter.ReadByte();

                    if (size > 0) {
                        colour = formatter.ReadByte();

                        k += size;
                        for (int j = 0; j < size; j++ )
                            mBufferFrames[frame][pos++] = colour;
                    }
                    else {
                        size = (sbyte)-size;
                        k += size;

                        for (int j = 0; j < size; j++) {
                            colour = formatter.ReadByte();
                            mBufferFrames[frame][pos++] = colour;
                        }

                    }
                }
            }
        }
コード例 #9
0
ファイル: BIQCity.cs プロジェクト: jimmyh77/IndieCiv
        public void Load( BinaryFormatter formatter )
        {
            HasWalls = formatter.ReadByte();
            HasPalace = formatter.ReadByte();
            Name = formatter.ReadString((int)BIQCitySizes.Name);
            OwnerType = formatter.ReadInt32();
            NumBuildings = formatter.ReadInt32();

            Buildings = new List<int>();
            for ( int i = 0; i < NumBuildings; i++ )
                Buildings.Add( formatter.ReadInt32() );

            Culture = formatter.ReadInt32();
            Owner = formatter.ReadInt32();
            Size = formatter.ReadInt32();
            X = formatter.ReadInt32();
            Y = formatter.ReadInt32();
            CityLevel = formatter.ReadInt32();
            BorderLevel = formatter.ReadInt32();
            UseAutoName = formatter.ReadInt32();
        }