private void ActivityAction(ActivityType activityType) { MenuManager.Instance.RemoveMenu(); MenuManager.Instance.RemoveMenu(); OnlineActivity activity = null; switch (activityType) { case ActivityType.SendHelp: activity = new ActivitySendHelp(targetServer, DataManager.Instance.Save.CreateContactInfo(), targetContact); break; case ActivityType.GetHelp: activity = new ActivityGetHelp(targetServer, DataManager.Instance.Save.CreateContactInfo(), targetContact); break; case ActivityType.TradeTeam: activity = new ActivityTradeTeam(targetServer, DataManager.Instance.Save.CreateContactInfo(), targetContact); break; case ActivityType.TradeItem: activity = new ActivityTradeItem(targetServer, DataManager.Instance.Save.CreateContactInfo(), targetContact); break; case ActivityType.TradeMail: activity = new ActivityTradeMail(targetServer, DataManager.Instance.Save.CreateContactInfo(), targetContact); break; } action(activity); }
public void UpdateStatus() { ActivityTradeTeam tradeTeam = NetworkManager.Instance.Activity as ActivityTradeTeam; if (tradeTeam.OfferedChar != theirInfo.CurrentChar) { theirInfo.SetCurrentChar(tradeTeam.OfferedChar); } //set status yourStatus.SetText(CurrentState.ToLocal("msg")); theirStatus.SetText(tradeTeam.CurrentState.ToLocal("msg")); }
private void choose(int choice) { //open summary CharData charData = DataManager.Instance.Save.ActiveTeam.Assembly[choice]; OfferFeaturesMenu menu = new OfferFeaturesMenu(this.Bounds, this); menu.SetCurrentChar(charData); MenuManager.Instance.AddMenu(menu, true); CurrentState = ExchangeState.Viewing; ActivityTradeTeam tradeTeam = NetworkManager.Instance.Activity as ActivityTradeTeam; tradeTeam.OfferChar(charData); tradeTeam.SetReady(CurrentState); }
public TradeTeamMenu(int defaultChoice) { int menuWidth = 152; List <MenuChoice> flatChoices = new List <MenuChoice>(); for (int ii = 0; ii < DataManager.Instance.Save.ActiveTeam.Assembly.Count; ii++) { int index = ii; Character character = DataManager.Instance.Save.ActiveTeam.Assembly[index]; bool tradeable = !character.IsFounder && !character.IsFavorite; MenuText memberName = new MenuText(character.GetDisplayName(true), new Loc(2, 1), tradeable ? Color.White : Color.Red); MenuText memberLv = new MenuText(Text.FormatKey("MENU_TEAM_LEVEL_SHORT", character.Level), new Loc(menuWidth - 8 * 4, 1), DirV.Up, DirH.Right, tradeable ? Color.White : Color.Red); flatChoices.Add(new MenuElementChoice(() => { choose(index); }, tradeable, memberName, memberLv)); } List <MenuChoice[]> box = SortIntoPages(flatChoices, SLOTS_PER_PAGE); int page = defaultChoice / SLOTS_PER_PAGE; int choice = defaultChoice % SLOTS_PER_PAGE; Initialize(new Loc(0, 16 + LINE_SPACE + GraphicsManager.MenuBG.TileHeight * 2), menuWidth, Text.FormatKey("MENU_ASSEMBLY_TITLE"), box.ToArray(), choice, page, SLOTS_PER_PAGE); theirInfo = new OfferFeaturesMenu(new Rect(GraphicsManager.ScreenWidth - 0 - menuWidth, 16 + LINE_SPACE + GraphicsManager.MenuBG.TileHeight * 2, Bounds.Width, Bounds.Height), null); yourTitle = new SummaryMenu(Rect.FromPoints(new Loc(Bounds.Start.X, Bounds.Start.Y - LINE_SPACE - GraphicsManager.MenuBG.TileHeight * 2), new Loc(Bounds.End.X, Bounds.Start.Y))); MenuText yourText = new MenuText(DataManager.Instance.Save.ActiveTeam.GetDisplayName(), new Loc((yourTitle.Bounds.X + yourTitle.Bounds.End.X) / 2, yourTitle.Bounds.Y + GraphicsManager.MenuBG.TileHeight), DirH.None); yourText.Color = TextTan; yourTitle.Elements.Add(yourText); yourSummary = new SummaryMenu(Rect.FromPoints(new Loc(Bounds.Start.X, Bounds.End.Y), new Loc(Bounds.End.X, Bounds.End.Y + LINE_SPACE + GraphicsManager.MenuBG.TileHeight * 2))); yourStatus = new MenuText("", new Loc((yourSummary.Bounds.X + yourSummary.Bounds.End.X) / 2, yourSummary.Bounds.Y + GraphicsManager.MenuBG.TileHeight), DirH.None); yourStatus.Color = TextTan; yourSummary.Elements.Add(yourStatus); theirTitle = new SummaryMenu(Rect.FromPoints(new Loc(theirInfo.Bounds.Start.X, theirInfo.Bounds.Start.Y - LINE_SPACE - GraphicsManager.MenuBG.TileHeight * 2), new Loc(theirInfo.Bounds.End.X, theirInfo.Bounds.Start.Y))); MenuText theirText = new MenuText("", new Loc((theirTitle.Bounds.X + theirTitle.Bounds.End.X) / 2, theirTitle.Bounds.Y + GraphicsManager.MenuBG.TileHeight), DirH.None); theirText.Color = TextTan; theirTitle.Elements.Add(theirText); theirSummary = new SummaryMenu(Rect.FromPoints(new Loc(theirInfo.Bounds.Start.X, theirInfo.Bounds.End.Y), new Loc(theirInfo.Bounds.End.X, theirInfo.Bounds.End.Y + LINE_SPACE + GraphicsManager.MenuBG.TileHeight * 2))); theirStatus = new MenuText("", new Loc((theirSummary.Bounds.X + theirSummary.Bounds.End.X) / 2, theirSummary.Bounds.Y + GraphicsManager.MenuBG.TileHeight), DirH.None); theirStatus.Color = TextTan; theirSummary.Elements.Add(theirStatus); ActivityTradeTeam tradeTeam = NetworkManager.Instance.Activity as ActivityTradeTeam; theirText.SetText(tradeTeam.TargetInfo.Data.TeamName); CurrentState = ExchangeState.Selecting; }
public override void Update(InputManager input) { Visible = true; NetworkManager.Instance.Update(); if (NetworkManager.Instance.Status == OnlineStatus.Offline) { //give offline message in a dialogue MenuManager.Instance.RemoveMenu(); MenuManager.Instance.RemoveMenu(); MenuManager.Instance.AddMenu(MenuManager.Instance.CreateDialogue(NetworkManager.Instance.ExitMsg), false); } else { ActivityTradeTeam tradeTeam = NetworkManager.Instance.Activity as ActivityTradeTeam; if (baseMenu.CurrentState == ExchangeState.Viewing) { if (input.JustPressed(FrameInput.InputType.Confirm)) { baseMenu.CurrentState = ExchangeState.Ready; tradeTeam.SetReady(baseMenu.CurrentState); } else if (input.JustPressed(FrameInput.InputType.Cancel)) { GameManager.Instance.SE("Menu/Cancel"); MenuManager.Instance.RemoveMenu(); baseMenu.CurrentState = ExchangeState.Selecting; tradeTeam.OfferChar(null); tradeTeam.SetReady(baseMenu.CurrentState); } } else if (baseMenu.CurrentState == ExchangeState.Ready) { if (tradeTeam.CurrentState == ExchangeState.Ready) { DialogueBox dialog = MenuManager.Instance.CreateQuestion(Text.FormatKey("DLG_TRADE_TEAM_ASK", CurrentChar.BaseName, tradeTeam.OfferedChar.BaseName), () => { baseMenu.CurrentState = ExchangeState.Exchange; tradeTeam.SetReady(baseMenu.CurrentState); }, () => { baseMenu.CurrentState = ExchangeState.Viewing; tradeTeam.SetReady(baseMenu.CurrentState); }); MenuManager.Instance.AddMenu(dialog, true); } else { if (input.JustPressed(FrameInput.InputType.Cancel)) { GameManager.Instance.SE("Menu/Cancel"); baseMenu.CurrentState = ExchangeState.Viewing; tradeTeam.SetReady(baseMenu.CurrentState); } } } else if (baseMenu.CurrentState == ExchangeState.Exchange) { if (tradeTeam.CurrentState == ExchangeState.Exchange || tradeTeam.CurrentState == ExchangeState.PostTradeWait) { int chosenIndex = baseMenu.CurrentPage * baseMenu.SpacesPerPage + baseMenu.CurrentChoice; DataManager.Instance.Save.ActiveTeam.Assembly[chosenIndex] = new Character(tradeTeam.OfferedChar, DataManager.Instance.Save.ActiveTeam); DataManager.Instance.Save.RegisterMonster(DataManager.Instance.Save.ActiveTeam.Assembly[chosenIndex].BaseForm.Species); baseMenu.CurrentState = ExchangeState.PostTradeWait; tradeTeam.SetReady(baseMenu.CurrentState); } else if (tradeTeam.CurrentState != ExchangeState.Ready) { MenuManager.Instance.AddMenu(MenuManager.Instance.CreateDialogue(Text.FormatKey("DLG_TRADE_CANCELED")), true); baseMenu.CurrentState = ExchangeState.Viewing; tradeTeam.SetReady(baseMenu.CurrentState); } } else if (baseMenu.CurrentState == ExchangeState.PostTradeWait) { if (tradeTeam.CurrentState != ExchangeState.Exchange) { DataManager.Instance.SaveMainGameState(); int chosenIndex = baseMenu.CurrentPage * baseMenu.SpacesPerPage + baseMenu.CurrentChoice; bool sendBack = CurrentChar.OriginalUUID == tradeTeam.TargetInfo.UUID; bool receiveBack = tradeTeam.OfferedChar.OriginalUUID == DataManager.Instance.Save.UUID; string sendString = Text.FormatKey(sendBack ? "DLG_TRADE_TEAM_SENT_BACK" : "DLG_TRADE_TEAM_SENT", CurrentChar.BaseName, tradeTeam.TargetInfo.Data.TeamName); string receiveString = Text.FormatKey(receiveBack ? "DLG_TRADE_TEAM_RECEIVED_BACK" : "DLG_TRADE_TEAM_RECEIVED", tradeTeam.OfferedChar.BaseName, tradeTeam.TargetInfo.Data.TeamName); tradeTeam.OfferChar(null); MenuManager.Instance.RemoveMenu(); MenuManager.Instance.ReplaceMenu(new TradeTeamMenu(chosenIndex)); GameManager.Instance.Fanfare("Fanfare/Note"); MenuManager.Instance.AddMenu(MenuManager.Instance.CreateDialogue( () => { MenuManager.Instance.AddMenu(MenuManager.Instance.CreateDialogue( () => { GameManager.Instance.Fanfare("Fanfare/JoinTeam"); MenuManager.Instance.AddMenu(MenuManager.Instance.CreateDialogue(receiveString), false); }, Text.FormatKey("DLG_TRADE_TEAM_AND")), false); }, sendString), false); tradeTeam.SetReady(ExchangeState.Selecting); } } baseMenu.UpdateStatus(); } }