示例#1
0
        public void Load_4_0_1(Stream fs, int xScreenResolution, int YScreenResolution)
        {
            Clear();
            DaysCost       = QuestStreamReader.ReadInt(fs);
            screenx        = QuestStreamReader.ReadInt(fs);
            screeny        = QuestStreamReader.ReadInt(fs);
            LocationNumber = QuestStreamReader.ReadInt(fs);

            StartLocationFlag = QuestStreamReader.ReadBool(fs);
            EndLocationFlag   = QuestStreamReader.ReadBool(fs);
            FailLocationFlag  = QuestStreamReader.ReadBool(fs);
            PlayerDeath       = QuestStreamReader.ReadBool(fs);
            VoidLocation      = QuestStreamReader.ReadBool(fs);

            for (var i = 0; i < Quest.maxparameters; ++i)
            {
                DPars[i].Load_3_9_6(fs);
            }

            for (var i = 0; i < MaxLocationDescriptions; ++i)
            {
                var desc = QuestStreamReader.ReadTextField(fs);
                LocationDescriptions[i] = desc;
            }

            RandomShowLocationDescriptions = QuestStreamReader.ReadBool(fs);
            LocDescrOrder = QuestStreamReader.ReadInt(fs);

            LocationName        = QuestStreamReader.ReadTextField(fs);
            LocationDescription = QuestStreamReader.ReadTextField(fs);
            LocDescrExprOrder   = QuestStreamReader.ReadTextField(fs);

            LocationDescription = "";
        }
示例#2
0
        public void Load_3_9_3(Stream fs)
        {
            Clear();

            DaysCost = QuestStreamReader.ReadInt(fs);

            screenx        = QuestStreamReader.ReadInt(fs);
            screeny        = QuestStreamReader.ReadInt(fs);
            LocationNumber = QuestStreamReader.ReadInt(fs);

            StartLocationFlag = QuestStreamReader.ReadBool(fs);
            EndLocationFlag   = QuestStreamReader.ReadBool(fs);
            FailLocationFlag  = QuestStreamReader.ReadBool(fs);
            PlayerDeath       = QuestStreamReader.ReadBool(fs);

            for (var i = 0; i < 12; ++i)
            {
                DPars[i].Load_3_9_3(fs);
            }

            for (var i = 0; i < MaxLocationDescriptions; ++i)
            {
                var desc = QuestStreamReader.ReadTextField(fs);
                LocationDescriptions[i] = desc;
            }

            RandomShowLocationDescriptions = QuestStreamReader.ReadBool(fs);
            LocDescrOrder = QuestStreamReader.ReadInt(fs);

            LocationName        = QuestStreamReader.ReadTextField(fs);
            LocationDescription = QuestStreamReader.ReadTextField(fs);
            LocationDescription = "";
        }
示例#3
0
        public void Load_3_9_0(FileStream fs)
        {
            Money = false;

            min     = QuestStreamReader.ReadInt(fs);
            max     = QuestStreamReader.ReadInt(fs);
            value   = QuestStreamReader.ReadInt(fs);
            ParType = QuestStreamReader.ReadInt(fs);

            Hidden     = QuestStreamReader.ReadBool(fs);
            ShowIfZero = QuestStreamReader.ReadBool(fs);
            LoLimit    = QuestStreamReader.ReadBool(fs);
            Enabled    = QuestStreamReader.ReadBool(fs);

            ValueOfViewStrings = QuestStreamReader.ReadInt(fs);

            Name = QuestStreamReader.ReadTextField(fs);

            ViewFormatStrings = new ParameterViewString[10];
            for (var i = 0; i < ValueOfViewStrings; ++i)
            {
                ViewFormatStrings[i].Load(fs);
            }

            CriticalMessage = QuestStreamReader.ReadTextField(fs);
            AltDiapStartValues.Clear();
            AltDiapStartValues.Add(value, value);
        }
示例#4
0
        public void Load(FileStream fs)
        {
            Money = false;

            min     = QuestStreamReader.ReadInt(fs);
            max     = QuestStreamReader.ReadInt(fs);
            value   = QuestStreamReader.ReadInt(fs);
            ParType = QuestStreamReader.ReadInt(fs);

            Hidden     = QuestStreamReader.ReadBool(fs);
            ShowIfZero = QuestStreamReader.ReadBool(fs);
            LoLimit    = QuestStreamReader.ReadBool(fs);
            Enabled    = QuestStreamReader.ReadBool(fs);

            Name            = QuestStreamReader.ReadTextField(fs);
            GameName        = QuestStreamReader.ReadTextField(fs);
            CriticalMessage = QuestStreamReader.ReadTextField(fs);

            ViewFormatStrings  = new ParameterViewString[10];
            ValueOfViewStrings = 1;

            ViewFormatStrings[0].max = max;
            ViewFormatStrings[0].min = min;
            ViewFormatStrings[0].str = GameName.Trim();

            AltDiapStartValues.Clear();
            AltDiapStartValues.Add(value, value);
        }
