public Sentence(AnimationState animationState, DialogSpeaker currentSpeaker, string text) { this.animationState = animationState; this.currentSpeaker = currentSpeaker; this.text = text; }
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]); }
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(); }