Esempio n. 1
0
 public override void Render()
 {
     if (base.Scene.OnInterval(5))
     {
         this.flash = !this.flash;
     }
     if (this.pad.OwnerIndex != -1)
     {
         Subtexture subtexture = TFGame.Atlas ["chaliceBlood"];
         int        num        = (int)MathHelper.Lerp(0f, (float)subtexture.Height, this.pad.FillPercent);
         if (num > 0)
         {
             Color color;
             if (base.Level.Session.MatchSettings.TeamMode)
             {
                 TeamData teamData = ArcherData.Get(base.Level.Session.MatchSettings.Teams [this.pad.OwnerIndex]);
                 color = (this.flash ? teamData.ColorB : teamData.ColorA);
             }
             else
             {
                 ArcherData archerData = ArcherData.Get(TFGame.Characters [this.pad.OwnerIndex], ArcherData.ArcherTypes.Normal);
                 color = (this.flash ? archerData.ColorB : archerData.ColorA);
             }
             Draw.Texture(subtexture, new Rectangle(0, subtexture.Height - num, subtexture.Width, num), this.Position + new Vector2(-8f, (float)(-40 + subtexture.Height - num)), color);
         }
     }
     this.image.DrawOutline(1);
     base.Render();
 }
Esempio n. 2
0
 public PlayerGhostShield(LevelEntity owner) : base(false, false)
 {
     this.owner  = owner;
     this.sprite = TFGame.SpriteData.GetSpritePartInt("Shield");
     if (owner is PlayerGhost)
     {
         PlayerGhost ghost = owner as PlayerGhost;
         this.sprite.Color = ArcherData.GetColorB(ghost.PlayerIndex, ghost.Allegiance);
         if (ghost.Allegiance != Allegiance.Neutral)
         {
             this.particleType = Particles.TeamDash[(int)ghost.Allegiance];
         }
         else
         {
             this.particleType = Particles.Dash[ghost.PlayerIndex];
         }
     }
     else
     {
         this.sprite.Color = ArcherData.Enemies.ColorB;
         this.particleType = Particles.TeamDash[1];
     }
     this.sprite.Play(0, false);
     base.Add(this.sprite);
     this.sine = new SineWave(120);
     base.Add(this.sine);
 }
Esempio n. 3
0
        //
        // Constructors
        //
        public MyTeamReviver(PlayerCorpse corpse, TeamReviver.Modes mode, bool ghostRevives = false) : base(corpse.BottomCenter)
        {
            this.ghostRevives = ghostRevives;
            this.Mode         = mode;
            this.Corpse       = corpse;
            this.ScreenWrap   = true;
            base.Tag(new GameTags[] {
                GameTags.LightSource,
                GameTags.Dummy                 // Using this tag because it doesn't appear in 8-player
            });
            this.LightRadius        = 60f;
            this.LightAlpha         = 1f;
            base.Collider           = (this.normalHitbox = new WrapHitbox(24f, 25f, -12f, -20f));
            this.revivingHitbox     = new WrapHitbox(40f, 46f, -20f, -30f);
            this.playerNomralHitbox = new WrapHitbox(8f, 14f, -4f, -6f);
            this.reviveCounter      = (float)this.ReviveTime;
            base.Add(this.sine      = new SineWave(90));
            base.Add(this.arrowSine = new SineWave(20));
            switch (this.Mode)
            {
            case TeamReviver.Modes.TeamDeathmatch:
                this.arrowColor      = (this.colorA = ArcherData.Get(corpse.TeamColor).ColorA);
                this.colorB          = ArcherData.Get(corpse.TeamColor).ColorB;
                this.PlayerCanRevive = true;
                break;

            case TeamReviver.Modes.DarkWorld: {
                ArcherData archerData = ArcherData.Get(TFGame.Characters [corpse.PlayerIndex], TFGame.AltSelect [corpse.PlayerIndex]);
                this.arrowColor      = (this.colorA = archerData.ColorA);
                this.colorB          = archerData.ColorB;
                this.PlayerCanRevive = true;
                break;
            }

            case TeamReviver.Modes.Quest: {
                ArcherData archerData = ArcherData.Get(TFGame.Characters [corpse.PlayerIndex], TFGame.AltSelect [corpse.PlayerIndex]);
                this.arrowColor      = (this.colorA = archerData.ColorA);
                this.colorB          = archerData.ColorB;
                this.PlayerCanRevive = false;
                break;
            }
            }
            Alarm.Set(this, 60, delegate {
                this.canRevive = true;
            }, Alarm.AlarmMode.Oneshot);
            this.targetLightAlpha = 1f;
        }
