Пример #1
0
        public CodegenExpression MakeCodegen(
            CodegenMethodScope parent,
            SAIFFInitializeSymbol symbols,
            CodegenClassScope classScope)
        {
            var method = parent.MakeChild(typeof(ContextControllerDetailInitiatedTerminated), GetType(), classScope);

            method.Block
                .DeclareVar<ContextControllerDetailInitiatedTerminated>(
                    "detail",
                    NewInstance(typeof(ContextControllerDetailInitiatedTerminated)))
                .SetProperty(Ref("detail"), "StartCondition", StartCondition.Make(method, symbols, classScope))
                .SetProperty(Ref("detail"), "EndCondition", EndCondition.Make(method, symbols, classScope))
                .SetProperty(Ref("detail"), "IsOverlapping", Constant(IsOverlapping));
            if (DistinctExpressions != null && DistinctExpressions.Length > 0) {
                method.Block
                    .SetProperty(
                        Ref("detail"),
                        "DistinctEval",
                        ExprNodeUtilityCodegen.CodegenEvaluatorMayMultiKeyWCoerce(
                            ExprNodeUtilityQuery.GetForges(DistinctExpressions),
                            null,
                            method,
                            GetType(),
                            classScope))
                    .SetProperty(
                        Ref("detail"),
                        "DistinctTypes",
                        Constant(ExprNodeUtilityQuery.GetExprResultTypes(DistinctExpressions)));
            }

            method.Block.MethodReturn(Ref("detail"));
            return LocalMethod(method);
        }
Пример #2
0
        public override void Tick(float t)
        {
            if (_isAnimating)
            {
                //if (t < _delay) return; // a co jesli wracasz?
                if (_startFromCurrent)
                {
                    _from             = ValueOnBegin.Invoke();
                    _startFromCurrent = false;
                }

                float x = (t - _delay) / _duration;
                onUpdate?.Invoke();
                if (x > 0.0f && x <= 1.0f)
                {
                    OnEvaluate?.Invoke(x);
                }

                if (EndCondition != null && EndCondition.Invoke(x))
                {
                    _isAnimating = false;
                    OnEvaluate?.Invoke(_isForward > 0 ? 1 : 0);
                    onComplete?.Invoke();
                }
            }
        }
 internal void EndGame(EndCondition endCondition)
 {
     if (!GameState.GameHasEnded)
     {
         GameState.GameHasEnded = true;
         ChangePanel(typeof(PanelSelectModule));
         int            gameTime = (int)GameState.GameTime;
         string         text     = endCondition.GetText();
         GameHighScores scores   = HighScore.Load(GameState.Model.Id, GameState.GameHash);
         if (endCondition.GetType() == typeof(EndCondition.Win))
         {
             scores = HighScore.Save(GameState.Model.Id, GameState.GameHash, gameTime, 10);
             text  += "\n\nJesteś na " + (scores.Scores.FindIndex(0, us => us.Score >= gameTime) + 1)
                      + " miejscu.\n\n";
         }
         int i = 0;
         if (scores.Scores.Count > 0)
         {
             text += "Wszystkie wyniki:\n" + scores.Scores
                     .Select(t => (++i) + ". " + t.Score / 24 + " dni " + t.Score % 24 + " godzin ")
                     .Aggregate((t, y) => t + "\n" + y);
         }
         OpenWindow().OpenText(text);
     }
 }
Пример #4
0
    /// <summary>
    /// game over function which displays a fail message and starts scene reload
    /// </summary>
    /// <param name="endCondition"></param>
    public void gameFailed(EndCondition endCondition = EndCondition.WrongTarget)
    {
        // player is no longer ready
        isPlayerReady = false;
        isGameOver    = true;

        // different message depending on fail condition
        switch (endCondition)
        {
        case EndCondition.WrongTarget:
            ShowGameOver(m_wrongTargetMessage);
            break;

        case EndCondition.TimeOut:
            ShowGameOver(m_timeOutMessage);
            break;

        case EndCondition.Unholster:
            ShowGameOver(m_unholsterMessage);
            break;
        }

        // wait an arbritrary amount of time before reloading scene
        StartCoroutine(PerformFadeOut());
    }
        public override void EndQuest(Caravan caravan = null, EndCondition condition = EndCondition.None)
        {
            if (Started)
            {
                condition = EndCondition.Success;
            }

            if (Pawn != null)
            {
                CaravanMaker.MakeCaravan(new List <Pawn> {
                    Pawn
                }, RimWorld.Faction.OfPlayer, Site.Tile, false);
            }

            if (condition == EndCondition.Success)
            {
                var project = Find.ResearchManager.currentProj;
                if (project != null)
                {
                    ReserachUtility.AddPoints(project, PointsReward);
                }
            }

            base.EndQuest(caravan, condition);
        }