示例#5
0
        public void Load_4_0_2(FileStream fs, int xRes, int yRes)
        {
            Clear();


            Probability = QuestStreamReader.ReadDouble(fs);
            dayscost    = QuestStreamReader.ReadInt(fs);

            PathNumber   = QuestStreamReader.ReadInt(fs);
            FromLocation = QuestStreamReader.ReadInt(fs);
            ToLocation   = QuestStreamReader.ReadInt(fs);
            VoidPathFlag = QuestStreamReader.ReadBool(fs);

            AlwaysShowWhenPlaying = QuestStreamReader.ReadBool(fs);
            PassTimesValue        = QuestStreamReader.ReadInt(fs);
            ShowOrder             = QuestStreamReader.ReadInt(fs);

            for (var i = 0; i < Quest.maxparameters; ++i)
            {
                DPars[i].Load_3_9_6(fs);
            }

            LogicExpression = QuestStreamReader.ReadTextField(fs);

            StartPathMessage = QuestStreamReader.ReadTextField(fs);
            EndPathMessage   = QuestStreamReader.ReadTextField(fs);
        }
示例#6
0
        public void Load(Stream fs)
        {
            Count    = QuestStreamReader.ReadInt(fs);
            Negation = QuestStreamReader.ReadBool(fs);

            Values = new int[Count + 2];

            for (var i = 0; i < Count; ++i)
            {
                Values[i] = QuestStreamReader.ReadInt(fs);
            }
        }
示例#7
0
        public void Load(Stream fs)
        {
            Clear();

            min   = QuestStreamReader.ReadInt(fs);
            max   = QuestStreamReader.ReadInt(fs);
            delta = QuestStreamReader.ReadInt(fs);
            ParameterViewAction    = QuestStreamReader.ReadInt(fs);
            CriticalMessageVisible = QuestStreamReader.ReadBool(fs);
            DeltaPercentFlag       = QuestStreamReader.ReadBool(fs);
            CriticalMessage        = QuestStreamReader.ReadTextField(fs);
        }
示例#8
0
        public void Load(FileStream fs)
        {
            Clear();
            PathNumber   = QuestStreamReader.ReadInt(fs);
            FromLocation = QuestStreamReader.ReadInt(fs);
            ToLocation   = QuestStreamReader.ReadInt(fs);
            VoidPathFlag = QuestStreamReader.ReadBool(fs);

            for (var i = 0; i < 9; ++i)
            {
                DPars[i].Load(fs);
            }

            StartPathMessage = QuestStreamReader.ReadTextField(fs);
            EndPathMessage   = QuestStreamReader.ReadTextField(fs);
        }
示例#9
0
        public void Load_3_9_3(Stream fs)
        {
            Clear();

            bitmask = QuestStreamReader.ReadInt(fs);

            min   = QuestStreamReader.ReadInt(fs);
            max   = QuestStreamReader.ReadInt(fs);
            delta = QuestStreamReader.ReadInt(fs);
            ParameterViewAction    = QuestStreamReader.ReadInt(fs);
            CriticalMessageVisible = QuestStreamReader.ReadBool(fs);
            DeltaPercentFlag       = QuestStreamReader.ReadBool(fs);

            ValuesGate.Load(fs);
            ModZeroesGate.Load(fs);

            CriticalMessage = QuestStreamReader.ReadTextField(fs);
        }
示例#10
0
        public void Load_3_9_1(FileStream fs)
        {
            Clear();

            PathNumber   = QuestStreamReader.ReadInt(fs);
            FromLocation = QuestStreamReader.ReadInt(fs);
            ToLocation   = QuestStreamReader.ReadInt(fs);
            VoidPathFlag = QuestStreamReader.ReadBool(fs);

            AlwaysShowWhenPlaying = QuestStreamReader.ReadBool(fs);
            PassTimesValue        = QuestStreamReader.ReadInt(fs);

            for (var i = 0; i < 9; ++i)
            {
                DPars[i].Load(fs);
            }

            StartPathMessage = QuestStreamReader.ReadTextField(fs);
            EndPathMessage   = QuestStreamReader.ReadTextField(fs);
        }