Esempio n. 4
0
 //
 // Methods
 //
 public override void Added()
 {
     base.Added();
     if (base.Level.Session.MatchSettings.TeamMode)
     {
         this.team   = base.Level.Session.MatchSettings.Teams [this.ownerIndex];
         this.colorA = ArcherData.Get(this.team).ColorA;
         this.colorB = ArcherData.Get(this.team).ColorB;
     }
     else
     {
         this.team   = Allegiance.Neutral;
         this.colorA = ArcherData.Get(TFGame.Characters [this.ownerIndex], ArcherData.ArcherTypes.Normal).ColorA;
         this.colorB = ArcherData.Get(TFGame.Characters [this.ownerIndex], ArcherData.ArcherTypes.Normal).ColorB;
     }
     this.cloak.Color = this.colorB * 0.75f;
 }
Esempio n. 5
0
 public ArcherDataState(ArcherData data)
 {
     RequiresDarkWorldDLC = data.RequiresDarkWorldDLC;
     Breathing            = data.Breathing;
     ColorA          = data.ColorA;
     ColorB          = data.ColorB;
     Corpse          = data.Corpse;
     Gems            = data.Gems;
     Gender          = data.Gender;
     Hair            = data.Hair;
     LightbarColor   = data.LightbarColor;
     Name0           = data.Name0;
     Name1           = data.Name1;
     PurpleParticles = data.PurpleParticles;
     SFXID           = data.SFXID;
     SleepHeadFrame  = data.SleepHeadFrame;
     StartNoHat      = data.StartNoHat;
     VictoryMusic    = data.VictoryMusic;
 }