Пример #6
0
    private IEnumerator ShowEndScreen(EndCondition condition, float timeDelay)
    {
        yield return(new WaitForSeconds(timeDelay));

        string resultText    = "WHAT";
        string conditionText = "?????????";
        bool   didWin        = true;

        switch (condition)
        {
        case EndCondition.WinPlayerEscape:
            resultText    = "YOU WIN";
            conditionText = "running away is, contrary to popular opinion, a valid solution";
            didWin        = true;
            break;

        case EndCondition.WinGeneralKilled:
            resultText    = "YOU WIN";
            conditionText = "i guess finishing the job you were assigned works too";     //report bard for stealing my kill smh
            didWin        = true;
            break;

        case EndCondition.LosePlayerKilled:
            resultText    = "YOU LOSE";
            conditionText = "how can you eat more cookies if you're dead";
            didWin        = false;
            break;
        }

        endScreenController?.Show(resultText, conditionText, didWin);
    }
Пример #7
0
        public static Quest GetCopy(Quest q)
        {
            var copy = new Quest
            {
                QuestSize       = q.QuestSize,
                ID              = q.ID,
                Title           = Title.GetCopy(q.Title),
                Description     = Description.GetCopy(q.Description),
                Region          = q.Region,
                QuestType       = q.QuestType,
                IsRepeatAble    = q.IsRepeatAble,
                IsDailyQuest    = q.IsDailyQuest,
                DailyType       = q.DailyType,
                StartCondition  = StartCondition.GetCopy(q.StartCondition),
                EndCondition    = EndCondition.GetCopy(q.EndCondition),
                NumOfActions    = q.NumOfActions,
                Actions         = new Action[10],
                Rewards         = new Reward[12],
                StartScriptSize = q.StartScriptSize,
                DoingScriptSize = q.DoingScriptSize,
                EndScriptSize   = q.EndScriptSize,
                Unk1            = new byte[14],
                StartScript     = string.Copy(q.StartScript),
                DoingScript     = string.Copy(q.DoingScript),
                EndScript       = string.Copy(q.EndScript)
            };

            Array.Copy(q.Actions, 0, copy.Actions, 0, q.Actions.Length);
            Array.Copy(q.Rewards, 0, copy.Rewards, 0, q.Rewards.Length);
            Array.Copy(q.Unk1, 0, copy.Unk1, 0, q.Unk1.Length);

            return(copy);
        }
Пример #8
0
 public EndCondition(EndCondition e, long o)
 {
     condition          = e.condition;
     pattern            = e.pattern;
     repetitions        = o;     // Swap reps with o
     patternRepetitions = o;     // Also swap patternreps with o
     seconds            = e.seconds;
 }
Пример #9
0
        public void EndQuest(Caravan caravan = null, EndCondition condition = EndCondition.None)
        {
            quest.EndQuest(caravan, condition);

            if (Find.WorldObjects.Contains(this))
            {
                Find.WorldObjects.Remove(this);
            }
        }
Пример #10
0
        public override void EndQuest(Caravan caravan = null, EndCondition condition = EndCondition.None)
        {
            base.EndQuest(caravan, condition);

            if (condition == EndCondition.None)
            {
                Find.LetterStack.ReceiveLetter("Quest_DarkNetCaptureMaterials_EndQuest_NoneTitle".Translate(), "Quest_DarkNetCaptureMaterials_EndQuest_NoneDesc".Translate(), LetterDefOf.NeutralEvent);
            }
        }
Пример #11
0
        public override void EndQuest(Caravan caravan = null, EndCondition condition = EndCondition.None)
        {
            if (condition == EndCondition.Timeout)
            {
                Faction.TryAffectGoodwillWith(Faction.OfPlayer, -10);
            }

            base.EndQuest(caravan, condition);
        }
