Пример #1
0
        public override void LoadLegacy(BinaryReader reader)
        {
            string[] splitInvasionData = reader.ReadString().Split(':');

            // Load values into InvasionWorld.
            invasionType = int.Parse(splitInvasionData[0]);

            invasionSizeStart = int.Parse(splitInvasionData[1]);
            invasionSize      = int.Parse(splitInvasionData[2]);

            invasionX = int.Parse(splitInvasionData[3]);

            invasionProgress    = int.Parse(splitInvasionData[4]);
            invasionProgressMax = int.Parse(splitInvasionData[5]);

            // Load values into InvasionHandler.
            InvasionHandler.currentInvasion = InvasionHandler.GetInvasionInfo(invasionType);
            loaded = false;
        }
        public override void PostDrawInterface(SpriteBatch spriteBatch)
        {
            if (InvasionWorld.invasionType <= 0 || InvasionWorld.invasionProgress == -1)
            {
                return;
            }

            if (InvasionHandler.currentInvasion == null || InvasionHandler.currentInvasion != InvasionHandler.GetInvasionInfo(InvasionWorld.invasionType))
            {
                InvasionHandler.currentInvasion = InvasionHandler.GetInvasionInfo(InvasionWorld.invasionType);
                if (Main.netMode == 0)
                {
                    Main.NewText(InvasionHandler.currentInvasion.beginMessage, 175, 75, 255, false);
                    return;
                }
                if (Main.netMode == 2)
                {
                    NetMessage.SendData(25, -1, -1, InvasionHandler.currentInvasion.beginMessage, 255, 175f, 75f, 255f, 0, 0, 0);
                }
            }

            if (!Main.gamePaused && InvasionHandler.invasionProgressDisplayLeft > 0)
            {
                InvasionHandler.invasionProgressDisplayLeft--;
            }
            if (InvasionHandler.invasionProgressDisplayLeft > 0)
            {
                InvasionHandler.invasionProgressAlpha += 0.05f;
            }
            else
            {
                InvasionHandler.invasionProgressAlpha -= 0.05f;
            }
            if (InvasionHandler.invasionProgressAlpha < 0f)
            {
                InvasionHandler.invasionProgressAlpha = 0f;
            }
            if (InvasionHandler.invasionProgressAlpha > 1f)
            {
                InvasionHandler.invasionProgressAlpha = 1f;
            }
            if (InvasionHandler.invasionProgressAlpha > 0)
            {
                float num = 0.5f + InvasionHandler.invasionProgressAlpha * 0.5f;

                string text = InvasionHandler.currentInvasion.name;
                Color  c    = new Color(64, 109, 164) * 0.5f;

                int       num7    = (int)(200f * num);
                int       num8    = (int)(45f * num);
                Vector2   vector3 = new Vector2((float)(Main.screenWidth - 120), (float)(Main.screenHeight - 40));
                Rectangle r2      = new Rectangle((int)vector3.X - num7 / 2, (int)vector3.Y - num8 / 2, num7, num8);
                Utils.DrawInvBG(spriteBatch, r2, new Color(63, 65, 151, 255) * 0.785f);
                string text3;
                if (InvasionWorld.invasionProgressMax == 0)
                {
                    text3 = InvasionWorld.invasionProgress.ToString();
                }
                else
                {
                    text3 = ((int)((float)InvasionWorld.invasionProgress * 100f / (float)InvasionWorld.invasionProgressMax)).ToString() + "%";
                }
                text3 = "Cleared " + text3;
                Texture2D texture2D4 = Main.colorBarTexture;
                Texture2D texture2D5 = Main.colorBlipTexture;
                if (InvasionWorld.invasionProgressMax != 0)
                {
                    spriteBatch.Draw(texture2D4, vector3, null, Color.White * InvasionHandler.invasionProgressAlpha, 0f, new Vector2((float)(texture2D4.Width / 2), 0f), num, SpriteEffects.None, 0f);
                    float   num9    = MathHelper.Clamp((float)InvasionWorld.invasionProgress / (float)InvasionWorld.invasionProgressMax, 0f, 1f);
                    float   num10   = 169f * num;
                    float   num11   = 8f * num;
                    Vector2 vector4 = vector3 + Vector2.UnitY * num11 + Vector2.UnitX * 1f;
                    Utils.DrawBorderString(Main.spriteBatch, text3, vector4, Color.White * InvasionHandler.invasionProgressAlpha, num, 0.5f, 1f, -1);
                    vector4 += Vector2.UnitX * (num9 - 0.5f) * num10;
                    spriteBatch.Draw(Main.magicPixel, vector4, new Rectangle?(new Rectangle(0, 0, 1, 1)), new Color(255, 241, 51) * InvasionHandler.invasionProgressAlpha, 0f, new Vector2(1f, 0.5f), new Vector2(num10 * num9, num11), SpriteEffects.None, 0f);
                    spriteBatch.Draw(Main.magicPixel, vector4, new Rectangle?(new Rectangle(0, 0, 1, 1)), new Color(255, 165, 0, 127) * InvasionHandler.invasionProgressAlpha, 0f, new Vector2(1f, 0.5f), new Vector2(2f, num11), SpriteEffects.None, 0f);
                    spriteBatch.Draw(Main.magicPixel, vector4, new Rectangle?(new Rectangle(0, 0, 1, 1)), Color.Black * InvasionHandler.invasionProgressAlpha, 0f, new Vector2(0f, 0.5f), new Vector2(num10 * (1f - num9), num11), SpriteEffects.None, 0f);
                }
                Vector2   center = new Vector2((Main.screenWidth - 120), (Main.screenHeight - 80));
                Vector2   value  = Main.fontItemStack.MeasureString(text);
                Rectangle r3     = Utils.CenteredRectangle(center, (value + new Vector2((float)(20), 10f)) * num);
                Utils.DrawInvBG(Main.spriteBatch, r3, c);
                Utils.DrawBorderString(spriteBatch, text, r3.Right() + Vector2.UnitX * num * -8f, Color.White * InvasionHandler.invasionProgressAlpha, num * 0.9f, 1f, 0.4f, -1);
            }
        }