Esempio n. 6
0
        public override void Render()
        {
            Patcher.Patcher.CallRealBase();
            MenuPanel.DrawPanel(base.X - 80f, base.Y - 23f, 160f, 46f);
            Draw.TextCentered(TFGame.Font, this.variant.Title, base.Position + ((Vector2)(Vector2.UnitY * -8f)), Color.White);
            for (int i = 0; i < 8; i++)
            {
                if (TFGame.Players[i])
                {
                    Color color = (this.selection == i) ? ArcherData.GetColorB(i, Allegiance.Neutral) : ArcherData.GetColorA(i, Allegiance.Neutral);
                    float num2  = (this.variant[i] ? 2f : 1f) + (this.wigglers[i].Value * 0.3f);
                    Draw.TextCentered(TFGame.Font, this.PlayerTitles2[i], (base.Position + this.PlayerPositions2[i]) + new Vector2(0f, 7f), color, (Vector2)(Vector2.One * num2), 0f);
                }
            }
            Vector2 position = (base.Position + this.cursor) + ((Vector2)(Vector2.UnitY * (30f - (4f * this.cursorSine.Value))));
            Color   colorB   = ArcherData.GetColorB(this.selection, Allegiance.Neutral);
            Vector2 scale    = new Vector2(1f, -1f + (0.2f * this.cursorSine.Value));

            Draw.OutlineTextureJustify(TFGame.MenuAtlas["variantPerPlayerArrow"], position, colorB, scale, new Vector2(0.5f, 1f));
        }
        public MyVersusPlayerMatchResults(Session session, VersusMatchResults matchResults, int playerIndex, Vector2 tweenFrom, Vector2 tweenTo, List <AwardInfo> awards) : base(session, matchResults, playerIndex, tweenFrom, tweenTo, awards)
        {
            this.session        = session;
            this.matchResults   = matchResults;
            this.playerIndex    = playerIndex;
            this.tweenFrom      = base.Position = tweenFrom;
            this.tweenTo        = tweenTo;
            this.awards         = awards;
            this.characterIndex = TFGame.Characters[playerIndex];
            this.won            = session.MatchStats[playerIndex].Won;
            this.bg             = new Image(TFGame.MenuAtlas[this.won ? "versusResults/winnerbg" : "versusResults/bg"], null);
            this.bg.CenterOrigin();
            this.bg.Zoom = 0.5f;
            base.Add(this.bg);
            ArcherData data = ArcherData.Get(TFGame.Characters[playerIndex], TFGame.AltSelect[playerIndex]);

            if (this.won)
            {
                this.portrait = new Image(data.Portraits.Win, null);
            }
            else
            {
                this.portrait = new Image(data.Portraits.Lose, null);
            }
            this.portrait.CenterOrigin();
            this.portrait.Zoom     = 0.5f;
            this.portrait.Position = this.bg.Position + ((Vector2)(Vector2.UnitY * (((-this.bg.Height / 2f) + (this.portrait.Height / 2f)) + 15f)));
            DrawRectangle component = new DrawRectangle((this.portrait.X - (this.portrait.Width / 4f)) - 1f, (this.portrait.Y - (this.portrait.Height / 4f)) - 1f, (this.portrait.Width / 2f) + 2f, (this.portrait.Height / 2f) + 2f, this.won ? WinBorder : LoseBorder);

            base.Add(component);
            base.Add(this.portrait);
            this.gem = TFGame.MenuSpriteData.GetSpriteString(data.Gems.Menu);
            if (this.won)
            {
                this.gem.Play("on", false);
            }
            else
            {
                this.gem.Play("off", false);
            }
            this.gem.Position = (Vector2)((-Vector2.UnitY * this.bg.Height) / 2f);
            this.gem.Visible  = false;
            this.gem.Zoom     = 0.5f;
            base.Add(this.gem);
            if (this.won)
            {
                switch (this.characterIndex)
                {
                case 0:
                    this.particlesAt    = new Vector2(21f, 11f);
                    this.particlesRange = new Vector2(11f, 7f);
                    return;

                case 1:
                    this.particlesAt    = new Vector2(29f, 8f);
                    this.particlesRange = new Vector2(14f, 6f);
                    return;

                case 2:
                    this.particlesAt    = new Vector2(29f, 10f);
                    this.particlesRange = new Vector2(10f, 8f);
                    return;

                case 3:
                    this.particlesAt    = new Vector2(25f, 14f);
                    this.particlesRange = new Vector2(15f, 6f);
                    break;

                default:
                    return;
                }
            }
        }
Esempio n. 8
0
 public override void Render()
 {
     Patcher.Patcher.CallRealBase();
     base.DrawSelection(this.Variant.Value ? VariantItem.ActiveSelection : VariantItem.NormalSelection);
     if (base.Selected)
     {
         bool perPlayer = this.Variant.PerPlayer;
     }
     if (this.Variant.Value && (base.Alpha >= 0.8f))
     {
         if (!base.Selected)
         {
             Draw.HollowRect(base.X - 10f, base.Y - 10f, 20f, 20f, (Color)(VariantItem.ActiveSelection * base.Alpha));
         }
         if (this.Variant.PerPlayer)
         {
             for (int i = 0; i < 4; i++)
             {
                 if (TFGame.Players[i] && this.Variant[i])
                 {
                     Draw.TextureCentered(TFGame.MenuAtlas["variants/playerBanner"], new Vector2((base.X - 8f) + (5 * i), base.Y + 9f), ArcherData.GetColorA(i, Allegiance.Neutral));
                 }
             }
             for (int i = 4; i < 8; i++)
             {
                 if (TFGame.Players[i] && this.Variant[i])
                 {
                     Draw.TextureCentered(TFGame.MenuAtlas["variants/playerBanner"], new Vector2((base.X - 8f) + (5 * (i - 4)), base.Y + 18f), ArcherData.GetColorA(i, Allegiance.Neutral));
                 }
             }
         }
     }
     if (this.taggedNew)
     {
         Draw.TextureCentered(TFGame.MenuAtlas["variants/newVariantsTagSmall"], new Vector2(base.X + 6f, base.Y - 6f), (Color)(Color.White * base.Alpha), Math.Max((float)1f, (float)(1f + (0.5f * this.newSine.Value))), 0f);
     }
     base.DrawBubble();
     base.DrawExplain();
 }