Пример #12
0
        public void RemoveQuest(Quest quest, EndCondition condition = EndCondition.None, bool showMessage = true)
        {
            Quests.Remove(quest);

            if (showMessage)
            {
                SendEndQuestMessage(condition, quest);
            }
        }
Пример #13
0
        public override void EndQuest(Caravan caravan = null, EndCondition condition = EndCondition.None)
        {
            base.EndQuest(caravan, condition);

            if (condition == EndCondition.Success)
            {
                ScoutingComp.GiveScoutingComp(Faction, 2, 15, 5, 5);
            }
        }
Пример #14
0
        public override void EndQuest(Caravan caravan = null, EndCondition condition = EndCondition.None)
        {
            if (CommunicationDialog != null)
            {
                QuestsManager.Communications.RemoveCommunication(CommunicationDialog);
            }

            base.EndQuest(caravan, condition);
        }
Пример #15
0
 void Start()
 {
     dead         = false;
     trig         = GameObject.Find("Trigger");
     self         = gameObject;
     sinBin       = GameObject.Find("sinBin");
     aides        = GetComponent <Pathfinding.AIDestinationSetter>();
     target       = aides.target;
     playerScript = target.GetComponent <EndCondition>();
 }
Пример #16
0
 public WorkerObject(EndCondition e, int o)
 {
     endCondition     = e;
     amountOfOutcomes = (uint)o;
     if (ExpManager.sharedInstance.orderedStorage)
     {
         outcomes = new List <ResultObject>();
     }
     else
     {
         unorderedOutcomes = new long[o];
     }
 }
Пример #17
0
        public override void EndQuest(Caravan caravan = null, EndCondition condition = EndCondition.None)
        {
            if (condition == EndCondition.Timeout)
            {
                IncidentParms parms = StorytellerUtility.DefaultParmsNow(IncidentCategoryDefOf.ThreatBig, Find.World);
                parms.forced = true;

                var incident = new FiringIncident(MoreEvents.IncidentDefOfLocal.HighMutantPopulation, null, parms);
                Find.Storyteller.TryFire(incident);
            }

            base.EndQuest(caravan, condition);
        }
Пример #18
0
 public void cleanup()
 {
     if (ExpManager.sharedInstance.orderedStorage)
     {
         outcomes.Clear();
         outcomes.TrimExcess();
     }
     else
     {
         unorderedOutcomes = null;
     }
     endCondition = null;
 }
Пример #19
0
        public Quest(BinaryReader reader)
        {
            QuestSize = reader.ReadUInt32() - 4;
            ID        = reader.ReadUInt32();
            if (ID > HighestID)
            {
                HighestID = ID;
            }
            var titleID = reader.ReadUInt32();

            Title = new Title(titleID, "");
            var descriptionID = reader.ReadUInt32();

            Description = new Description(descriptionID, "");

            //TODO: Figure out what this is
            Region = reader.ReadByte();

            QuestType    = (QuestType)reader.ReadByte();
            IsRepeatAble = reader.ReadBoolean();
            IsDailyQuest = reader.ReadBoolean();
            DailyType    = (DailyType)reader.ReadByte();

            StartCondition = new StartCondition(reader);
            EndCondition   = new EndCondition(reader);

            NumOfActions = (byte)reader.ReadInt32();

            Actions = new Action[10];
            for (var i = 0; i < 10; i++)
            {
                Actions[i] = new Action(reader);
            }

            Rewards = new Reward[12];
            for (var i = 0; i < 12; i++)
            {
                Rewards[i] = new Reward(reader);
            }

            StartScriptSize = reader.ReadUInt16();
            EndScriptSize   = reader.ReadUInt16();
            DoingScriptSize = reader.ReadUInt16();

            Unk1 = new byte[14];
            Unk1 = reader.ReadBytes(14);

            StartScript = Encoding.ASCII.GetString(reader.ReadBytes(StartScriptSize));
            DoingScript = Encoding.ASCII.GetString(reader.ReadBytes(DoingScriptSize));
            EndScript   = Encoding.ASCII.GetString(reader.ReadBytes(EndScriptSize));
        }
