public void StartChargingShot() { ShakeComponent playerShake = Owner.FindComponent <ShakeComponent>(); playerShake.StartShake(); Color color = Ball.LastPlayer.Team.ColorScheme.Color1; PlayerChargedShotFx playerChargedShotCmp = new PlayerChargedShotFx(); Owner.Attach(playerChargedShotCmp); playerChargedShotCmp.Color = color; m_chargedShotTimer.Reset(); m_chargedShotTimer.Start(); m_chargingShot = true; m_audioCmpCharge.Play(); }
public void StopChargingShot() { ShakeComponent playerShake = Owner.FindComponent <ShakeComponent>(); if (playerShake != null) { playerShake.StopShake(); } PlayerChargedShotFx playerChargedShotCmp = Owner.FindComponent <PlayerChargedShotFx>(); if (playerChargedShotCmp != null) { playerChargedShotCmp.Stop(); } m_chargedShotTimer.Stop(); m_chargingShot = false; m_audioCmpCharge.Stop(); }
public void Init() { m_effects = new List <PlayerEffect>(); var allPlayerSpriteInfos = Engine.AssetManager.Get <PlayerSpriteInfo[]>("Game/PlayerSprites.lua::PlayerSprites"); var playerSpriteInfo = allPlayerSpriteInfos[(int)m_playerIndex]; Sprite playerSprite = Sprite.CreateFromTexture(playerSpriteInfo.Material); playerSprite.Scale = new Vector2(0.48f, 0.48f); m_spritePlayerCmp = new ColorMaskedSprite(playerSprite, "ArenaOverlay9"); var texAsset = playerSpriteInfo.Mask; m_spritePlayerCmp.Mask = texAsset; ResetColors(); Owner.Attach(m_spritePlayerCmp); m_shadowCmp = new SpriteComponent( Sprite.CreateFromTexture("Graphics/playerShadow.png"), "ArenaOverlay8"); m_shadowCmp.Sprite.Scale = playerSprite.Scale; Owner.Attach(m_shadowCmp); Sprite sparksSprite = Sprite.Create("Graphics/playerSprite.lua::Sprite"); sparksSprite.SetAnimation("Sparks"); sparksSprite.Playing = true; m_sparksCmp = new SpriteComponent(sparksSprite, "ArenaOverlay10"); m_sparksCmp.Visible = false; Owner.Attach(m_sparksCmp); Sprite goldFxSprite = Sprite.Create("Graphics/playerSprite.lua::Sprite"); goldFxSprite.SetAnimation("GoldFx"); goldFxSprite.Playing = false; m_goldFxSpriteCmp = new SpriteComponent(goldFxSprite, "ArenaOverlay10"); m_goldFxSpriteCmp.Visible = false; Owner.Attach(m_goldFxSpriteCmp); Sprite shieldUpFxSprite = Sprite.Create("Graphics/playerSprite.lua::Sprite"); shieldUpFxSprite.SetAnimation("ShieldUp"); shieldUpFxSprite.Playing = false; m_shieldUpFxSpriteCmp = new SpriteComponent(shieldUpFxSprite, "ArenaOverlay10"); m_shieldUpFxSpriteCmp.Visible = false; Owner.Attach(m_shieldUpFxSpriteCmp); // Physic m_bodyCmp = new RigidBodyComponent(); CircleShape bodyShape = new CircleShape(ConvertUnits.ToSimUnits(Parameters.Radius), 1.0f); Fixture fix = new Fixture(m_bodyCmp.Body, bodyShape); Owner.Attach(m_bodyCmp); m_bodyCmp.Body.FixedRotation = true; m_bodyCmp.Body.LinearDamping = Parameters.Physic.LinearDamping; m_bodyCmp.Body.AngularDamping = Parameters.Physic.AngularDamping; m_bodyCmp.Body.Restitution = Parameters.Physic.Restitution; m_bodyCmp.Body.Mass = Parameters.Physic.Mass; m_bodyCmp.Body.CollisionCategories = (Category)CollisionType.Player; m_bodyCmp.Body.SleepingAllowed = false; m_bodyCmp.Body.IsBullet = true; // Blink m_blink = new PlayerBlink(this); Owner.Attach(m_blink); if (m_playerIndex == PlayerIndex.One) { m_bodyCmp.Body.CollisionCategories = (Category)CollisionType.Gameplay | (Category)CollisionType.Player | (Category)CollisionType.TeamA; } if (m_playerIndex == PlayerIndex.Two) { m_bodyCmp.Body.CollisionCategories = (Category)CollisionType.Gameplay | (Category)CollisionType.Player | (Category)CollisionType.TeamA; } if (m_playerIndex == PlayerIndex.Three) { m_bodyCmp.Body.CollisionCategories = (Category)CollisionType.Gameplay | (Category)CollisionType.Player | (Category)CollisionType.TeamB; } if (m_playerIndex == PlayerIndex.Four) { m_bodyCmp.Body.CollisionCategories = (Category)CollisionType.Gameplay | (Category)CollisionType.Player | (Category)CollisionType.TeamB; } // Audio m_audioCmpBallShot = new AudioComponent("Audio/Sounds.lua::BallShot"); Owner.Attach(m_audioCmpBallShot); m_audioCmpStun = new AudioComponent("Audio/Sounds.lua::Stun"); Owner.Attach(m_audioCmpStun); m_audioCmpCharge = new AudioComponent("Audio/Sounds.lua::Charge"); Owner.Attach(m_audioCmpCharge); // m_ballTrigger = new TriggerComponent(); var triggerFixture = FixtureFactory.AttachCircle( ConvertUnits.ToSimUnits(Parameters.Radius + Parameters.BallSnapRadius), 0, m_ballTrigger.Body); triggerFixture.IsSensor = true; m_ballTrigger.Body.CollidesWith = (Category)CollisionType.Ball; Owner.Attach(m_ballTrigger); m_magnetSensor = new TriggerComponent(); triggerFixture = FixtureFactory.AttachCircle( ConvertUnits.ToSimUnits(Parameters.MagnetRadiusMax), 0, m_magnetSensor.Body); triggerFixture.IsSensor = true; m_magnetSensor.Body.CollidesWith = (Category)CollisionType.Ball; Owner.Attach(m_magnetSensor); Engine.World.EventManager.AddListener((int)EventId.MatchBegin, OnMatchBegin); Engine.World.EventManager.AddListener((int)EventId.FirstPeriod, OnFirstPeriod); Engine.World.EventManager.AddListener((int)EventId.HalfTime, OnHalfTime); Engine.World.EventManager.AddListener((int)EventId.HalfTimeTransition, OnHalfTimeTransition); Engine.World.EventManager.AddListener((int)EventId.SecondPeriod, OnSecondPeriod); Engine.World.EventManager.AddListener((int)EventId.MatchEnd, OnMatchEnd); Engine.World.EventManager.AddListener((int)EventId.Victory, OnMatchVictory); Engine.World.EventManager.AddListener((int)EventId.KickOff, OnKickOff); m_ballAngle = 0; //Initialise ChargetShots Timer float chargeTimeMS = Parameters.ChargedShot.ChargeTimeMS; chargeTimeMS *= ComputeSkillCoef("ChargedShotTime", Parameters.Skills.ChargedShotTimeBase, Parameters.Skills.ChargedShotTimeCoef); m_chargedShotTimer = new Timer(Engine.GameTime.Source, chargeTimeMS, TimerBehaviour.Stop); float delay = Engine.Debug.EditSingle("ChargedShotDelay", 250); m_chargedShotDelayTimer = new Timer(Engine.GameTime.Source, delay); ShakeComponent shakeCmp = new ShakeComponent(m_spritePlayerCmp); shakeCmp.ShakeAmount = 4.0f; Owner.Attach(shakeCmp); PlayerOffScreenMarker offScreenMarker = new PlayerOffScreenMarker(); Owner.Attach(offScreenMarker); if (m_playerInfo.InputType == InputType.AI && m_teamMate.PlayerInfo.InputType == InputType.AI) { offScreenMarker.Hide = true; } m_moveDirection = Vector2.Zero; m_bodyCmp.OnCollision += new CollisionEvent(OnCollision); m_bodyCmp.UserData.Add("Tag", "Player"); //Antenna var playerAntenna = new PlayerAntenna(); Owner.Attach(playerAntenna); }