Esempio n. 9
0
 public override int NotJoinedUpdate()
 {
     if (this.input != null)
     {
         if (this.input.MenuBack && !base.MainMenu.Transitioning)
         {
             for (int i = 0; i < 8; i++)
             {
                 TFGame.Players[i] = false;
             }
             Sounds.ui_clickBack.Play(160f, 1f);
             if ((MainMenu.RollcallMode == MainMenu.RollcallModes.Versus) || (MainMenu.RollcallMode == MainMenu.RollcallModes.Trials))
             {
                 base.MainMenu.State = MainMenu.MenuState.Main;
             }
             else
             {
                 base.MainMenu.State = MainMenu.MenuState.CoOp;
             }
         }
         else if (this.input.MenuLeft && this.CanChangeSelection)
         {
             this.drawDarkWorldLock = false;
             this.ChangeSelectionLeft();
             Sounds.ui_move2.Play(160f, 1f);
             this.arrowWiggle.Start();
             this.rightArrowWiggle = false;
         }
         else if (this.input.MenuRight && this.CanChangeSelection)
         {
             this.drawDarkWorldLock = false;
             this.ChangeSelectionRight();
             Sounds.ui_move2.Play(160f, 1f);
             this.arrowWiggle.Start();
             this.rightArrowWiggle = true;
         }
         else if (this.input.MenuAlt && GameData.DarkWorldDLC)
         {
             this.drawDarkWorldLock = false;
             this.altWiggle.Start();
             Sounds.ui_altCostumeShift.Play(base.X, 1f);
             if (this.archerType == ArcherData.ArcherTypes.Normal)
             {
                 this.archerType = ArcherData.ArcherTypes.Alt;
             }
             else
             {
                 this.archerType = ArcherData.ArcherTypes.Normal;
             }
             this.portrait.SetCharacter(this.CharacterIndex, this.archerType, 1);
         }
         else if ((this.input.MenuConfirmOrStart && !TFGame.CharacterTaken(this.CharacterIndex)) && (TFGame.PlayerAmount < this.MaxPlayers))
         {
             if (ArcherData.Get(this.CharacterIndex, this.archerType).RequiresDarkWorldDLC&& !GameData.DarkWorldDLC)
             {
                 this.drawDarkWorldLock = true;
                 if ((this.darkWorldLockEase < 1f) || !TFGame.OpenStoreDarkWorldDLC())
                 {
                     this.portrait.Shake();
                     this.shakeTimer = 30f;
                     Sounds.ui_invalid.Play(base.X, 1f);
                     if (TFGame.PlayerInputs[this.playerIndex] != null)
                     {
                         TFGame.PlayerInputs[this.playerIndex].Rumble(1f, 20);
                     }
                 }
                 return(0);
             }
             if ((this.input.MenuAlt2Check && (this.archerType == ArcherData.ArcherTypes.Normal)) && (ArcherData.SecretArchers[this.CharacterIndex] != null))
             {
                 this.archerType = ArcherData.ArcherTypes.Secret;
                 this.portrait.SetCharacter(this.CharacterIndex, this.archerType, 1);
             }
             this.portrait.Join(false);
             TFGame.Players[this.playerIndex]   = true;
             TFGame.AltSelect[this.playerIndex] = this.archerType;
             if (TFGame.PlayerInputs[this.playerIndex] != null)
             {
                 TFGame.PlayerInputs[this.playerIndex].Rumble(1f, 20);
             }
             this.shakeTimer = 20f;
             if (TFGame.PlayerAmount == this.MaxPlayers)
             {
                 this.ForceStart();
             }
             return(1);
         }
     }
     return(0);
 }