Пример #20
0
        public override void EndQuest(Caravan caravan = null, EndCondition condition = EndCondition.None)
        {
            if (condition == EndCondition.Fail || condition == EndCondition.None)
            {
                if (Rand.Chance(0.35f))
                {
                    Current.Game.GetComponent <DarkNet>().SendGssRaid(Find.AnyPlayerHomeMap, true);
                }
                else
                {
                    Find.LetterStack.ReceiveLetter("Quest_DarkNetKillInformator_InformatorDeadTitle".Translate(), "Quest_DarkNetKillInformator_InformatorDeadDesc".Translate(), LetterDefOf.NeutralEvent);
                }
            }

            base.EndQuest(caravan, condition);
        }
        private void TryTransfer(Caravan caravan)
        {
            StringBuilder builder = new StringBuilder();

            builder.Append("Quest_MissingPeople_End".Translate());
            int saved = 0;

            foreach (var pawn in quest.SavedPawns)
            {
                if (caravan.ContainsPawn(pawn))
                {
                    caravan.RemovePawn(pawn);
                    saved++;
                    builder.AppendLine($"- {pawn.Name.ToStringFull}");
                    pawn.Destroy();
                }
            }

            EndCondition condition = EndCondition.Success;

            if (saved == quest.SavedPawns.Count)
            {
                builder.Append("Quest_MissingPeople_EndFull".Translate(Quest.Faction.Name));
            }
            else
            {
                if (saved == 0)
                {
                    builder.Append("Quest_MissingPeople_Fiasko".Translate(Quest.Faction.Name));
                    condition = EndCondition.Fail;
                }
                else
                {
                    builder.Append("Quest_MissingPeople_EndPart".Translate());
                }
            }

            if (caravan.pawns.Count == 0)
            {
                Find.WorldObjects.Remove(caravan);
            }

            Find.LetterStack.ReceiveLetter("Quest_MissingPeople_EndQuest".Translate(), builder.ToString(), LetterDefOf.NeutralEvent);
            QuestSite site = (QuestSite)mapParent;

            site.EndQuest(caravan, condition);
        }
            private void DrawLoseConditions()
            {
                using (new EditorHelper.IndentPadding(10))
                {
                    if (losingConditions.Count > 0)
                    {
                        EditorGUILayout.Space();
                        EditorGUILayout.LabelField("Lose Stage Conditions");
                    }
                }

                using (new EditorHelper.Indent(1))
                {
                    EndCondition removedCondition = null;
                    for (int gIndex = 0; gIndex < losingConditions.Count; gIndex++)
                    {
                        EndCondition condition = losingConditions[gIndex];
                        condition.SetOrder(gIndex + 1);
                        condition.OnGUI();

                        if (condition.IsConditionChanged)
                        {
                            condition = GenerateEndCondition(condition.ShowConditionName());

                            losingConditions[gIndex] = condition;
                        }

                        if (condition.IsRemoved)
                        {
                            removedCondition = condition;
                        }

                        if (condition.IsPasted && copiedCondition != null)
                        {
                            losingConditions[gIndex] = copiedCondition.Clone();
                        }
                    }

                    if (removedCondition != null)
                    {
                        losingConditions.Remove(removedCondition);
                        Config.ResetCacheRectData();
                    }
                }
            }
Пример #23
0
    public void EndConditionSatisfied(EndCondition condition, float timeDelay = 0f)
    {
        if (GameFinished)
        {
            return;
        }

        GameFinished = true;

        if (timeDelay > 0f)
        {
            StartCoroutine(ShowEndScreen(condition, timeDelay));
        }
        else
        {
            StartCoroutine(ShowEndScreen(condition, 0f));
        }
    }
Пример #24
0
        public void RemoveQuest(int key, EndCondition condition = EndCondition.None, bool showMessage = true)
        {
            for (int i = 0; i < Quests.Count; i++)
            {
                Quest quest = Quests[i];
                if (quest.id == key)
                {
                    Quests.Remove(quest);

                    if (showMessage)
                    {
                        SendEndQuestMessage(condition, quest);
                    }

                    return;
                }
            }
        }
Пример #25
0
        private EndCondition GameLoop()
        {
            List <string> actions = new List <string>();

            AddActionOptions(actions);
            EndCondition endCondition = EndCondition.NotEnd;

            do
            {
                Console.Clear();
                HUD();
                //PrintActionsMenu
                int selected = UI.SelectionMenu(actions);

                endCondition = DecideGameEnd(HandleSelection(selected));
            } while (endCondition == EndCondition.NotEnd);

            return(endCondition);
        }
