/// <summary> /// add a random ship to this player's flotilla. /// </summary> public void AddShip(ShipData[] shipType, bool chanceToUpgrade) { FrameworkCore.PlayCue(sounds.Fanfare.ship); ShipData shipToAdd = shipType[FrameworkCore.r.Next(shipType.Length)]; if (chanceToUpgrade) { shipToAdd = UpgradeShip(shipToAdd); } FleetShip ship = Helpers.AddFleetShip(FrameworkCore.players[0].campaignShips, shipToAdd); //create popup. if (ship == null) { return; } ShipPopup popup = new ShipPopup(menuManager); popup.fleetShip = ship; menuManager.AddMenu(popup); }
private void BuyGame() { FrameworkCore.BuyGame(); }
public override void Update(GameTime gameTime, InputManager inputManager) { #if WINDOWS if (Transition >= 1) { foreach (MenuItem item in menuItems) { Rectangle itemRect = new Rectangle( (int)item.position.X - 35, (int)item.position.Y - 80, 70, 160); if (itemRect.Contains((int)inputManager.mousePos.X, (int)inputManager.mousePos.Y)) { if (inputManager.mouseHasMoved) { selectedItem = item; } if (inputManager.mouseLeftClick) { base.ActivateItem(inputManager); } } } } #endif if (Transition >= 1) { #if WINDOWS if (inputManager.kb1Pressed) { SelectAndRun(0, inputManager); } else if (inputManager.kb2Pressed) { SelectAndRun(1, inputManager); } else if (inputManager.kb3Pressed) { SelectAndRun(2, inputManager); } #endif if (inputManager.OpenMenu || inputManager.kbBackspaceJustPressed || inputManager.kbSpace) { owner.ActiveMenu = null; Deactivate(); } if (inputManager.sysMenuLeft) { int index = menuItems.IndexOf(selectedItem); index--; if (index < 0) { index = menuItems.Count - 1; } selectedItem = menuItems[index]; FrameworkCore.PlayCue(sounds.click.select); } else if (inputManager.sysMenuRight) { int index = menuItems.IndexOf(selectedItem); index++; if (index > menuItems.Count - 1) { index = 0; } selectedItem = menuItems[index]; FrameworkCore.PlayCue(sounds.click.select); } if (inputManager.buttonBPressed || inputManager.kbBackspaceJustPressed) { Deactivate(); } if (inputManager.kbEnter || inputManager.buttonAPressed) { if (selectedItem != null) { base.ActivateItem(inputManager); } } } //base.Update(gameTime, inputManager); }
public override void Draw(GameTime gameTime) { Vector2 screenSize = new Vector2(FrameworkCore.Graphics.GraphicsDevice.Viewport.Width, FrameworkCore.Graphics.GraphicsDevice.Viewport.Height); Vector2 titleVec = FrameworkCore.Gothic.MeasureString(Resource.MenuTitle); titleVec.X /= 2; Vector2 titlePos = new Vector2(screenSize.X / 2, 110 + titleVec.Y); float titleSize = MathHelper.Lerp(1.2f, 1.4f, Transition); Color whiteColor = Color.Lerp(OldXNAColor.TransparentWhite, Color.White, Transition); Color shadeColor = Color.Lerp(OldXNAColor.TransparentBlack, new Color(0, 0, 0, 128), Transition); Helpers.DrawOutline(FrameworkCore.Gothic, Resource.MenuTitle, titlePos, whiteColor, shadeColor, 0, titleVec, titleSize); float subtitleSize = MathHelper.Lerp(0.8f, 1.1f, Transition); Vector2 subtitleVec = FrameworkCore.Serif.MeasureString(Resource.MenuSubtitle); subtitleVec.X /= 2; subtitleVec.Y = 0; Vector2 subtitlePos = titlePos + new Vector2(0, -15); Helpers.DrawOutline(FrameworkCore.Serif, Resource.MenuSubtitle, subtitlePos, whiteColor, shadeColor, 0, subtitleVec, subtitleSize); if (FrameworkCore.isTrialMode()) { Color trialColor = Color.Lerp(Helpers.transColor(Color.Orange), Color.Orange, Transition); Vector2 trialPos = new Vector2(FrameworkCore.Graphics.GraphicsDevice.Viewport.Width / 2, subtitlePos.Y + subtitleVec.Y + 64); trialPos.Y += MathHelper.Lerp(-40, 0, Transition); float trialSize = MathHelper.Lerp(0.3f, 0.6f, Transition); Helpers.stringCenterOutline(FrameworkCore.SpriteBatch, FrameworkCore.Gothic, Resource.MenuTrialMode, trialPos, trialColor, shadeColor, trialSize, 0); } Vector2 startPos = new Vector2(screenSize.X / 2, screenSize.Y - (screenSize.Y * 0.15f)); startPos.Y += Helpers.Pulse(gameTime, 3, 4); startPos.Y += MathHelper.Lerp(90, 0, Transition); float presentsSize = MathHelper.Lerp(1.1f, 1, 0.5f + Helpers.Pulse(gameTime, 0.49f, 4)); if (Helpers.GuideVisible) { return; } string startText = #if XBOX Resource.MenuTitlePressStart; #else Resource.MenuClickToStart; #endif Vector2 startVec = Helpers.stringCenter(FrameworkCore.Serif, startText); Helpers.DrawOutline(FrameworkCore.Serif, startText, startPos, whiteColor, shadeColor, 0, startVec, presentsSize); }
public override void Draw(GameTime gameTime) { Color textColor = Color.Lerp(OldXNAColor.TransparentWhite, Color.White, Transition); Color bgColor = Color.Lerp(OldXNAColor.TransparentBlack, new Color(0, 0, 0, 64), Transition); Vector2 promptPos = new Vector2(FrameworkCore.Graphics.GraphicsDevice.Viewport.Width / 2, FrameworkCore.Graphics.GraphicsDevice.Viewport.Height / 2 - LINEHEIGHT / 2); promptPos.Y -= 64 + 8; promptPos.Y += Helpers.PopLerp(Transition, -100, 30, 0); Helpers.stringCenterOutline(FrameworkCore.SpriteBatch, FrameworkCore.SerifBig, Resource.MenuNamePrompt, promptPos, textColor, bgColor, 1, 0); Vector2 namePos = new Vector2(FrameworkCore.Graphics.GraphicsDevice.Viewport.Width / 2, FrameworkCore.Graphics.GraphicsDevice.Viewport.Height / 2 + GOTHICHEIGHT / 2); namePos.Y += Helpers.PopLerp(Transition, 100, -30, 0); namePos.Y -= 64; Color boxColor = Color.Lerp(Helpers.transColor(Faction.Blue.teamColor), Faction.Blue.teamColor, Transition); Rectangle nameBox = new Rectangle( (int)namePos.X - 384, (int)namePos.Y - GOTHICHEIGHT / 2, 768, GOTHICHEIGHT); FrameworkCore.SpriteBatch.Draw(FrameworkCore.hudSheet, nameBox, sprite.vistaBox, boxColor); Helpers.stringCenterOutline(FrameworkCore.SpriteBatch, FrameworkCore.Gothic, FrameworkCore.players[0].commanderName, namePos, textColor, bgColor, 1, 0); if (!FrameworkCore.isTrialMode()) { Color goldColor = Color.Lerp(Helpers.transColor(Color.Gold), Color.Gold, Transition); Vector2 thankyouPos = new Vector2(promptPos.X, FrameworkCore.Graphics.GraphicsDevice.Viewport.Height * 0.23f); thankyouPos.Y += Helpers.Pulse(gameTime, 5, 4); thankyouPos.Y += Helpers.PopLerp(Transition, -200, 40, 0); Helpers.stringCenterOutline(FrameworkCore.SpriteBatch, FrameworkCore.SerifBig, Resource.ThankYou, thankyouPos, goldColor, bgColor, 1.2f, 0); } if (blinkTimer > 300) { int nameVec = (int)FrameworkCore.Gothic.MeasureString(FrameworkCore.players[0].commanderName).X; Vector2 underScorePos = namePos; underScorePos.X += nameVec / 2; underScorePos.Y -= GOTHICHEIGHT / 2; FrameworkCore.SpriteBatch.DrawString(FrameworkCore.Gothic, "_", underScorePos, textColor); } Helpers.DrawClickMessage(gameTime, Transition); }
/// <summary> /// Close this menu. /// </summary> public override void Deactivate() { FrameworkCore.PlayCue(sounds.click.whoosh); base.Deactivate(); }
public override void Update(GameTime gameTime, InputManager inputManager) { if (IsLoading) { if (loadTransition >= 1 && !hasLoadedLevel) { hasLoadedLevel = true; StartSkirmish(gameTime); Deactivate(); } float delta = (float)(gameTime.ElapsedGameTime.TotalMilliseconds / TimeSpan.FromMilliseconds(400).TotalMilliseconds); loadTransition = MathHelper.Clamp(loadTransition + delta, 0, 1); return; } if (Transition >= 1) { if (inputManager.buttonStartPressed && !IsLoading) { IsLoading = true; } for (int i = 0; i < 4; i++) { PlayerIndex index = PlayerIndex.One; if (i == 0) { index = PlayerIndex.One; } else if (i == 1) { index = PlayerIndex.Two; } else if (i == 2) { index = PlayerIndex.Three; } else { index = PlayerIndex.Four; } if (FrameworkCore.MenuInputs[i].buttonAPressed) { if (index == FrameworkCore.ControllingPlayer) { continue; } //another player wants to join. if (getFirstUnoccupiedSlot() == null) { return; } //we need to add another player to the player list. if (FrameworkCore.players.Count <= 1) { PlayerCommander player2 = new PlayerCommander(index, Color.White, Color.White); #if WINDOWS player2.mouseEnabled = FrameworkCore.options.p2UseMouse; #endif if (FrameworkCore.players.Count <= 1) { FrameworkCore.players.Add(player2); } player2.commanderName = Helpers.GenerateName("Gamertag"); } bool player2HasJoined = false; foreach (MenuItem item in menuItems) { if (item.commander == FrameworkCore.players[1]) { player2HasJoined = true; break; } } if (!player2HasJoined) { Player2Join(); } } } //do the fleet setup logic. if (inputManager.sysMenuRight) { if (selectedItem.commander == null) { return; } selectedItem.shipArraySelection = (int)MathHelper.Clamp( selectedItem.shipArraySelection + 1, -1, selectedItem.shipArray.Length - 1); } else if (inputManager.sysMenuLeft) { if (selectedItem.commander == null) { return; } selectedItem.shipArraySelection = (int)MathHelper.Clamp( selectedItem.shipArraySelection - 1, -1, selectedItem.shipArray.Length - 1); } if (inputManager.buttonAPressed && selectedItem != null && selectedItem.shipArraySelection >= 0) { if (selectedItem.commander == null) { return; } //modify what ship is in this slot. OpenShipSelection(inputManager.playerIndex); } if (inputManager.buttonXPressed && selectedItem != null && selectedItem.shipArraySelection >= 0) { if (selectedItem.shipArray[selectedItem.shipArraySelection] != null) { FrameworkCore.PlayCue(sounds.click.beep); } selectedItem.shipArray[selectedItem.shipArraySelection] = null; } #if WINDOWS foreach (MenuItem item in menuItems) { Rectangle itemRect = new Rectangle( (int)item.position.X, (int)item.position.Y - 24, 512, 48); if (itemRect.Contains((int)inputManager.mousePos.X, (int)inputManager.mousePos.Y)) { if (inputManager.mouseHasMoved) { selectedItem = item; item.shipArraySelection = -1; } if (inputManager.mouseLeftClick) { ActivateItem(inputManager); } } if (menuItems.IndexOf(item) <= 3) { //one of the player slots. if (item.commander == null) { continue; } for (int i = 0; i < item.shipArray.Length; i++) { Rectangle shipRect = new Rectangle( (int)item.position.X + sprite.vistaBox.Width + 8 + (i * 96), (int)item.position.Y - 32, 96, 64); if (shipRect.Contains((int)inputManager.mousePos.X, (int)inputManager.mousePos.Y)) { selectedItem = item; item.shipArraySelection = i; if (inputManager.kbDelPressed) { if (selectedItem != null) { if (selectedItem.shipArray[item.shipArraySelection] != null) { FrameworkCore.PlayCue(sounds.click.beep); } selectedItem.shipArray[item.shipArraySelection] = null; } } if (inputManager.mouseLeftClick) { OpenShipSelection(FrameworkCore.ControllingPlayer); } } } } } #endif } //This is an ugly hack! We need a short period of time we ignore the inputstates // because the player2join buttonpress is interfering with standard buttonpresses. if (player2JoinTimer > 0) { player2JoinTimer -= (int)gameTime.ElapsedGameTime.TotalMilliseconds; return; } base.Update(gameTime, inputManager); }
public void DrawEntries(GameTime gameTime, Vector2 entryPos, int addedIndex) { Color numberColor = Color.Lerp(Helpers.transColor(Color.Gray), Color.Gray, Transition); Color titleColor = Color.Lerp(OldXNAColor.TransparentWhite, Color.White, Transition); int nameMargin = (int)FrameworkCore.Serif.MeasureString("000").X; bool drawDownArrow = false; if (menuHighscoreName.Length > 0) { if (menuHighscoreName[0].Length <= 0 || FrameworkCore.isTrialMode()) { string txt = Resource.MenuHighScoresEmpty; if (FrameworkCore.isTrialMode()) { txt = Resource.MenuHighScoresTrial; } DrawErrorMessage(gameTime, txt); } else { Color darkColor = Color.Black; darkColor = Color.Lerp(Helpers.transColor(darkColor), darkColor, Transition); for (int i = 0; i < menuHighscoreName.Length; i++) { if (menuHighscoreName[i].Length <= 0) { continue; } string playerName = Helpers.StripOutAmpersands(FrameworkCore.players[0].commanderName); bool isCurrentPlayer = ((System.String.Compare(menuHighscoreName[i], playerName, true, CultureInfo.InvariantCulture) == 0) && showOnlineScores) || (!showOnlineScores && i == addedIndex); if (isCurrentPlayer) { titleColor = Color.Lerp(Helpers.transColor(Color.Orange), Color.Orange, Transition); DrawBouncyArrow(gameTime, entryPos, titleColor); } #if (WINDOWS && STEAM) else if (showOnlineScores && isSteamFriend[i]) { titleColor = Color.Lerp(Helpers.transColor(Color.Lime), Color.Lime, Transition); DrawBouncyArrow(gameTime, entryPos, titleColor); } #endif else { titleColor = Color.Lerp(OldXNAColor.TransparentWhite, Color.White, Transition); } #if (WINDOWS && STEAM) if (steamFilterFriends) { if (!isSteamFriend[i] && !isCurrentPlayer) { continue; } } #endif FrameworkCore.SpriteBatch.DrawString(FrameworkCore.Serif, (i + 1).ToString(), entryPos + new Vector2(-20, 0), numberColor); Helpers.DrawOutline(FrameworkCore.Serif, menuHighscoreName[i], entryPos + new Vector2(nameMargin, 0), titleColor, darkColor); string scoreString = menuHighscoreScore[i].ToString(); Vector2 scoreVec = FrameworkCore.Serif.MeasureString(scoreString); Vector2 scorePos = entryPos; scorePos.X += WINDOWWIDTH; scorePos.X -= scoreVec.X; Helpers.DrawOutline(FrameworkCore.Serif, scoreString, scorePos, titleColor, darkColor); if (entryPos.Y > FrameworkCore.Graphics.GraphicsDevice.Viewport.Height - 50) { drawDownArrow = true; } entryPos.Y += LINESIZE; } } } else { string txt = Resource.MenuHighScoreOnlineEmpty; if (FrameworkCore.isTrialMode()) { txt = Resource.MenuHighScoresTrial; } DrawErrorMessage(gameTime, txt); } if (drawDownArrow) { Vector2 arrowPos = new Vector2(FrameworkCore.Graphics.GraphicsDevice.Viewport.Width / 2, FrameworkCore.Graphics.GraphicsDevice.Viewport.Height - 96); arrowPos.Y += Helpers.Pulse(gameTime, 7, 5); FrameworkCore.SpriteBatch.Draw(FrameworkCore.hudSheet, arrowPos, sprite.arrow, new Color(255, 255, 255, 64), -1.57f, Helpers.SpriteCenter(sprite.arrow), 1.5f, SpriteEffects.None, 0); } }
private void UpdateMouse(GameTime gameTime, InputManager inputManager, List <InventoryMenuItem> items) { if (items == null) { return; } bool isHovering = false; int boxSize = 64; for (int i = 0; i < items.Count; i++) { Rectangle itemRect = new Rectangle( (int)items[i].position.X - boxSize / 2, (int)(items[i].position.Y - boxSize * 1.5f), boxSize, boxSize * 3); if (itemRect.Contains((int)inputManager.mousePos.X, (int)inputManager.mousePos.Y)) { isHovering = true; if (inputManager.mouseHasMoved) { selectedIndex = items.IndexOf(items[i]); } if (inputManager.mouseLeftClick) { FrameworkCore.PlayCue(sounds.click.activate); selectItem(items.IndexOf(items[i])); } } } if (!isHovering && inputManager.mouseHasMoved) { //nothing selected. selectedIndex = -1; } bool confHover = false; for (int i = 0; i < confirmButtons.Length; i++) { Rectangle confirmRect = new Rectangle( (int)(confirmButtons[i].X - 150), (int)(confirmButtons[i].Y - 30), 300, 60); if (confirmRect.Contains((int)inputManager.mousePos.X, (int)inputManager.mousePos.Y)) { hoverConfirmButton = i; confHover = true; if (inputManager.mouseLeftClick) { if (tradeState == TradeState.selectPlayerItem) { CancelPlayerItemSelect(); } else { Deactivate(); } } } } //scroll the item lists. //if (inputManager.mouseHasMoved) { mouseScrollTimer -= (int)gameTime.ElapsedGameTime.TotalMilliseconds; if (mouseScrollTimer <= 0) { mouseScrollTimer = 300; int hitboxWidth = (int)(FrameworkCore.Graphics.GraphicsDevice.Viewport.Width * 0.2f); Rectangle leftRect = new Rectangle( 0, (int)items[0].position.Y - ITEMWIDTH, (int)(FrameworkCore.Graphics.GraphicsDevice.Viewport.Width * 0.2f), ITEMWIDTH * 2); Rectangle rightRect = new Rectangle( (int)FrameworkCore.Graphics.GraphicsDevice.Viewport.Width - hitboxWidth, (int)items[0].position.Y - ITEMWIDTH, hitboxWidth, ITEMWIDTH * 2); if (leftRect.Contains((int)inputManager.mousePos.X, (int)inputManager.mousePos.Y)) { RefocusPositionsByDifference(256, items); } else if (rightRect.Contains((int)inputManager.mousePos.X, (int)inputManager.mousePos.Y)) { RefocusPositionsByDifference(-256, items); } } } if (!confHover) { hoverConfirmButton = -1; } }
private void CommitReport() { if (isSending) { return; } if (descriptionText.Length <= 0) { //error message. SysPopup signPrompt = new SysPopup(Owner, Resource.MenuBugReportEmptyDescription); signPrompt.transitionOnTime = 200; signPrompt.transitionOffTime = 200; signPrompt.darkenScreen = true; signPrompt.hideChildren = false; signPrompt.canBeExited = false; signPrompt.sideIconRect = sprite.windowIcon.error; MenuItem item = new MenuItem(Resource.MenuOK); item.Selected += ClosePopup; signPrompt.AddItem(item); Owner.AddMenu(signPrompt); return; } FrameworkCore.PlayCue(sounds.click.activate); isSending = true; try { System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage(); message.From = new System.Net.Mail.MailAddress("*****@*****.**"); message.To.Add(new System.Net.Mail.MailAddress("*****@*****.**")); message.Subject = "[FLOTILLA] " + subjectText; string registered = string.Empty; if (FrameworkCore.isTrialMode()) { registered = "Demo"; } else { registered = "Registered"; } string finalString = registered + " version " + FrameworkCore.VERSION + "\n\n" + descriptionText; message.Body = finalString; System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient(); client.Host = "smtp.gmail.com"; //smtp server client.Port = 587; //Port for TLS/STARTTLS client.EnableSsl = true; client.Credentials = new System.Net.NetworkCredential("*****@*****.**", ""); client.SendCompleted += new System.Net.Mail.SendCompletedEventHandler(client_SendCompleted); client.SendAsync(message, null); } catch (Exception ex) { Console.WriteLine(ex.Message); } }
public override void Activate() { FrameworkCore.PlayCue(sounds.Fanfare.klaxon); base.Activate(); }
public override void Activate() { //save the data. FrameworkCore.adventureNumber++; SaveInfo save = FrameworkCore.storagemanager.GetDefaultSaveData(); FrameworkCore.storagemanager.SaveData(save); finalScore = Helpers.GenerateFinalScore(); //add high score to the high score table. string playerName = ""; if (FrameworkCore.players.Count > 1) { playerName = FrameworkCore.players[0].commanderName + " " + Resource.MenuHighScoresPlus + " " + FrameworkCore.players[1].commanderName; } else { playerName = FrameworkCore.players[0].commanderName; } //disable high score recording in trial mode. if (FrameworkCore.isTrialMode()) { addedIndex = -1; } else { addedIndex = Helpers.AddHighScore(playerName, finalScore, out newGlobalHighScore); } #if WINDOWS Helpers.HighScoreType type = Helpers.HighScoreType.Normal; if (FrameworkCore.isHardcoreMode) { type = Helpers.HighScoreType.Hardcore; } else { type = Helpers.HighScoreType.Normal; } //base.GotoGlobalScores(type); #else //base.GotoLocalScores(); #endif //BC2019 Go to local scoreboard only. base.GotoLocalScores(); onlineButtonText = Resource.MenuHighscoresLocal; base.Activate(); }
/// <summary> /// Allows the game to run logic such as updating the world, /// checking for collisions, gathering input, and playing audio. /// </summary> /// <param name="gameTime">Provides a snapshot of timing values.</param> protected override void Update(GameTime gameTime) { FrameworkCore.campaignTimer += (int)gameTime.ElapsedGameTime.TotalMilliseconds; #if XBOX if (Helpers.GuideVisible) { base.Update(gameTime); return; } #endif #if DEBUG if (FrameworkCore.players[0].inputmanager.debugF1Pressed) { MainMenuManager.AddMenu(new DebugEventsMenu()); } if (FrameworkCore.players[0].inputmanager.debugF2Pressed) { if (isAutotesting) { FrameworkCore.PlayCue(sounds.Fanfare.klaxon); } else { FrameworkCore.PlayCue(sounds.Fanfare.timer); } isAutotesting = !isAutotesting; } if (isAutotesting) { RunAdventureTest(gameTime); } // Allows the game to exit if (Keyboard.GetState().IsKeyDown(Microsoft.Xna.Framework.Input.Keys.OemTilde)) { this.Exit(); } #endif foreach (PlayerCommander player in FrameworkCore.players) { player.UpdateControls(gameTime, (FrameworkCore.gameState != GameState.WorldMap)); } if (FrameworkCore.gameState == GameState.Logos) { //make sure the demoThink happens before the menus, because // we want the menu to have priority over the demoThink routines. DemoThink(gameTime); if (!FrameworkCore.sysMenuManager.Update(gameTime, FrameworkCore.controllingInputManager)) { FrameworkCore.MainMenuManager.Update(gameTime, FrameworkCore.controllingInputManager); UpdatePlayer2Controls(gameTime); } } else if (FrameworkCore.gameState == GameState.Play) { level.Update(gameTime); } else { worldMap.Update(gameTime); } base.Update(gameTime); }
/// <summary> /// Activate this menu. /// </summary> public override void Activate() { FrameworkCore.PlayCue(sounds.Music.nocturnes); base.Activate(); }
public virtual void Update(GameTime gameTime, InputManager inputManager) { if (menustate == MenuState.Deactivated) { return; } if (canBeExited) { if (inputManager.buttonBPressed || inputManager.kbEscPressed) { Deactivate(); FrameworkCore.PlayCue(sounds.click.back); } } if (menuItems.Count <= 0) { return; } //ignore button inputs that happen before menu transitions in if (Transition < 1.0f) { return; } if (selectedItem != null && selectedItem.itemType == MenuItem.menuItemType.slider) { UpdateSlider(gameTime, selectedItem, inputManager); } if (inputManager.buttonAPressed || inputManager.kbEnter) { ActivateItem(inputManager); } if (inputManager.sysMenuDown) { int index = menuItems.IndexOf(selectedItem); index++; if (index > menuItems.Count - 1) { index = 0; } selectedItem = menuItems[index]; menuItems[index].shipArraySelection = -1; SelectDown(); if (menuItems.Count > 1) { FrameworkCore.PlayCue(sounds.click.select); } } if (inputManager.sysMenuUp) { int index = menuItems.IndexOf(selectedItem); index--; if (index < 0) { index = menuItems.Count - 1; } selectedItem = menuItems[index]; menuItems[index].shipArraySelection = -1; SelectUp(); if (menuItems.Count > 1) { FrameworkCore.PlayCue(sounds.click.select); } } }
private void selectItem(int index) { if (index < 0) { return; } if (!HasSufficientCargo) { return; } FrameworkCore.PlayCue(sounds.click.activate); //select an item. if (tradeState == TradeState.selectTraderItem) { if (index == selectedTraderItem) { //player selected already-selected item. selectedTraderItem = -1; return; } selectedTraderItem = index; for (int i = 0; i < traderMenuItems.Count; i++) { //clear transitions. traderMenuItems[i].activateTransition = 0; } #if XBOX selectedIndex = 0; #endif tradeState = TradeState.selectPlayerItem; } else if (tradeState == TradeState.selectPlayerItem) { if (index == selectedPlayerItem1) { selectedPlayerItem1 = -1; return; } else if (index == selectedPlayerItem2) { selectedPlayerItem2 = -1; return; } if (selectedPlayerItem1 < 0) { selectedPlayerItem1 = index; } else if (selectedPlayerItem2 < 0) { selectedPlayerItem2 = index; } if (selectedPlayerItem1 >= 0 && selectedPlayerItem2 >= 0) { for (int i = 0; i < playerMenuItems.Count; i++) { //clear transitions. playerMenuItems[i].activateTransition = 0; } tradeState = TradeState.fanfare; FrameworkCore.PlayCue(sounds.Fanfare.chaching); } } }
private void UpdateMouseInput(GameTime gameTime, InputManager inputManager) { if (Transition < 1) { return; } bool confirmHover = false; for (int i = 0; i < confirmButtons.Length; i++) { if (!ValidButtonCheck(i)) { continue; } Rectangle confirmRect = new Rectangle( (int)(confirmButtons[i].X - 130), (int)(confirmButtons[i].Y - 30), 260, 60); if (confirmRect.Contains((int)inputManager.mousePos.X, (int)inputManager.mousePos.Y)) { if (i == 1) //BC2019 Remove the online scoreboard. { continue; } hoverConfirmButton = i; confirmHover = true; if (inputManager.mouseLeftClick) { if (i == 0) { FrameworkCore.PlayCue(sounds.click.activate); Deactivate(); } else if (i == 1) { FrameworkCore.PlayCue(sounds.click.activate); ToggleOnline(); } else if (i == 2) { CenterPlayer(gameTime); } #if (WINDOWS && STEAM) else if (i == 3) { FrameworkCore.PlayCue(sounds.click.activate); //filter friends. FilterFriendToggle(); } #endif } } } if (!confirmHover) { hoverConfirmButton = -1; } }
private void UpdateFanfare(GameTime gameTime) { if (tradeState != TradeState.fanfare) { return; } if (fanfareDelay > 0) { fanfareDelay -= (int)gameTime.ElapsedGameTime.TotalMilliseconds; return; } if (fanfareTransition <= 0) { FrameworkCore.PlayCue(sounds.click.whoosh); } float delta = (float)(gameTime.ElapsedGameTime.TotalMilliseconds / TimeSpan.FromMilliseconds(2000).TotalMilliseconds); fanfareTransition = MathHelper.Clamp(fanfareTransition + delta, 0, 1); if (fanfareTransition >= 1) { //Add items to the trader. FrameworkCore.worldMap.evManager.tradeItems.Add(FrameworkCore.players[0].inventoryItems[selectedPlayerItem1]); FrameworkCore.worldMap.evManager.tradeItems.Add(FrameworkCore.players[0].inventoryItems[selectedPlayerItem2]); //Remove equipped items from ships. for (int x = FrameworkCore.players[0].campaignShips.Count - 1; x >= 0; x--) { for (int i = 0; i < FrameworkCore.players[0].campaignShips[x].upgradeArray.Length; i++) { if (FrameworkCore.players[0].campaignShips[x].upgradeArray[i] == playerMenuItems[selectedPlayerItem1].inventoryItem) { FrameworkCore.players[0].campaignShips[x].upgradeArray[i] = null; } if (FrameworkCore.players[0].campaignShips[x].upgradeArray[i] == playerMenuItems[selectedPlayerItem2].inventoryItem) { FrameworkCore.players[0].campaignShips[x].upgradeArray[i] = null; } } } //Remove items from the player inventory. for (int x = FrameworkCore.players[0].inventoryItems.Count - 1; x >= 0; x--) { if (x == selectedPlayerItem1) { FrameworkCore.players[0].inventoryItems.RemoveAt(x); } else if (x == selectedPlayerItem2) { FrameworkCore.players[0].inventoryItems.RemoveAt(x); } } //Give the player the item. Add item to player inventory. FrameworkCore.worldMap.evManager.AddCargo(traderMenuItems[selectedTraderItem].inventoryItem); //remove the trader item. FrameworkCore.worldMap.evManager.tradeItems.RemoveAt(selectedTraderItem); ClearStates(); //repopulate the menu items. PopulateMenuItems(); tradeState = TradeState.popup; } }
private void OnSelectStart(object sender, EventArgs e) { bool faction1HasCommander = false; bool faction2HasCommander = false; //check if both sides have at least 1 commander. for (int i = 0; i < menuItems.Count; i++) { if (menuItems[i].commander != null && i <= 1) { faction1HasCommander = true; } else if (menuItems[i].commander != null && (i == 2 || i == 3)) { faction2HasCommander = true; } } if (!faction1HasCommander || !faction2HasCommander) { SysPopup signPrompt = new SysPopup(Owner, Resource.MenuSkirmishMissingPlayer); signPrompt.transitionOnTime = 200; signPrompt.transitionOffTime = 200; signPrompt.darkenScreen = true; signPrompt.hideChildren = false; signPrompt.sideIconRect = sprite.windowIcon.error; MenuItem item = new MenuItem(Resource.MenuOK); item.Selected += CloseMenu; signPrompt.AddItem(item); Owner.AddMenu(signPrompt); FrameworkCore.PlayCue(sounds.click.error); return; } if (FrameworkCore.isTrialMode()) { bool hasInvalidShip = false; //check if user has any non-trial ships in the ship array. foreach (MenuItem mItem in menuItems) { if (menuItems.IndexOf(mItem) > 3) { continue; } for (int i = 0; i < mItem.shipArray.Length; i++) { if (Helpers.getShipByType(mItem.shipArray[i]) > 1) { hasInvalidShip = true; mItem.shipArray[i] = null; } } } if (hasInvalidShip) { SysPopup signPrompt = new SysPopup(Owner, Resource.MenuSkirmishTrialShipError); signPrompt.transitionOnTime = 200; signPrompt.transitionOffTime = 200; signPrompt.darkenScreen = true; signPrompt.hideChildren = false; signPrompt.sideIconRect = sprite.windowIcon.error; MenuItem item = new MenuItem(Resource.MenuOK); item.Selected += CloseMenuStartSkirmish; signPrompt.AddItem(item); Owner.AddMenu(signPrompt); return; } } //check if all slots have at least one ship. bool showNoShipError = false; string missingShipPlayerName = ""; foreach (MenuItem mItem in menuItems) { //only check player slots. if (menuItems.IndexOf(mItem) > 3) { continue; } if (mItem.commander == null) { continue; } bool PlayerHasNoShip = true; for (int i = 0; i < mItem.shipArray.Length; i++) { if (Helpers.getShipByType(mItem.shipArray[i]) >= 0) { PlayerHasNoShip = false; } } if (PlayerHasNoShip) { showNoShipError = true; if (mItem.commander.commanderName != null) { missingShipPlayerName = mItem.commander.commanderName; } break; } } if (showNoShipError) { String errorString = string.Format(Resource.MenuSkirmishNoShips, missingShipPlayerName); SysPopup signPrompt = new SysPopup(Owner, errorString); signPrompt.transitionOnTime = 200; signPrompt.transitionOffTime = 200; signPrompt.darkenScreen = true; signPrompt.hideChildren = false; signPrompt.sideIconRect = sprite.windowIcon.error; MenuItem item = new MenuItem(Resource.MenuOK); item.Selected += CloseMenu; signPrompt.AddItem(item); Owner.AddMenu(signPrompt); FrameworkCore.PlayCue(sounds.click.error); return; } IsLoading = true; //player wants to start the skirmish. }
public override void Update(GameTime gameTime, InputManager inputManager) { if (Transition >= 1) { if (lastSelectedIndex != selectedIndex) { if (selectedIndex > -1) { FrameworkCore.PlayCue(sounds.click.select); } lastSelectedIndex = selectedIndex; } UpdateStateTransitions(gameTime); UpdateFanfare(gameTime); UpdatePopup(gameTime); if (tradeState == TradeState.intro) { if (!HasSufficientCargo) { FrameworkCore.PlayCue(sounds.click.error); } tradeState = TradeState.selectTraderItem; return; } else if (tradeState == TradeState.selectTraderItem) { UpdateItemTransitions(gameTime, traderMenuItems); if (inputManager.kbBackspaceJustPressed || inputManager.buttonBPressed) { ClearStates(); Deactivate(); } #if WINDOWS UpdateMouse(gameTime, inputManager, traderMenuItems); #endif UpdatePad(gameTime, inputManager, traderMenuItems); } else if (tradeState == TradeState.selectPlayerItem) { UpdateItemTransitions(gameTime, playerMenuItems); if (inputManager.kbBackspaceJustPressed || inputManager.buttonBPressed) { CancelPlayerItemSelect(); } #if WINDOWS UpdateMouse(gameTime, inputManager, playerMenuItems); #endif UpdatePad(gameTime, inputManager, playerMenuItems); } } base.Update(gameTime, inputManager); }
private void AddShip(object sender, InputArgs e) { if (sender.GetType() != typeof(MenuItem)) { return; } int index = ((MenuItem)sender).GenericInt1; ShipData ship = ((MenuItem)sender).shipArray[0]; if (FrameworkCore.isTrialMode() && ship != null) { if (Helpers.getShipByType(ship) > 1) { #if WINDOWS string errorString = string.Format(Resource.MenuSkirmishTrialSelection, ship.name); SysPopup signPrompt = new SysPopup(Owner, errorString); signPrompt.transitionOnTime = 200; signPrompt.transitionOffTime = 200; signPrompt.darkenScreen = true; signPrompt.hideChildren = false; signPrompt.sideIconRect = sprite.windowIcon.error; MenuItem item = new MenuItem(Resource.MenuUnlockFullGame); item.Selected += OnBuyGame; item.GenericInt1 = index; signPrompt.AddItem(item); item = new MenuItem(Resource.MenuDemoPlanetMaybeLater); item.Selected += CloseMenu; signPrompt.AddItem(item); Owner.AddMenu(signPrompt); FrameworkCore.PlayCue(sounds.click.error); return; #else SignedInGamer gamer = SignedInGamer.SignedInGamers[(PlayerIndex)index]; //found signed in player. do stuff.. if (gamer != null && gamer.Privileges.AllowPurchaseContent) { string errorString = string.Format(Resource.MenuSkirmishTrialSelection, ship.name); SysPopup signPrompt = new SysPopup(Owner, errorString); signPrompt.transitionOnTime = 200; signPrompt.transitionOffTime = 200; signPrompt.darkenScreen = true; signPrompt.hideChildren = false; signPrompt.sideIconRect = sprite.windowIcon.error; MenuItem item = new MenuItem(Resource.MenuUnlockFullGame); item.Selected += OnBuyGame; item.GenericInt1 = index; signPrompt.AddItem(item); item = new MenuItem(Resource.MenuDemoPlanetMaybeLater); item.Selected += CloseMenu; signPrompt.AddItem(item); Owner.AddMenu(signPrompt); } else { //player has no purchasing privileges string errorString = string.Format(Resource.MenuSkirmishTrialSelectionNoSignin, ship.name); SysPopup signPrompt = new SysPopup(Owner, errorString); signPrompt.transitionOnTime = 200; signPrompt.transitionOffTime = 200; signPrompt.darkenScreen = true; signPrompt.hideChildren = false; signPrompt.sideIconRect = sprite.windowIcon.error; MenuItem item = new MenuItem(Resource.MenuOK); item.Selected += CloseMenu; signPrompt.AddItem(item); Owner.AddMenu(signPrompt); } FrameworkCore.PlayCue(sounds.click.error); return; #endif } } if (((MenuItem)sender).owner != null) { ((MenuItem)sender).owner.Deactivate(); } int slotNumber = selectedItem.shipArraySelection; if (slotNumber < 0) { return; } selectedItem.shipArray[slotNumber] = ship; }
private void OnBuyGame(object sender, EventArgs e) { FrameworkCore.BuyGame(); }
public override void Update(GameTime gameTime, InputManager inputManager) { UpdateMenuPositions(gameTime); UpdateMenuTransitions(gameTime); #if WINDOWS handleMouse(FrameworkCore.players[0].inputmanager); mouseScrollTimer -= (int)gameTime.ElapsedGameTime.TotalMilliseconds; mouseScrollTimer = Math.Max(mouseScrollTimer, 0); #endif //move stick left/right. if (FrameworkCore.players[0].campaignShips.Count > 0 && Transition >= 1) { int additionalButtons = 1; if (FrameworkCore.players.Count > 1) { additionalButtons = 2; } bool mouseAtLeft = FrameworkCore.players[0].inputmanager.mousePos.X < FrameworkCore.Graphics.GraphicsDevice.Viewport.Width * 0.1f; bool mouseAtRight = FrameworkCore.players[0].inputmanager.mousePos.X > FrameworkCore.Graphics.GraphicsDevice.Viewport.Width * 0.9f; #if XBOX mouseAtLeft = false; mouseAtRight = false; #endif if (inputManager.sysMenuLeft || inputManager.mouseWheelUp || (mouseScrollTimer <= 0 && mouseAtLeft)) { mouseScrollTimer = 500; if (selectedIndex <= 0) { selectedIndex = FrameworkCore.players[0].campaignShips.Count - 1; } else { selectedIndex = (int)MathHelper.Clamp(selectedIndex - 1, 0, FrameworkCore.players[0].campaignShips.Count - 1); } UpdateTargetPositions(); if (FrameworkCore.players[0].campaignShips.Count > 0) { FrameworkCore.PlayCue(sounds.click.whoosh); } //selectedInventoryIndex = 0; } if (inputManager.sysMenuRight || inputManager.mouseWheelDown || (mouseScrollTimer <= 0 && mouseAtRight)) { mouseScrollTimer = 500; if (selectedIndex >= FrameworkCore.players[0].campaignShips.Count - 1) { selectedIndex = 0; } else { selectedIndex = (int)MathHelper.Clamp(selectedIndex + 1, 0, FrameworkCore.players[0].campaignShips.Count - 1); } UpdateTargetPositions(); if (FrameworkCore.players[0].campaignShips.Count > 0) { FrameworkCore.PlayCue(sounds.click.whoosh); } //selectedInventoryIndex = 0; } if (inputManager.sysMenuDown) { if (FrameworkCore.players[0].campaignShips[selectedIndex] != null) { if (selectedInventoryIndex >= FrameworkCore.players[0].campaignShips[selectedIndex].upgradeArray.Length + additionalButtons - 1) { selectedInventoryIndex = 0; } else { selectedInventoryIndex = (int)MathHelper.Clamp(selectedInventoryIndex + 1, 0, FrameworkCore.players[0].campaignShips[selectedIndex].upgradeArray.Length + additionalButtons - 1); } FrameworkCore.PlayCue(sounds.click.select); } } if (inputManager.sysMenuUp) { if (FrameworkCore.players[0].campaignShips[selectedIndex] != null) { if (selectedInventoryIndex <= 0) { selectedInventoryIndex = FrameworkCore.players[0].campaignShips[selectedIndex].upgradeArray.Length + additionalButtons /*extra buttons*/ - 1; } else { selectedInventoryIndex = (int)MathHelper.Clamp(selectedInventoryIndex - 1, 0, FrameworkCore.players[0].campaignShips[selectedIndex].upgradeArray.Length + additionalButtons - 1); } FrameworkCore.PlayCue(sounds.click.select); } } if (inputManager.buttonAPressed) { if (FrameworkCore.players[0].campaignShips[selectedIndex] != null) { ClickButton(); } } } if (Transition >= 1 && (inputManager.OpenMenu || inputManager.kbBackspaceJustPressed || inputManager.kbSpace)) { Deactivate(); } base.Update(gameTime, inputManager); }
private void Done() { FrameworkCore.PlayCue(sounds.click.activate); Deactivate(); }
private void OpenMainMenu() { if (hasOpenedMainMenu) { return; } hasOpenedMainMenu = true; if (Owner != null) { #if XBOX SignedInGamer gamer = SignedInGamer.SignedInGamers[FrameworkCore.ControllingPlayer]; Owner.AddMenu(new MainMenu()); if (gamer != null) { //player is signed in. load player's data. FrameworkCore.players[0].commanderName = gamer.Gamertag; LoadData(); } else { //unsigned player. assign random name. FrameworkCore.players[0].commanderName = Helpers.GenerateName("Gamertag"); } #elif (WINDOWS && STEAM) //the steam build uses the player's Steam persona name. //if there's an error for whatever reason, we let the player type in any name. LoadData(); string playerName = FrameworkCore.GetSteamName(); if (playerName == null) { FrameworkCore.players[0].commanderName = Helpers.GenerateName("Gamertag"); Owner.AddMenu(new NameMenu()); } else { FrameworkCore.players[0].commanderName = playerName; Owner.AddMenu(new MainMenu()); } #else SaveInfo optionsData = LoadData(); if (optionsData.playerName == null) { FrameworkCore.players[0].commanderName = Helpers.GenerateName("Gamertag"); } else { FrameworkCore.players[0].commanderName = optionsData.playerName; } Owner.AddMenu(new NameMenu()); #endif } Deactivate(); }
private void PrevPage() { FrameworkCore.PlayCue(sounds.click.activate); Owner.AddMenu(new HelpTurns()); Deactivate(); }
public virtual void Update(GameTime gameTime, InputManager inputManager) { if (Transition < 1) { return; } if (inputManager.buttonBPressed) { Deactivate(); FrameworkCore.PlayCue(sounds.click.back); } if (inputManager.buttonAPressed || (mouseIsHovering && inputManager.mouseLeftClick) || inputManager.kbEnter) { ActivateItem(inputManager); } if (inputManager.menuNextPressed) { int index = menuItems.IndexOf(selectedItem); index++; if (index > menuItems.Count - 1) { index = 0; } selectedItem = menuItems[index]; FrameworkCore.PlayCue(sounds.click.select); } if (inputManager.menuPrevPressed) { int index = menuItems.IndexOf(selectedItem); index--; if (index < 0) { index = menuItems.Count - 1; } selectedItem = menuItems[index]; FrameworkCore.PlayCue(sounds.click.select); } if (!inputManager.menuPrevHeld) { float delta = (float)(gameTime.ElapsedGameTime.TotalMilliseconds / TimeSpan.FromMilliseconds(150).TotalMilliseconds); lbTransition = MathHelper.Clamp(lbTransition - delta, 0, 1); } else if (lbTransition < 1) { float delta = (float)(gameTime.ElapsedGameTime.TotalMilliseconds / TimeSpan.FromMilliseconds(40).TotalMilliseconds); lbTransition = MathHelper.Clamp(lbTransition + delta, 0, 1); } if (!inputManager.menuNextHeld) { float delta = (float)(gameTime.ElapsedGameTime.TotalMilliseconds / TimeSpan.FromMilliseconds(150).TotalMilliseconds); rbTransition = MathHelper.Clamp(rbTransition - delta, 0, 1); } else if (rbTransition < 1) { float delta = (float)(gameTime.ElapsedGameTime.TotalMilliseconds / TimeSpan.FromMilliseconds(40).TotalMilliseconds); rbTransition = MathHelper.Clamp(rbTransition + delta, 0, 1); } }
private void NextPage() { FrameworkCore.PlayCue(sounds.click.activate); Owner.AddMenu(new HelpOrders()); Deactivate(); }
private void OnNo(object sender, EventArgs e) { FrameworkCore.PlayCue(sounds.click.activate); Deactivate(); }
private void OnSkipTutorial(object sender, InputArgs e) { Helpers.CloseThisMenu(sender); FrameworkCore.PlayCue(sounds.Music.none); }