示例#11
0
        public void Load(Stream fs)
        {
            Clear();

            screenx        = QuestStreamReader.ReadInt(fs);
            screeny        = QuestStreamReader.ReadInt(fs);
            LocationNumber = QuestStreamReader.ReadInt(fs);

            StartLocationFlag = QuestStreamReader.ReadBool(fs);
            EndLocationFlag   = QuestStreamReader.ReadBool(fs);
            FailLocationFlag  = QuestStreamReader.ReadBool(fs);
            PlayerDeath       = QuestStreamReader.ReadBool(fs);

            for (var i = 0; i < 9; ++i)
            {
                DPars[i].Load(fs);
            }

            LocationName            = QuestStreamReader.ReadTextField(fs);
            LocationDescription     = QuestStreamReader.ReadTextField(fs);
            LocationDescriptions[0] = LocationDescription.Trim();
        }
示例#12
0
        public Quest(string filename)
        {
            using (var fs = new FileStream(filename, FileMode.Open))
            {
                version = QuestStreamReader.ReadInt(fs);

                if (version.isOlderThan3_8_5())
                {
                    var race = version;
                    version = QuestFileVersion.FileVersion_Older_than_3_8_5;
                }
                else
                {
                    var race = QuestStreamReader.ReadInt(fs);
                }

                if (version.isSince3_9_6())
                {
                    var set = QuestStreamReader.ReadSetInt(fs); // SRace:TOwnerSet;   TOwnerSet = set of TOwner;   TOwner=(Maloc,Peleng,People,Fei,Gaal,Kling,None);// владелец чего-либо раса, клинг, Нет
                }
                else
                {
                    //SRace:=RaceToSRace(Race);
                }


                if (version.isSince3_8_5())
                {
                    var needNotToReturn = QuestStreamReader.ReadBool(fs);
                }


                var targetRace = QuestStreamReader.ReadInt(fs);

                if (version.isSince3_9_6())
                {
                    var set = QuestStreamReader.ReadSetInt(fs);    // SRace:TOwnerSet;
                }
                else
                {
                    //STargetRace:=RaceToTOwnerSet(targetRace);
                }


                var rangerStatus = QuestStreamReader.ReadInt(fs);

                if (version.isSince4_0_0())
                {
                    var set = QuestStreamReader.ReadSetInt(fs);// TStatusSet = set of TStatus; TStatus = (Trader,Pirate,Warrior); //Статус рейнджера
                }
                else
                {
                    //SRangerStatus:=RangerStatusToTStatusSet(RangerStatus);
                }


                var rangerRace = QuestStreamReader.ReadInt(fs);

                if (version.isSince4_0_0())
                {
                    var set = QuestStreamReader.ReadSetInt(fs);    // SRangerRace:TOwnerSet;
                }
                else
                {
                    //SRangerRace:=RangerRaceToTOwnerSet(RangerRace);
                }

                var planetReaction = QuestStreamReader.ReadInt(fs);  // Отношение после выполнения квеста // -1 - хуже, 0 - также, 1-лучше

                var xRes = QuestStreamReader.ReadInt(fs);
                var yRes = QuestStreamReader.ReadInt(fs);

                var xGrad = QuestStreamReader.ReadInt(fs);    // 15
                var yGrad = QuestStreamReader.ReadInt(fs);    // 12

                var artifactSize = QuestStreamReader.ReadInt(fs);

                if (version.isSince4_0_0())
                {
                    var defPathGoTimesValue = QuestStreamReader.ReadInt(fs); //проходимость перехода по умолчанию
                }

                if (version.isSince4_0_1())
                {
                    var difficulty = QuestStreamReader.ReadInt(fs);
                }

                Pars = new QuestParameter[maxparameters];


                if (version.isSince4_0_1())
                {
                    for (var i = 0; i < maxparameters; ++i)
                    {
                        Pars[i].Load_4_0_1(fs);
                    }
                }
                else if (version.isSince3_9_6())
                {
                    for (var i = 0; i < maxparameters; ++i)
                    {
                        Pars[i].Load_3_9_6(fs);
                    }

                    for (var i = 0; i < maxparameters; ++i)
                    {
                        Pars[i].AltDiapStartValues.Add(Pars[i].value);
                    }
                }
                else if (version.isSince3_9_5())
                {
                    for (var i = 0; i < 12; ++i)
                    {
                        Pars[i].Load_3_9_5(fs);
                    }
                }
                else if (version.isSince3_9_2())
                {
                    for (var i = 0; i < 12; ++i)
                    {
                        Pars[i].Load_3_9_0(fs);
                    }
                }
                else if (version.isSince3_9_0())
                {
                    for (var i = 0; i < 9; ++i)
                    {
                        Pars[i].Load_3_9_0(fs);
                    }
                }
                else
                {
                    for (var i = 0; i < 9; ++i)
                    {
                        Pars[i].Load(fs);
                    }
                }

                RToStar     = QuestStreamReader.ReadTextField(fs);
                RParsec     = QuestStreamReader.ReadTextField(fs);
                RArtefact   = QuestStreamReader.ReadTextField(fs);
                RToPlanet   = QuestStreamReader.ReadTextField(fs);
                RDate       = QuestStreamReader.ReadTextField(fs);
                RMoney      = QuestStreamReader.ReadTextField(fs);
                RFromPLanet = QuestStreamReader.ReadTextField(fs);
                RFromStar   = QuestStreamReader.ReadTextField(fs);
                RRanger     = QuestStreamReader.ReadTextField(fs);

                LocationsValue = QuestStreamReader.ReadInt(fs);
                PathesValue    = QuestStreamReader.ReadInt(fs);

                QuestSuccessGovMessage = QuestStreamReader.ReadTextField(fs);
                QuestDescription       = QuestStreamReader.ReadTextField(fs);
                QuestTargetName        = QuestStreamReader.ReadTextField(fs);

                Locations.Capacity = LocationsValue;
                Paths.Capacity     = PathesValue;

                for (var i = 0; i < LocationsValue; ++i)
                {
                    Locations.Add(new QuestLocation());

                    if (version.isSince4_0_1())
                    {
                        Locations[i].Load_4_0_1(fs, xRes, yRes);
                    }
                    else if (version.isSince3_9_6())
                    {
                        Locations[i].Load_3_9_6(fs, xRes, yRes);
                    }
                    else if (version.isSince3_9_4())
                    {
                        Locations[i].Load_3_9_4(fs, xRes, yRes);
                    }
                    else if (version.isSince3_9_3())
                    {
                        Locations[i].Load_3_9_3(fs);
                    }
                    else if (version.isSince3_9_2())
                    {
                        Locations[i].Load_3_9_2(fs);
                    }
                    else
                    {
                        Locations[i].Load(fs);
                    }

                    if (Locations[i].StartLocationFlag)
                    {
                        if (startLocationIndx != -1)
                        {
                            throw new Exception("Several start locations found");
                        }

                        startLocationIndx = i;
                    }

                    codeToIndx[Locations[i].LocationNumber] = i;
                }

                if (startLocationIndx == -1)
                {
                    throw new Exception("No start locations found");
                }

                for (var i = 0; i < PathesValue; ++i)
                {
                    Paths.Add(new QuestPath());

                    if (version.isSince4_0_2())
                    {
                        Paths[i].Load_4_0_2(fs, xRes, yRes);
                    }
                    else if (version.isSince3_9_6())
                    {
                        Paths[i].Load_3_9_6(fs, xRes, yRes);
                    }
                    else if (version.isSince3_9_4())
                    {
                        Paths[i].Load_3_9_4(fs, xRes, yRes);
                    }
                    else if (version.isSince3_9_3())
                    {
                        Paths[i].Load_3_9_3(fs);
                    }
                    else if (version.isSince3_9_2())
                    {
                        Paths[i].Load_3_9_2(fs);
                    }
                    else if (version.isSince3_9_1())
                    {
                        Paths[i].Load_3_9_1(fs);
                    }
                    else if (version.isSince3_8_5())
                    {
                        Paths[i].Load_3_8_5(fs);
                    }
                    else
                    {
                        Paths[i].Load(fs);
                    }

                    Paths[i].PathIndx           = i;
                    Paths[i].FromLocationNumber = Paths[i].FromLocation;
                    Paths[i].ToLocationNumber   = Paths[i].ToLocation;
                    Paths[i].FromLocation       = LocationCodeToIndx(Paths[i].FromLocation);
                    Paths[i].ToLocation         = LocationCodeToIndx(Paths[i].ToLocation);

                    var fromIndx = Paths[i].FromLocation;
                    if (fromIndx < 0)
                    {
                        throw new Exception("from < 0. == " + fromIndx);
                    }
                    if (fromIndx >= Locations.Count())
                    {
                        throw new Exception("from >= count (" + Locations.Count() + "). == " + fromIndx);
                    }

                    Locations[fromIndx].transitions.Add(Paths[i]);
                }
            }
        }
示例#13
0
 public void Load(Stream fs)
 {
     min = QuestStreamReader.ReadInt(fs);
     max = QuestStreamReader.ReadInt(fs);
     str = QuestStreamReader.ReadTextField(fs);
 }