public void SetStatusLabel(EOResourceID type, string prepended, EOResourceID text)
 {
     CheckStatusLabelType(type);
     SetStatusLabelText(_localizedStringFinder.GetString(type),
                        prepended,
                        _localizedStringFinder.GetString(text));
 }
 private void HandleMapItemClick(OldMapItem mi)
 {
     if ((_mainCharacter.ID != mi.OwningPlayerID && mi.OwningPlayerID != 0) &&
         (mi.IsNPCDrop && (DateTime.Now - mi.DropTime).TotalSeconds <= OldWorld.Instance.NPCDropProtectTime) ||
         (!mi.IsNPCDrop && (DateTime.Now - mi.DropTime).TotalSeconds <= OldWorld.Instance.PlayerDropProtectTime))
     {
         OldCharacter charRef = _parentMapRenderer.GetOtherPlayerByID((short)mi.OwningPlayerID);
         EOResourceID msg     = charRef == null ? EOResourceID.STATUS_LABEL_ITEM_PICKUP_PROTECTED : EOResourceID.STATUS_LABEL_ITEM_PICKUP_PROTECTED_BY;
         string       extra   = charRef == null ? "" : charRef.Name;
         EOGame.Instance.Hud.SetStatusLabel(EOResourceID.STATUS_LABEL_TYPE_INFORMATION, msg, extra);
     }
     else
     {
         var item = OldWorld.Instance.EIF[mi.ItemID];
         if (!EOGame.Instance.Hud.InventoryFits(mi.ItemID))
         {
             EOGame.Instance.Hud.SetStatusLabel(EOResourceID.STATUS_LABEL_TYPE_INFORMATION, EOResourceID.STATUS_LABEL_ITEM_PICKUP_NO_SPACE_LEFT);
         }
         else if (_mainCharacter.Weight + item.Weight * mi.Amount > _mainCharacter.MaxWeight)
         {
             EOGame.Instance.Hud.SetStatusLabel(EOResourceID.STATUS_LABEL_TYPE_WARNING, EOResourceID.DIALOG_ITS_TOO_HEAVY_WEIGHT);
         }
         else if (!_game.API.GetItem(mi.UniqueID)) //server validates drop protection anyway
         {
             EOGame.Instance.DoShowLostConnectionDialogAndReturnToMainMenu();
         }
     }
 }
        public void SetStatusLabel(EOResourceID type, EOResourceID text, string appended = "")
        {
            CheckStatusLabelType(type);

            SetStatusLabelText(_localizedStringFinder.GetString(type),
                               _localizedStringFinder.GetString(text),
                               appended);
        }
Example #4
0
        private void GivenFileHasStringForResourceID(DataFiles file, EOResourceID id, string str)
        {
            if (!_dataFileProvider.DataFiles.ContainsKey(file))
            {
                _dataFileProvider.DataFiles.Add(file, Mock.Of <IEDFFile>(x => x.Data == new Dictionary <int, string>()));
            }

            _dataFileProvider.DataFiles[file].Data[(int)id] = str;
        }
Example #5
0
        public void GetString_ResourceID_UsesLanguageSetInConfig()
        {
            const EOResourceID testID = EOResourceID.STRING_SERVER;
            const string       expectedResourceString = "language test";

            GivenLanguageSetInConfig(EOLanguage.Dutch);
            GivenFileHasStringForResourceID(DataFiles.DutchStatus2, testID, expectedResourceString);

            var actualString = _localizedStringFinder.GetString(testID);

            Assert.AreEqual(expectedResourceString, actualString);
        }
        private void CheckStatusLabelType(EOResourceID type)
        {
            switch (type)
            {
            case EOResourceID.STATUS_LABEL_TYPE_ACTION:
            case EOResourceID.STATUS_LABEL_TYPE_BUTTON:
            case EOResourceID.STATUS_LABEL_TYPE_INFORMATION:
            case EOResourceID.STATUS_LABEL_TYPE_WARNING:
            case EOResourceID.STATUS_LABEL_TYPE_ITEM:
            case EOResourceID.SKILLMASTER_WORD_SPELL:
                break;

            default: throw new ArgumentOutOfRangeException(nameof(type), "Use either ACTION, BUTTION, INFORMATION, WARNING, ITEM, or SPELL for this.");
            }
        }
        private void _validateMessage(EOResourceID msg)
        {
            switch (msg)
            {
            case EOResourceID.DIALOG_TRANSFER_DROP:
            case EOResourceID.DIALOG_TRANSFER_GIVE:
            case EOResourceID.DIALOG_TRANSFER_JUNK:
            case EOResourceID.DIALOG_TRANSFER_BUY:
            case EOResourceID.DIALOG_TRANSFER_SELL:
            case EOResourceID.DIALOG_TRANSFER_TRANSFER:
            case EOResourceID.DIALOG_TRANSFER_DEPOSIT:
            case EOResourceID.DIALOG_TRANSFER_WITHDRAW:
            case EOResourceID.DIALOG_TRANSFER_OFFER:
                break;

            default: throw new ArgumentOutOfRangeException(nameof(msg), "Use one of the approved messages.");
            }
        }