Пример #26
0
        private async void Image_Tapped(object sender, TappedRoutedEventArgs e)
        {
            Image image = sender as Image;
            int   index = -1;

            if (int.TryParse(image.Tag.ToString(), out index))
            {
                if (model.isSet(index))
                {
                    model.setPlayer(index);
                    image.Source = model.CurrentPlayer.Equals(Model.Player.CROSS) ? crossImage : nougthImage;
                    EndCondition end = model.checkEnd();
                    if (end.End)
                    {
                        model.lockModel();
                        if (!end.Winner.Equals(Model.Player.EMPTY))
                        {
                            foreach (var item in ImagesGrid.Children)
                            {
                                if (item is Rectangle && (item as Rectangle).Tag != null)
                                {
                                    Rectangle rect    = item as Rectangle;
                                    string    rectTag = rect.Tag.ToString();
                                    if (rectTag.Equals(end.First.ToString()) || rectTag.Equals(end.Second.ToString()) || rectTag.Equals(end.Third.ToString()))
                                    {
                                        rect.Fill = new SolidColorBrush(Colors.White);
                                    }
                                }
                            }
                        }
                        else
                        {
                            var message = new MessageDialog("It's a tie");
                            await message.ShowAsync();

                            initializeGrid();
                            initializeModel();
                        }
                    }
                    model.nextPlayer();
                }
            }
        }
Пример #27
0
        public override void Tick(float t)
        {
            if (_isAnimating)
            {
                float x = (t - _delay) / _duration;
                onUpdate?.Invoke();
                if (x > 0.0f && x <= 1.0f)
                {
                    OnEvaluate?.Invoke(x);
                }

                if (EndCondition != null && EndCondition.Invoke(x))
                {
                    _isAnimating = false;
                    OnEvaluate?.Invoke(_isForward > 0 ? 1 : 0);
                    onComplete?.Invoke();
                }
            }
        }
Пример #28
0
        public static void ClosingMessage(EndCondition e)
        {
            Console.Clear();
            switch (e)
            {
            case EndCondition.NotEnd:
                break;

            case EndCondition.UserEnd:
                PrintAsciiArt("See You Next Time");
                break;

            case EndCondition.AgeOut:
                System.Console.Beep();
                UI.CenteredString("You're over 70 years old...time to retire, Captain");
                PrintAsciiArt("TOO OLD");
                break;

            case EndCondition.MoneyOut:
                System.Console.Beep();
                UI.CenteredString("You're out of money and out of goods. Starfleet Command is very disappointed.");
                break;

            case EndCondition.FuelOut:
                System.Console.Beep();
                UI.CenteredString("Your stupidity has left you on your own drifting in the galaxy without fuel");
                PrintAsciiArt("Out of Juice");
                break;

            case EndCondition.Death:
                UI.CenteredString("Death is inevitable");
                break;

            case EndCondition.MoneyMax:
                PrintAsciiArt("Mission Complete!");
                PrintAsciiArt("$10,000 earned");
                break;

            default:
                break;
            }
        }
 public void ToEPL(TextWriter writer, EPStatementFormatter formatter)
 {
     writer.Write(IsOverlapping ? "initiated by " : "start ");
     if (_optionalDistinctExpressions != null && _optionalDistinctExpressions.Count > 0)
     {
         writer.Write("distinct(");
         String delimiter = "";
         foreach (Expression expression in _optionalDistinctExpressions)
         {
             writer.Write(delimiter);
             expression.ToEPL(writer, ExpressionPrecedenceEnum.MINIMUM);
             delimiter = ", ";
         }
         writer.Write(") ");
     }
     StartCondition.ToEPL(writer, formatter);
     writer.Write(" ");
     writer.Write(IsOverlapping ? "terminated " : "end ");
     EndCondition.ToEPL(writer, formatter);
 }
Пример #30
0
    public void GameOver(EndCondition endCondition)
    {
        Time.timeScale = 0f;
        if (endCondition == EndCondition.Victory)
        {
            Text[] info = VictoryScreen.GetComponentsInChildren <Text>();

            info[0].text = string.Format("{0:00}:{1:00}", totalTime / 60, totalTime % 60);
            info[1].text = totalGameOvers.ToString();

            totalTime      = 0f;
            totalGameOvers = 0;

            VictoryScreen.SetActive(true);
        }
        else if (endCondition == EndCondition.Defeat)
        {
            DefeatScreen.SetActive(true);
        }
    }