public Sentence(AnimationState animationState,
                 DialogSpeaker currentSpeaker,
                 string text)
 {
     this.animationState = animationState;
     this.currentSpeaker = currentSpeaker;
     this.text           = text;
 }
示例#2
0
文件: Dialog.cs 项目: cabarius/ToyBox
            public static bool Prefix(DialogSpeaker __instance, BlueprintCueBase cue, ref UnitEntityData __result)
            {
                if (!settings.toggleRemoteCompanionDialog)
                {
                    return(true);
                }
                if (__instance.Blueprint == null)
                {
                    __result = null;
                    return(false);
                }
                Mod.Trace($"getting unit for speaker {__instance.Blueprint.name}");
                var dialogPosition = Game.Instance.DialogController.DialogPosition;

                Mod.Trace($"dialogPos: {dialogPosition}");
                var second = Game.Instance.EntityCreator.CreationQueue.Select(ce => ce.Entity).OfType <UnitEntityData>();

                __instance.MakeEssentialCharactersConscious();
                Mod.Trace($"second: {second?.ToString()} matching: {second.Select(u => __instance.SelectMatchingUnit(u))}");
                var overrides   = DialogSpeaker_GetEntityOverrides;
                var GUID        = cue?.AssetGuid.ToString();
                var hasOverride = GUID != null?DialogSpeaker_GetEntityOverrides.ContainsKey(GUID) : false;

                var overrideValue = hasOverride && DialogSpeaker_GetEntityOverrides[GUID];
                var unit          = Game.Instance.State.Units.Concat(Game.Instance.Player.AllCrossSceneUnits)
                                    //.Where(u => u.IsInGame && !u.Suppressed)
                                    .Where(u => hasOverride ? overrideValue : settings.toggleExCompanionDialog || !u.IsExCompanion())
                                    .Concat(second)
                                    .Select(new Func <UnitEntityData, UnitEntityData>(__instance.SelectMatchingUnit))
                                    .NotNull()
                                    .Distinct()
                                    .Nearest(dialogPosition);

                Mod.Debug($"found {unit?.CharacterName ?? "no one".cyan()} position: {unit?.Position.ToString() ?? "n/a"}");
                if (unit != null)
                {
                    if (unit.DistanceTo(dialogPosition) > 25)
                    {
                        var mainChar      = Game.Instance.Player.MainCharacter.Value;
                        var mainPos       = mainChar.Position;
                        var offset        = 4f * UnityEngine.Random.insideUnitSphere;
                        var mainDirection = mainChar.OrientationDirection;
                        unit.Position = mainPos - 5 * mainDirection + offset;
                    }
                    __result = unit;
                    return(false);
                }
                DialogDebug.Add((BlueprintScriptableObject)cue, "speaker doesnt exist", Color.red);
                __result = null;
                return(false);
            }
 public Color GetSpeakerColor(DialogSpeaker currentSpeaker)
 {
     return(dialogBoxColors[(int)currentSpeaker]);
 }
示例#4
0
    public void UpdateDialog(DialogSpeaker dialogSpeaker, string text)
    {
        CleanDialogText();

        switch (dialogSpeaker)
        {
        case DialogSpeaker.MOTHER:
            if (GameManager.Instance.swapper.World.Equals(World.Real))
            {
                avatarImage.sprite = MOTHER_SPRITE_REAL;
            }
            else
            {
                avatarImage.sprite = MOTHER_SPRITE_IMAGINARY;
            }
            break;

        case DialogSpeaker.MAINA:
            if (GameManager.Instance.swapper.World.Equals(World.Real))
            {
                avatarImage.sprite = MAINA_SPRITE_REAL;
            }
            else
            {
                avatarImage.sprite = MAINA_SPRITE_IMAGINARY;
            }
            break;

        case DialogSpeaker.TEDDY:
            if (GameManager.Instance.swapper.World.Equals(World.Real))
            {
                avatarImage.sprite = TEDDY_BEAR_SPRITE_REAL;
            }
            else
            {
                avatarImage.sprite = TEDDY_BEAR_SPRITE_IMAGINARY;
            }
            break;

        case DialogSpeaker.PAPER_CLIP:
            if (GameManager.Instance.swapper.World.Equals(World.Real))
            {
                avatarImage.sprite = PAPER_CLIP_KEY_SPRITE_REAL;
            }
            else
            {
                avatarImage.sprite = PAPER_CLIP_KEY_SPRITE_IMAGINARY;
            }
            break;

        case DialogSpeaker.BOX_SHIP:
            if (GameManager.Instance.swapper.World.Equals(World.Real))
            {
                avatarImage.sprite = BOX_SHIP_SPRITE_REAL;
            }
            else
            {
                avatarImage.sprite = BOX_SHIP_SPRITE_IMAGINARY;
            }
            break;

        case DialogSpeaker.SWORD_RULER:
            if (GameManager.Instance.swapper.World.Equals(World.Real))
            {
                avatarImage.sprite = SWORD_RULER_SPRITE_REAL;
            }
            else
            {
                avatarImage.sprite = SWORD_RULER_SPRITE_IMAGINARY;
            }
            break;

        case DialogSpeaker.RAZOR_STONE:
            if (GameManager.Instance.swapper.World.Equals(World.Real))
            {
                avatarImage.sprite = RAZOR_STONE_SPRITE_REAL;
            }
            else
            {
                avatarImage.sprite = RAZOR_STONE_SPRITE_IMAGINARY;
            }
            break;

        case DialogSpeaker.BOSS_KEY:
            if (GameManager.Instance.swapper.World.Equals(World.Real))
            {
                avatarImage.sprite = BOSS_KEY_SPRITE_REAL;
            }
            else
            {
                avatarImage.sprite = BOSS_KEY_SPRITE_IMAGINARY;
            }
            break;

        case DialogSpeaker.TORCH_LIGHT:
            if (GameManager.Instance.swapper.World.Equals(World.Real))
            {
                avatarImage.sprite = TORCH_LIGHT_SPRITE_REAL;
            }
            else
            {
                avatarImage.sprite = TORCH_LIGHT_SPRITE_IMAGINARY;
            }
            break;

        case DialogSpeaker.FATHER:
            if (GameManager.Instance.swapper.World.Equals(World.Real))
            {
                avatarImage.sprite = FATHER_SPRITE_REAL;
            }
            else
            {
                avatarImage.sprite = FATHER_SPRITE_IMAGINARY;
            }
            break;
        }
        dialogText.text = text;
        dialogTMPText.SetText(text, true);

        ShowDialog();
    }