public override void Start() { m_scoreTexts = new TextComponent[3]; m_scoreTextFxs = new TextFx[3]; m_textFxParameters = new TextFxParameters[3]; for (int i = 0; i < m_textFxParameters.Length; i++) { m_textFxParameters[i] = new TextFxParameters(); } m_scoreTextsSpacing = new Vector2[] { new Vector2(-150, 140), new Vector2(0, 140), new Vector2(150, 140) }; Engine.World.EventManager.AddListener((int)EventId.Goal, OnGoal); Engine.World.EventManager.AddListener((int)EventId.LastSeconds, OnLastSeconds); Engine.World.EventManager.AddListener((int)EventId.Victory, OnVictory); Engine.World.EventManager.AddListener((int)EventId.MatchBegin, OnMatchBegin); Engine.World.EventManager.AddListener((int)EventId.FirstPeriod, OnFirstPeriod); Engine.World.EventManager.AddListener((int)EventId.SecondPeriodBegin, OnSecondPeriodBegin); Engine.World.EventManager.AddListener((int)EventId.SecondPeriod, OnSecondPeriod); Engine.World.EventManager.AddListener((int)EventId.HalfTime, OnHalfTime); Engine.World.EventManager.AddListener((int)EventId.MatchEnd, OnMatchEnd); Engine.World.EventManager.AddListener((int)EventId.Victory, OnVictory); m_timerScoreTextMS = new Timer(Engine.GameTime.Source, 0); m_timerScoreTextEvent = new TimerEvent(m_timerScoreTextMS_OnTime); m_timerScoreTextMS.OnTime += m_timerScoreTextEvent; m_timerCupSpriteMS = new Timer(Engine.GameTime.Source, 0); m_timerCupSpriteEvent = new TimerEvent(m_timerCupSpriteMS_OnTime); m_timerCupSpriteMS.OnTime += m_timerCupSpriteEvent; m_playerOffScreenMarkerSprites = new ColorMaskedSprite[4]; for (int i = 0; i < m_playerOffScreenMarkerSprites.Length; i++) { Sprite sprite = Sprite.CreateFromTexture("Graphics/playerOffScreenMarkerAO.png"); sprite.Scale = new Vector2(0.5f, 0.5f); m_playerOffScreenMarkerSprites[i] = new ColorMaskedSprite(sprite, "ArenaOverlay9"); var texAsset = Engine.AssetManager.GetAsset <Texture2D>("Graphics/playerOffScreenMarkerAO.png"); m_playerOffScreenMarkerSprites[i].Mask = texAsset.Content; m_playerOffScreenMarkerSprites[i].Color1 = Game.GameManager.Players[i].PlayerColors[2]; m_playerOffScreenMarkerSprites[i].Color2 = Game.GameManager.Players[i].PlayerColors[2]; m_playerOffScreenMarkerSprites[i].Color3 = Game.GameManager.Players[i].PlayerColors[2]; m_playerOffScreenMarkerSprites[i].Visible = false; Owner.Attach(m_playerOffScreenMarkerSprites[i]); PlayerOffScreenMarker playerOffScreenMarker = Game.GameManager.Players[i].Owner.FindComponent <PlayerOffScreenMarker>(); playerOffScreenMarker.Init(); } }
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); }