Esempio n. 10
0
        public override void Update()
        {
            base.Update();
            if (base.Scene.OnInterval(5))
            {
                this.flash = !this.flash;
            }
            int  num  = -1;
            bool flag = false;

            if (this.finished)
            {
                num = this.OwnerIndex;
            }
            else if (this.IsOwnerOnPad())
            {
                num  = this.OwnerIndex;
                flag = this.IsContestorOnPad();
            }
            else
            {
                int friendlyOnPad = this.GetFriendlyOnPad();
                if (friendlyOnPad != -1)
                {
                    num  = friendlyOnPad;
                    flag = this.IsContestorOnPad();
                }
                else
                {
                    this.GetContestorOnPad(ref num);
                }
            }
            Allegiance allegiance;

            if (num == -1)
            {
                allegiance = Allegiance.Neutral;
            }
            else
            {
                allegiance = base.Level.Session.MatchSettings.Teams [num];
            }
            float num3;

            if (base.Level.Session.MatchSettings.TeamMode)
            {
                int num2 = base.Level.Session.MatchSettings.GetTeamMismatch((Allegiance)this.OwnerIndex);
                num2 = Math.Sign(num2);
                num3 = 1f / (float)(120 + 15 * num2);
            }
            else
            {
                num3 = 1f / (float)(120 - 15 * (TFGame.PlayerAmount - 2));
            }
            float num4 = MathHelper.Lerp(0.00148148148f, 0.0148148146f, this.drainLerp);

            if (flag)
            {
                this.SetSFXState(-1);
            }
            else if (num == -1)
            {
                this.SetSFXState(-1);
                this.FillPercent = Calc.Approach(this.FillPercent, 0f, num4 * Engine.TimeMult);
                this.drainLerp   = Calc.Approach(this.drainLerp, 1f, 0.0166666675f * Engine.TimeMult);
                if (this.FillPercent == 0f)
                {
                    this.OwnerIndex = -1;
                    this.OwnerTeam  = Allegiance.Neutral;
                }
            }
            else
            {
                if (num != this.OwnerIndex && allegiance == this.OwnerTeam && base.Level.Session.MatchSettings.TeamMode)
                {
                    this.OwnerIndex = num;
                }
                if (num == this.OwnerIndex)
                {
                    this.SetSFXState(1);
                    this.FillPercent = Calc.Approach(this.FillPercent, 1f, num3 * Engine.TimeMult);
                    this.drainLerp   = 0f;
                    if (this.FillPercent >= 1f && !this.finished)
                    {
                        this.Finish();
                    }
                }
                else
                {
                    this.SetSFXState(-1);
                    this.FillPercent = Calc.Approach(this.FillPercent, 0f, num4 * Engine.TimeMult);
                    this.drainLerp   = Calc.Approach(this.drainLerp, 1f, 0.0166666675f * Engine.TimeMult);
                    if (this.FillPercent == 0f)
                    {
                        this.OwnerIndex = num;
                        this.OwnerTeam  = allegiance;
                    }
                }
            }
            if (num == -1)
            {
                this.LightAlpha = Math.Max(this.LightAlpha - 0.1f * Engine.TimeMult, 0f);
            }
            else
            {
                this.LightAlpha = Math.Min(this.LightAlpha + 0.1f * Engine.TimeMult, 1f);
            }
            int num5 = num;

            if (flag)
            {
                num5 = this.OwnerIndex;
            }
            Allegiance team = allegiance;

            if (flag)
            {
                team = this.OwnerTeam;
            }
            if (num5 == -1)
            {
                this.LightColor = Color.Black;
                Image[] array = this.images;
                for (int i = 0; i < array.Length; i++)
                {
                    Image image = array [i];
                    image.Color = Color.Gray;
                }
            }
            else
            {
                if (base.Level.Session.MatchSettings.TeamMode)
                {
                    this.colorA = ArcherData.Get(team).ColorA;
                    this.colorB = ArcherData.Get(team).ColorB;
                }
                else
                {
                    this.colorA = ArcherData.Get(TFGame.Characters [num5], ArcherData.ArcherTypes.Normal).ColorA;
                    this.colorB = ArcherData.Get(TFGame.Characters [num5], ArcherData.ArcherTypes.Normal).ColorB;
                }
                Image[] array = this.images;
                for (int i = 0; i < array.Length; i++)
                {
                    Image image = array [i];
                    image.Color = (this.flash ? this.colorA : this.colorB);
                }
                this.LightColor = this.colorB.Invert();
            }
        }