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()
        {
            ActivityTradeItem tradeTeam = NetworkManager.Instance.Activity as ActivityTradeItem;

            if (tradeTeam.OfferedItems != theirInfo.CurrentOffer)
            {
                theirInfo.SetCurrentItems(tradeTeam.OfferedItems);
            }

            //set status
            yourStatus.SetText(CurrentState.ToLocal("msg"));
            theirStatus.SetText(tradeTeam.CurrentState.ToLocal("msg"));
        }
        protected override void ChoseMultiIndex(List <int> slots)
        {
            int startIndex = CurrentChoiceTotal;

            List <InvItem> indices = new List <InvItem>();

            foreach (int slot in slots)
            {
                indices.Add(new InvItem(AllowedGoods[slot]));
            }

            OfferItemsMenu menu = new OfferItemsMenu(this.Bounds, this);

            menu.SetCurrentItems(indices);

            MenuManager.Instance.AddMenu(menu, true);

            CurrentState = ExchangeState.Viewing;

            ActivityTradeItem tradeTeam = NetworkManager.Instance.Activity as ActivityTradeItem;

            tradeTeam.OfferItems(indices);
            tradeTeam.SetReady(CurrentState);
        }
        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
            {
                ActivityTradeItem tradeItem = NetworkManager.Instance.Activity as ActivityTradeItem;

                if (baseMenu.CurrentState == ExchangeState.Viewing)
                {
                    if (input.JustPressed(FrameInput.InputType.Confirm))
                    {
                        baseMenu.CurrentState = ExchangeState.Ready;

                        tradeItem.SetReady(baseMenu.CurrentState);
                    }
                    else if (input.JustPressed(FrameInput.InputType.Cancel))
                    {
                        GameManager.Instance.SE("Menu/Cancel");
                        MenuManager.Instance.RemoveMenu();

                        baseMenu.CurrentState = ExchangeState.Selecting;

                        tradeItem.OfferItems(new List <InvItem>());
                        tradeItem.SetReady(baseMenu.CurrentState);
                    }
                }
                else if (baseMenu.CurrentState == ExchangeState.Ready)
                {
                    if (tradeItem.CurrentState == ExchangeState.Ready)
                    {
                        QuestionDialog dialog = MenuManager.Instance.CreateQuestion(Text.FormatKey("DLG_TRADE_ITEM_ASK"), () =>
                        {
                            baseMenu.CurrentState = ExchangeState.Exchange;
                            tradeItem.SetReady(baseMenu.CurrentState);
                        }, () =>
                        {
                            baseMenu.CurrentState = ExchangeState.Viewing;
                            tradeItem.SetReady(baseMenu.CurrentState);
                        });
                        MenuManager.Instance.AddMenu(dialog, true);
                    }
                    else
                    {
                        if (input.JustPressed(FrameInput.InputType.Cancel))
                        {
                            GameManager.Instance.SE("Menu/Cancel");

                            baseMenu.CurrentState = ExchangeState.Viewing;
                            tradeItem.SetReady(baseMenu.CurrentState);
                        }
                    }
                }
                else if (baseMenu.CurrentState == ExchangeState.Exchange)
                {
                    if (tradeItem.CurrentState == ExchangeState.Exchange || tradeItem.CurrentState == ExchangeState.PostTradeWait)
                    {
                        int chosenIndex = baseMenu.CurrentPage * baseMenu.SpacesPerPage + baseMenu.CurrentChoice;

                        List <int> offerItems = new List <int>();
                        foreach (InvItem item in CurrentOffer)
                        {
                            offerItems.Add(item.ID);
                        }
                        DataManager.Instance.Save.ActiveTeam.TakeItems(offerItems);

                        DataManager.Instance.Save.ActiveTeam.StoreItems(tradeItem.OfferedItems);

                        baseMenu.CurrentState = ExchangeState.PostTradeWait;
                        tradeItem.SetReady(baseMenu.CurrentState);
                    }
                    else if (tradeItem.CurrentState != ExchangeState.Ready)
                    {
                        MenuManager.Instance.AddMenu(MenuManager.Instance.CreateDialogue(Text.FormatKey("DLG_TRADE_CANCELED")), true);

                        baseMenu.CurrentState = ExchangeState.Viewing;
                        tradeItem.SetReady(baseMenu.CurrentState);
                    }
                }
                else if (baseMenu.CurrentState == ExchangeState.PostTradeWait)
                {
                    if (tradeItem.CurrentState != ExchangeState.Exchange)
                    {
                        DataManager.Instance.SaveMainGameState();

                        int chosenIndex = baseMenu.CurrentPage * baseMenu.SpacesPerPage + baseMenu.CurrentChoice;

                        tradeItem.OfferItems(new List <InvItem>());

                        MenuManager.Instance.RemoveMenu();
                        MenuManager.Instance.ReplaceMenu(new TradeItemMenu(chosenIndex));

                        GameManager.Instance.Fanfare("Fanfare/Treasure");
                        MenuManager.Instance.AddMenu(MenuManager.Instance.CreateDialogue(Text.FormatKey("DLG_TRADE_ITEM_COMPLETE")), false);

                        tradeItem.SetReady(ExchangeState.Selecting);
                    }
                }

                baseMenu.UpdateStatus();
            }
        }