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(); }
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); }
// // 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; }
// // 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; }
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; }
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; } } }
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(); }
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); }
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(); } }