Example #8
0
        public void GetString_ResourceID_ByLanguage_MapsToCorrectFile()
        {
            const EOResourceID testID = EOResourceID.STATUS_LABEL_YOU_GAINED_EXP;

            GivenFileHasStringForResourceID(DataFiles.DutchStatus2, testID, "dutch");
            GivenFileHasStringForResourceID(DataFiles.EnglishStatus2, testID, "english");
            GivenFileHasStringForResourceID(DataFiles.PortugueseStatus2, testID, "portuguese");
            GivenFileHasStringForResourceID(DataFiles.SwedishStatus2, testID, "swedish");

            var dutchActual      = _localizedStringFinder.GetString(EOLanguage.Dutch, testID);
            var englishActual    = _localizedStringFinder.GetString(EOLanguage.English, testID);
            var portugueseActual = _localizedStringFinder.GetString(EOLanguage.Portuguese, testID);
            var swedishActual    = _localizedStringFinder.GetString(EOLanguage.Swedish, testID);

            Assert.AreEqual("dutch", dutchActual);
            Assert.AreEqual("english", englishActual);
            Assert.AreEqual("portuguese", portugueseActual);
            Assert.AreEqual("swedish", swedishActual);
        }
Example #9
0
 public string GetString(EOResourceID dataConstant)
 {
     return(GetString(_configProvider.Language, dataConstant));
 }
Example #10
0
 public string GetString(EOLanguage language, EOResourceID dataConstant)
 {
     return(_dataFileProvider
            .DataFiles[GetFile2FromLanguage(language)]
            .Data[(int)dataConstant]);
 }
Example #11
0
 public void SetStatusLabel(EOResourceID type, string detail)
 {
     //SetStatusLabelText(string.Format("[ {0} ] {1}", typeText, detail));
 }
Example #12
0
 public void SetStatusLabel(EOResourceID type, string extra, EOResourceID message)
 {
     //SetStatusLabelText(string.Format("[ {0} ] {1} {2}", typeText, extra, messageText));
 }
Example #13
0
 public void SetStatusLabel(EOResourceID type, EOResourceID message, string extra = "")
 {
 }
