public static void BroadcastEmote(this Character character, int emoteIndex) { if (!Game1.IsMultiplayer) { return; } EmoteMessage message = new EmoteMessage { EmoteIndex = emoteIndex }; switch (character) { case Farmer farmer: message.EmoteSourceId = farmer.UniqueMultiplayerID.ToString(); message.EmoteSourceType = CharacterType.Farmer; break; case NPC npc: message.EmoteSourceId = npc.Name; message.EmoteSourceType = CharacterType.NPC; break; case FarmAnimal farmAnimal: message.EmoteSourceId = farmAnimal.myID.Value.ToString(); message.EmoteSourceType = CharacterType.FarmAnimal; break; } ModEntry.MultiplayerMessage.Send(message); }
private void OnEmoteMessage(EmoteMessage emoteMessage) { if (UIManager.Instance) { UIManager.Instance.OnPlayerEmoted(emoteMessage); } }
/// <summary> /// Called when an emote message was recieved. /// </summary> /// <param name="emoteMessage">The recieved emote message.</param> public void OnPlayerEmoted(EmoteMessage emoteMessage) { RectTransform rectTransform = transform as RectTransform; EmoteMessageDisplay messageDisplay = Instantiate(emoteMessagePrefab, transform); ((RectTransform)(messageDisplay.transform)).anchoredPosition = MathUtil.RandomVector2(-rectTransform.sizeDelta * 0.5f, rectTransform.sizeDelta * 0.5f); messageDisplay.Set(emoteMessage, this); }
/// <summary> /// Inits all values. /// </summary> /// <param name="emoteMessage">The emote message recieved.</param> /// <param name="emoteBoard">A reference to the emote board.</param> public void Set(EmoteMessage emoteMessage, EmoteBoard emoteBoard) { List <Player> players = PlayersDict.Instance.Players; Player player = players.Find(x => x.playerId == emoteMessage.playerID); EmoteDict.Emote?emote = EmoteDict.Instance.GetEmote(emoteMessage.emoteID); // Is not valid? if (player == null || emote == null || player.playerIndex > 3) { Destroy(gameObject); return; } Color playerColor = CharacterDict.Instance.PlayerColors[player.playerIndex]; Color lightPlayerColor = CharacterDict.Instance.LightPlayerColors[player.playerIndex]; emoteImage.sprite = emote.Value.sprite; emoteImage.color = lightPlayerColor; frameImage.color = playerColor; StartCoroutine(OnShow(emoteBoard.MessageAliveTime, emoteBoard.ScaleCurve)); }
public void OnPlayerEmoted(EmoteMessage emoteMessage) => inGameManager.OnPlayerEmoted(emoteMessage);
public void OnPlayerEmoted(EmoteMessage emoteMessage) => emoteBoard.OnPlayerEmoted(emoteMessage);