예제 #1
0
        public void Clear()
        {
            screenx      = 100;
            screeny      = 100;
            VoidLocation = false;
            DaysCost     = 0;

            DPars = new QuestParameterDelta[Quest.maxparameters];
            LocationDescriptions = new string[MaxLocationDescriptions];

            for (var i = 0; i < Quest.maxparameters; ++i)
            {
                DPars[i] = new QuestParameterDelta();
                DPars[i].Clear();
            }

            RandomShowLocationDescriptions = false;
            LocDescrOrder      = 1;
            LocDescrExprOrder  = "";
            FailLocationFlag   = false;
            ClosedLocationFlag = false;
            NoWay2LocationFlag = false;
            PlayerDeath        = false;
            LocationNumber     = 0;

            LocationName        = "(M.Par_Get('LocationClassNewLocationName'))";
            LocationDescription = "(M.Par_Get('LocationClassNewLocationText'))";

            StartLocationFlag = false;
            EndLocationFlag   = false;
        }
예제 #2
0
        public void Clear()
        {
            gatesOk = true;

            dayscost         = 0;
            ShowOrder        = 5;
            Probability      = 1;
            PassTimesValue   = 1;
            PathNumber       = 0;
            FromLocation     = 0;
            ToLocation       = 0;
            StartPathMessage = "M.Par_Get('PathClassStartPathMessage')";

            EndPathMessage  = "";
            LogicExpression = "";

            DPars = new QuestParameterDelta[Quest.maxparameters];

            for (var i = 0; i < Quest.maxparameters; ++i)
            {
                DPars[i] = new QuestParameterDelta();
                DPars[i].Clear();
            }

            VoidPathFlag = true;

            AlwaysShowWhenPlaying = false;
        }
예제 #3
0
        public void DoTransition(QuestPath questPath)
        {
            //if ((accessible_pathes_count <= 0) && (voidpathindex <= 0)) then return

            //Выполнение перехода, если выбран переход
            var pathindex = questPath.PathIndx;

//            if (voidpathindex > 0)
//            {
//                pathindex = voidpathindex;
//            }
//            else
//            {
//                if (CheckedAnswer > 0) then
//                    pathindex = accessible_pathes[CheckedAnswer];
//            }

            if (questPath.PathNumber == 0)
            {
                //ShowMessage('Ошибка перехода');
                return;
            }

            var CurrPathX = currentLocationIndx;
            var CurrPathY = pathindex;

            PathesWeCanGo[CurrPathX, CurrPathY]--;

            daysPassed += quest.Paths[pathindex].dayscost;

            //makedo;
            for (var i = 0; i < Quest.maxparameters; ++i)
            {
                UndoPar[i] = Pars[i];
            }

            currentLocationIndx = quest.Paths[pathindex].ToLocation;

            QuestParameterDelta[] delta = new QuestParameterDelta[Quest.maxparameters];
            for (var i = 0; i < Quest.maxparameters; ++i)
            {
                delta[i] = quest.Paths[pathindex].DPars[i];
            }

            ProcessParametersWithDelta(delta);
            ProcessParVisualOpions(delta);

            lastpathindex = pathindex;

            //            if (quest.Paths[pathindex].EndPathMessage.Trim() != "")
            //            {
            //                Console.WriteLine(quest.Paths[pathindex].EndPathMessage.Trim());
            //            }

            WeAreInTheLocation();
        }
예제 #4
0
        void WeAreInTheLocation()
        {
            failFlag = IsGamePathParameterFail(lastpathindex, Pars, UndoPar);
            if (!failFlag)
            {
                successFlag = IsGamePathParameterSuccess(lastpathindex, Pars, UndoPar);
            }

            if (successFlag)
            {
                System.Console.WriteLine("ShowSuccess");
                return;
            }

            if (failFlag)
            {
                System.Console.WriteLine("ShowFail");
                return;
            }

            QuestParameterDelta[] delta = new QuestParameterDelta[Quest.maxparameters];
            int[] tpars = new int[Quest.maxparameters];
            for (var i = 0; i < Quest.maxparameters; ++i)
            {
                delta[i] = quest.Locations[currentLocationIndx].DPars[i];
                tpars[i] = Pars[i];
            }

            ProcessParametersWithDelta(delta);
            ProcessParVisualOpions(delta);

            string tmp = quest.Paths[lastpathindex].EndPathMessage;

            if (!string.IsNullOrEmpty(tmp))
            {
                LastLocationDescription = quest.ProcessString(tmp, Pars);
                quest.Locations[currentLocationIndx].LocationDescription = LastLocationDescription;
            }

            //Печатаем текст локации,если все нормально
            if (quest.Locations[currentLocationIndx].VoidLocation == false)
            {
                LastLocationDescription = quest.Locations[currentLocationIndx].FindLocationDescription(Pars);
                LastLocationDescription = quest.ProcessString(LastLocationDescription, Pars);
                quest.Locations[currentLocationIndx].LocationDescription = LastLocationDescription;
            }

            daysPassed += quest.Locations[currentLocationIndx].DaysCost;

            successFlag = false;
            failFlag    = IsGameLocationParameterFail(currentLocationIndx, Pars, tpars);
            if (!failFlag)
            {
                successFlag = IsGameLocationParameterSuccess(currentLocationIndx, Pars, tpars);
            }

            if (successFlag)
            {
                System.Console.WriteLine("ShowSuccess");
                return;
            }

            if (failFlag)
            {
                System.Console.WriteLine("ShowFail");
                return;
            }

            if (!CheckLocationType())
            {
                return;
            }

            LastPossibleTransitions = PossibleTransitionsInner();
            if ((LastPossibleTransitions.Count == 1) && (LastPossibleTransitions[0].PathIndx > 0) && (LastPossibleTransitions[0].StartPathMessage == ""))
            {
                DoTransition(LastPossibleTransitions[0]);
            }
            else
            {
                tmp = quest.Paths[lastpathindex].EndPathMessage;
                if (quest.Locations[currentLocationIndx].VoidLocation && (string.IsNullOrEmpty(tmp)))
                {
                    tmp = quest.Locations[currentLocationIndx].FindLocationDescription(Pars);
                    tmp = quest.ProcessString(tmp, Pars);
                    quest.Locations[currentLocationIndx].LocationDescription = tmp;
                    LastLocationDescription = tmp;
                }
                LastPossibleTransitions = PossibleTransitionsInner();
            }
        }