Example #14
0
 public static string GetString(EOResourceID id)
 {
     return(Instance.DataFiles[Instance.Localized2].Data[(int)id]);
 }
        /// <summary>
        /// Create a new item transfer dialog
        /// </summary>
        /// <param name="itemName">Name of the item to be displayed</param>
        /// <param name="transferType">Which transfer is being done (controls title)</param>
        /// <param name="totalAmount">Maximum amount that can be transferred</param>
        /// <param name="message">Resource ID of message to control displayed text</param>
        public ItemTransferDialog(string itemName, TransferType transferType, int totalAmount, EOResourceID message = EOResourceID.DIALOG_TRANSFER_DROP)
            : base((PacketAPI)null)
        {
            _validateMessage(message);

            Texture2D weirdSpriteSheet = ((EOGame)Game).GFXManager.TextureFromResource(GFXTypes.PostLoginUI, 27);
            Rectangle sourceArea       = new Rectangle(38, 0, 265, 170);

            //get bgTexture
            Color[] textureData = new Color[sourceArea.Width * sourceArea.Height];
            bgTexture = new Texture2D(Game.GraphicsDevice, sourceArea.Width, sourceArea.Height);
            weirdSpriteSheet.GetData(0, sourceArea, textureData, 0, textureData.Length);
            bgTexture.SetData(textureData);

            //get the title bar - for when it isn't drop items
            if (transferType != TransferType.DropItems)
            {
                Rectangle titleBarArea = new Rectangle(40, 172 + ((int)transferType - 1) * 24, 241, 22);
                Color[]   titleBarData = new Color[titleBarArea.Width * titleBarArea.Height];
                m_titleBarGfx = new Texture2D(Game.GraphicsDevice, titleBarArea.Width, titleBarArea.Height);
                weirdSpriteSheet.GetData(0, titleBarArea, titleBarData, 0, titleBarData.Length);
                m_titleBarGfx.SetData(titleBarData);
            }

            //set the buttons here

            //ok/cancel buttons
            XNAButton ok = new XNAButton(smallButtonSheet, new Vector2(60, 125), _getSmallButtonOut(SmallButton.Ok), _getSmallButtonOver(SmallButton.Ok))
            {
                Visible = true
            };

            ok.OnClick += (s, e) => Close(ok, XNADialogResult.OK);
            ok.SetParent(this);
            dlgButtons.Add(ok);

            XNAButton cancel = new XNAButton(smallButtonSheet, new Vector2(153, 125), _getSmallButtonOut(SmallButton.Cancel), _getSmallButtonOver(SmallButton.Cancel))
            {
                Visible = true
            };

            cancel.OnClick += (s, e) => Close(cancel, XNADialogResult.Cancel);
            cancel.SetParent(this);
            dlgButtons.Add(cancel);

            XNALabel descLabel = new XNALabel(new Rectangle(20, 42, 231, 33), Constants.FontSize10)
            {
                ForeColor = ColorConstants.LightGrayDialogMessage,
                TextWidth = 200,
                Text      =
                    $"{OldWorld.GetString(EOResourceID.DIALOG_TRANSFER_HOW_MUCH)} {itemName} {OldWorld.GetString(message)}"
            };

            descLabel.SetParent(this);

            //set the text box here
            //starting coords are 163, 97
            m_amount = new XNATextBox(new Rectangle(163, 95, 77, 19), Game.Content.Load <Texture2D>("cursor"), Constants.FontSize08)
            {
                Visible   = true,
                Enabled   = true,
                MaxChars  = 8, //max drop/junk at a time will be 99,999,999
                TextColor = ColorConstants.LightBeigeText,
                Text      = "1"
            };
            m_amount.SetParent(this);
            m_prevSubscriber = EOGame.Instance.Dispatcher.Subscriber;
            EOGame.Instance.Dispatcher.Subscriber = m_amount;
            DialogClosing += (o, e) => EOGame.Instance.Dispatcher.Subscriber = m_prevSubscriber;

            m_totalAmount = totalAmount;

            //slider control
            Texture2D src = ((EOGame)Game).GFXManager.TextureFromResource(GFXTypes.PostLoginUI, 29);
            //5th index when 'out', 6th index when 'over'
            Rectangle outText = new Rectangle(0, 15 * 5, 16, 15);
            Rectangle ovrText = new Rectangle(0, 15 * 6, 16, 15);

            Color[]     outData        = new Color[16 * 15];
            Color[]     ovrData        = new Color[16 * 15];
            Texture2D[] sliderTextures = new Texture2D[2];

            src.GetData(0, outText, outData, 0, outData.Length);
            src.GetData(0, ovrText, ovrData, 0, ovrData.Length);
            (sliderTextures[0] = new Texture2D(Game.GraphicsDevice, 16, 15)).SetData(outData);
            (sliderTextures[1] = new Texture2D(Game.GraphicsDevice, 16, 15)).SetData(ovrData);

            //starting coords are 25, 96; range rectangle is 122, 15
            XNAButton slider = new XNAButton(sliderTextures, new Vector2(25, 96));

            slider.OnClickDrag += (o, e) =>
            {
                s_sliderDragging = true; //ignores updates to slider location during text change
                MouseState st         = Mouse.GetState();
                Rectangle  sliderArea = new Rectangle(25, 96, 122 - slider.DrawArea.Width, 15);
                int        newX       = (st.X - PreviousMouseState.X) + (int)slider.DrawLocation.X;
                if (newX < sliderArea.X)
                {
                    newX = sliderArea.X;
                }
                else if (newX > sliderArea.Width + sliderArea.X)
                {
                    newX = sliderArea.Width + sliderArea.X;
                }
                slider.DrawLocation = new Vector2(newX, slider.DrawLocation.Y); //unchanged y coordinate, slides along x-axis

                float ratio = (newX - sliderArea.X) / (float)sliderArea.Width;
                m_amount.Text    = ((int)Math.Round(ratio * m_totalAmount) + 1).ToString();
                s_sliderDragging = false;
            };
            slider.SetParent(this);

            m_amount.OnTextChanged += (sender, args) =>
            {
                int amt = 0;
                if (m_amount.Text != "" && (!int.TryParse(m_amount.Text, out amt) || amt > m_totalAmount))
                {
                    amt           = m_totalAmount;
                    m_amount.Text = $"{m_totalAmount}";
                }
                else if (m_amount.Text != "" && amt < 0)
                {
                    amt           = 1;
                    m_amount.Text = $"{amt}";
                }

                if (s_sliderDragging)
                {
                    return;                   //slider is being dragged - don't move its position
                }
                //adjust the slider (created after m_amount) when the text changes
                if (amt <= 1) //NOT WORKING
                {
                    slider.DrawLocation = new Vector2(25, 96);
                }
                else
                {
                    int xCoord = (int)Math.Round((amt / (double)m_totalAmount) * (122 - slider.DrawArea.Width));
                    slider.DrawLocation = new Vector2(25 + xCoord, 96);
                }
            };

            _setSize(bgTexture.Width, bgTexture.Height);
            DrawLocation = new Vector2(Game.GraphicsDevice.PresentationParameters.BackBufferWidth / 2 - bgTexture.Width / 2, 40); //only centered horizontally
            endConstructor(false);
        }