private void AssignSprites(DialogLine Line) { Character speaker = Character.GetCharacter(Line.SpeakerID); try { Sprite speakerSprite = speaker.GetSprite((Line.SpeakerMood)); if (speakerSprite) { LeftSprite.Assign(speakerSprite, speaker); } } catch { Debug.LogError("Something went wrong with assigning speaker sprites."); } int targets = 0; foreach (var t in Line.TargetMoods) { Character c = Character.GetCharacter(t.Key); Sprite sprite = c.GetSprite((t.Value)); if (sprite) { if (ImageHandler.CharacterIsOnscreen(c)) { ImageHandler h = ImageHandler.GetCharacterImageHandler(c); h.Assign(sprite, c); } else { switch (targets) { case (0): { if (RightSprite.C != null) { goto case 1; } RightSprite.Assign(sprite, c); break; } case (1): { if (InnerRightSprite.C != null) { goto case 2; } InnerRightSprite.Assign(sprite, c); break; } case (2): { if (InnerLeftSprite.C != null) { goto default; } InnerLeftSprite.Assign(sprite, c); break; } default: { Debug.LogError( string.Format("Dialog Line [{0}] has too many targets and not all will be displayed", Line.LineID)); break; } } } } } }