private void JoinPlayer(bool isKeyboard, int gamepadIndex, PlayerInfo existingPlayer = null) { JoinState joinState = MakePlayer(isKeyboard, gamepadIndex, existingPlayer); numJoinedPlayer++; // Animate text var text = joinState.HUD.GetComponentByName <HUDTextComponent>("nameTextchooser"); Dispatcher.AddAnimation(Animation.Get(text.Opacity, 1f, 1f, false, (o) => text.Opacity = o, EasingFunctions.QuadIn)); var board = joinState.HUD.GetComponentByName <HUDComponent>("namechooser"); Dispatcher.AddAnimation(Animation.Get(board.Opacity, 1f, 1f, false, (o) => board.Opacity = o, EasingFunctions.QuadIn)); Dispatcher.NextFrame(() => { AddEntity(joinState.Player); joinState.Player.Freeze(); }); AddEntity(joinState.HUD); if (numJoinedPlayer == 4) { Dispatcher.AddAnimation(Animation.Get(1, 0, 0.2f, false, (val) => { joinComponent.Opacity = val; joinTextComponent.Opacity = val; }, EasingFunctions.QuadIn)); } }
private void PlayerIsReady(JoinState player) { if (player.CurrentState == JoinState.State.Joined) { NonPositionalAudio.PlaySound("Audio/MenuActionSound"); player.Next(); // Animate text var textChooser = player.HUD.GetComponentByName <HUDTextComponent>("nameTextchooser"); Dispatcher.AddAnimation(Animation.Get(textChooser.Opacity, 0f, 1f, false, (o) => textChooser.Opacity = o, EasingFunctions.ToEaseOut(EasingFunctions.QuadIn))); var boardChooser = player.HUD.GetComponentByName <HUDComponent>("namechooser"); Dispatcher.AddAnimation(Animation.Get(boardChooser.Opacity, 0f, 1f, false, (o) => boardChooser.Opacity = o, EasingFunctions.ToEaseOut(EasingFunctions.QuadIn))); var text = player.HUD.GetComponentByName <HUDTextComponent>("nameText"); Dispatcher.AddAnimation(Animation.Get(text.Opacity, 1f, 1f, false, (o) => text.Opacity = o, EasingFunctions.QuadIn)); var board = player.HUD.GetComponentByName <HUDComponent>("name"); Dispatcher.AddAnimation(Animation.Get(board.Opacity, 1f, 1f, false, (o) => board.Opacity = o, EasingFunctions.QuadIn)); Dispatcher.NextFrame(() => player.Player.UnFreeze()); if (players.Count(j => j.CurrentState == JoinState.State.Ready) >= (Game.CurrentGameMode.PlayerMode == PlayerMode.TwoVsTwo ? 4 : 1)) { pressStartToStartAnimation.IsRunning = true; } } }
private void SetName(JoinState player, int newName) { player.NameIndex = newName; foreach (var textComponent in player.HUD.GetAllComponents <HUDTextComponent>()) { textComponent.Text = availablePlayerNames[player.NameIndex]; } Game.CurrentGameMode.SetNameForPlayer(availablePlayerNames[player.NameIndex], player.IsKeyboard, player.GamePadIndex); }
private void SetNextOrPreviousName(JoinState player, int direction) { int nextName = player.NameIndex; while (players.Any(p => p.NameIndex == nextName)) { nextName = (nextName - direction + availablePlayerNames.Length) % availablePlayerNames.Length; } SetName(player, nextName); }
private void SetRandomName(JoinState joinState) { SetName(joinState, RandomExt.GetRandomInt(0, availablePlayerNames.Length, players.Select(p => p.NameIndex).ToArray())); }
private JoinState MakePlayer(bool isKeyboard, int gamepadIndex, PlayerInfo existingPlayer = null) { int myIndex; if (existingPlayer == null) { myIndex = GetFirstFreeIndex(); } else { myIndex = existingPlayer.PlayerIndex - 1; } // Create UI for name Entity hud = new Entity(this, EntityType.UI, positions[myIndex], new HUDComponent(boardWithButtonsAssets[myIndex], new Vector2(1.528f / 0.551f * 0.2f, 0.2f), origin: new Vector2(0.5f, 0.5f)) { Name = "namechooser" }, new HUDTextComponent(MainFont, 0.095f, "Name", origin: new Vector2(0.58f, 0.43f), layerDepth: 0.1f) { Name = "nameTextchooser" }, new HUDComponent(boardAssets[myIndex], new Vector2(1.528f / 0.551f * 0.1f, 0.1f), origin: new Vector2(0.5f, 0.5f), offset: offsets[myIndex]) { Name = "name", Opacity = 0f }, new HUDTextComponent(MainFont, 0.048f, "Name", origin: new Vector2(0.58f, 0.43f), layerDepth: 0.1f, offset: offsets[myIndex]) { Name = "nameText", Opacity = 0f } ); var newPlayerJoinState = new JoinState(null, hud, isKeyboard, gamepadIndex, myIndex); players.Add(newPlayerJoinState); if (existingPlayer != null) { SetName(newPlayerJoinState, Array.IndexOf(availablePlayerNames, existingPlayer.Name)); } else { SetRandomName(newPlayerJoinState); } PlayerInfo pInfo; // Create Player if doesn't already exist if (existingPlayer == null) { pInfo = Game.CurrentGameMode.AddPlayer(newPlayerJoinState.IsKeyboard, gamepadIndex, availablePlayerNames[newPlayerJoinState.NameIndex]); } else { pInfo = existingPlayer; } PlayerEntity player = new PlayerEntity(this, startPositions[newPlayerJoinState.PlayerIndex], pInfo); newPlayerJoinState.Player = player; return(newPlayerJoinState); }