private void UpdateAnimation(GameTime gameTime) { car.Rotation = angle; roof.Rotation = angle; if (angle < (float)Math.PI / 4 * 1) { car.SetFrame(0, 8); roof.SetFrame(0, 8); } else if (angle < (float)Math.PI / 4 * 3) { car.SetFrame(2, 8); roof.SetFrame(2, 8); } else if (angle < (float)Math.PI / 4 * 5) { car.SetFrame(4, 8); roof.SetFrame(4, 8); } else if (angle < (float)Math.PI / 4 * 7) { car.SetFrame(6, 8); roof.SetFrame(6, 8); } }
public StunnedDodongoState(IEnemy enemy) { Enemy = enemy; Sprite = Enemy.CreateCorrectSprite(); Sprite.SetFrame(GameData.Instance.EnemyMiscConstants.DodongoMaximumFrame); stunDuration = GameData.Instance.EnemyMiscConstants.DirectionChange; Enemy.CurrentState = this; Enemy.Physics.MovementVelocity = Vector2.Zero; }
public void ShowDiceValue(int For1, int For2) { Sprite sprite1 = GetNode("DicePlayer/Dice") as Sprite; Sprite sprite2 = GetNode("DicePlayer/Dice2") as Sprite; sprite1.SetFrame(For1 - 1); sprite2.SetFrame(For2 - 1); }
public FollowFireSnakeState(IEnemy fireSnake) { Enemy = fireSnake; Sprite = Enemy.CreateCorrectSprite(); if (fireSnake is RedMoldormSegment) { Sprite.SetFrame(2); } else if (fireSnake is BlueMoldormSegment) { Sprite.SetFrame(3); } }
public void UpdateSpriteFrameForStatus(string status) { var spriteInfo = _spritesSpec.GetSpriteInfo( Model.Id, status); if (spriteInfo.IsAnimation) { Sprite.PlayAnimation(spriteInfo.FrameName); } else { Sprite.StopAnimation(); Sprite.SetFrame(spriteInfo.FrameName); } }
public FatZombie() { m_physics = new PhysicsComponent(Globals.TheGame, Transform); m_sprite = new Sprite(Globals.TheGame, TextureLibrary.GetSpriteSheet("zombie_phat", 1, 12), Transform); m_sprite.Origin = new Vector2(0.5f, 1); m_loot = Loot.GenerateLoot(12); ObjectState.BeginAction = delegate() { m_actionManager.StartNew(m_full); }; ObjectState.StandbyAction = delegate() { m_actionManager.Stop(); m_sprite.SetFrame(0); }; ObjectState.DestroyAction = delegate() { m_destructible.ClearHitEvents(); Backpacker.HitPlayerColliders.Remove(m_collider); }; m_collider = new AABBCollider(this, new AABB(m_sprite)); Backpacker.HitPlayerColliders.Add(m_collider, delegate(Collider other) { m_physics.Throw(10.0f, -10.0f, 0.1f); }); m_destructible = new DestructibleComponent(Transform, m_collider, m_collider.AABB, HP); m_impactBox = new AABB(new Transform(Transform, true), new Vector2(72, 67)); m_impactBox.Transform.Position = new Vector2(13, -70); m_shurikenReceiver = new ShurikenReceiver(Transform, m_impactBox, 10); m_hitAnimation = new HitAnimation(World.baseEffect); m_measurer = new AABBMeasurer(new AABB(new Transform(Transform, true), new Vector2(50, 50))); m_full = new SpriteSheetAnimation(m_sprite, 0, 1, 0.7f, -1); m_noHead1 = new SpriteSheetAnimation(m_sprite, 2, 3, 0.7f, -1); m_noHead2 = new SpriteSheetAnimation(m_sprite, 4, 5, 0.7f, -1); m_noRightArm = new SpriteSheetAnimation(m_sprite, 6, 7, 0.7f, -1); m_noLeftArm = new SpriteSheetAnimation(m_sprite, 8, 9, 0.7f, -1); m_noShoulders = new SpriteSheetAnimation(m_sprite, 10, 11, 0.7f, -1); m_actionManager = new SingleActionManager(); m_actionManager.StartNew(m_full); //_projections = new BodyPart[] //{ // null, // new BodyPart(this, new Vector2(0, -55), "bp_fatshoulders"), // new BodyPart(this, new Vector2(-15, -75), "bp_basezombiearm"), // new BodyPart(this, new Vector2(-15, -75), "bp_basezombiearm"), // new BodyPart(this, new Vector2(-30, -100), "bp_fathead2"), // new BodyPart(this, new Vector2(-30, -115), "bp_fathead1"), //}; //_destroyProjections = new BodyPart[] { // new BodyPart(this, new Vector2(0, -45), "bp_fatupperb"), // new BodyPart(this, new Vector2(0, -10), "bp_fatlowerb"), //}; m_bodyParts = new ParticleSystem(Globals.TheGame, 7); m_head1 = new BodyPart(TextureLibrary.GetSpriteSheet("bp_fathead1"), new Transform(Transform, true)); m_head1.Transform.Position = new Vector2(-30, -110); m_bodyParts.AddParticle(m_head1); m_head2 = new BodyPart(TextureLibrary.GetSpriteSheet("bp_fathead2"), new Transform(Transform, true)); m_head2.Transform.Position = new Vector2(-30, -100); m_bodyParts.AddParticle(m_head2); m_shoulders = new BodyPart(TextureLibrary.GetSpriteSheet("bp_fatshoulders"), new Transform(Transform, true)); m_shoulders.Transform.Position = new Vector2(0, -80); m_bodyParts.AddParticle(m_shoulders); m_armL = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombiearm"), new Transform(Transform, true)); m_armL.Transform.Position = new Vector2(-15, -75); m_bodyParts.AddParticle(m_armL); m_armR = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombiearm"), new Transform(Transform, true)); m_armR.Transform.Position = new Vector2(-15, -75); m_bodyParts.AddParticle(m_armR); m_upperB = new BodyPart(TextureLibrary.GetSpriteSheet("bp_fatupperb"), new Transform(Transform, true)); m_upperB.Transform.Position = new Vector2(15, -65); m_bodyParts.AddParticle(m_upperB); m_lowerB = new BodyPart(TextureLibrary.GetSpriteSheet("bp_fatlowerb"), new Transform(Transform, true)); m_lowerB.Transform.Position = new Vector2(15, -27); m_bodyParts.AddParticle(m_lowerB); /// ///Hit events /// m_destructible.SetHitEvent(AttackType.Shuriken, OnShurikenHit); m_destructible.SetHitEvent(AttackType.Slash, OnSliceHit); /// /// Health events /// m_destructible.AddHealthEvent(7, false, new MethodAction(delegate() { m_actionManager.StartNew(m_noHead1); m_head1.Pop(-1.1f, 500, true); })); m_destructible.AddHealthEvent(6, false, new MethodAction(delegate() { m_actionManager.StartNew(m_noHead2); m_head2.Pop(-1.1f, 500, true); })); m_destructible.AddHealthEvent(5, false, new MethodAction(delegate() { m_actionManager.StartNew(m_noRightArm); m_armR.Pop(-1.1f, 500, true); })); m_destructible.AddHealthEvent(4, false, new MethodAction(delegate() { m_actionManager.StartNew(m_noLeftArm); m_armL.Pop(-1.1f, 500, true); })); m_destructible.AddHealthEvent(3, false, new MethodAction(delegate() { m_actionManager.StartNew(m_noShoulders); m_shoulders.Pop(-1.1f, 500, true); })); m_destructible.AddHealthEvent(0, false, new MethodAction(delegate() { m_upperB.Pop(-1.1f, 500, true); m_lowerB.Pop(-1.1f, 500, true); ObjectState.Destroy(); })); ObjectState.Begin(); }
// public Tpl_PogoZombie() // : base(typeof(PogoZombie), "e_pz") //{ // _hp = 3; // _speed = 2.4f; // _jumpForce = 25; // _appearanceRate = 30; //} public PogoZombie() : base() { m_jumpForce = Globals.Random.Next(-JumpForceInterval, JumpForceInterval + 1) + JumpForce; m_sprite = new Sprite(Globals.TheGame, TextureLibrary.GetSpriteSheet("zombie_pogo", 1, 8), Transform); m_sprite.Origin = new Vector2(0.5f, 1.0f); m_physics = new PhysicsComponent(Globals.TheGame, Transform); m_loot = Loot.GenerateLoot(12); m_currentFrame = 0; ObjectState.BeginAction = delegate() { m_sprite.SetFrame(m_currentFrame); }; ObjectState.StandbyAction = delegate() { m_sprite.SetFrame(m_currentFrame + 1); }; ObjectState.DestroyAction = delegate() { m_destructible.ClearHitEvents(); Backpacker.HitPlayerColliders.Remove(m_collider); }; m_collider = new AABBCollider(this, new AABB(m_sprite)); Backpacker.HitPlayerColliders.Add(m_collider, delegate(Collider other) { m_physics.Throw(10.0f, -10.0f, 0.1f); }); m_destructible = new DestructibleComponent(Transform, m_collider, m_collider.AABB, 4); m_hitAnimation = new HitAnimation(World.baseEffect); m_impactBox = new AABB(new Transform(Transform, true), new Vector2(20, 60)); m_impactBox.Transform.Position = new Vector2(5, -54); m_shurikenReceiver = new ShurikenReceiver(Transform, m_impactBox, 5); m_measurer = new AABBMeasurer(m_impactBox); //_projections = new BodyPart[] { // null, // new BodyPart(this, new Vector2(0, -65), "bp_basezombiearm"), // new BodyPart(this, new Vector2(-10, -55), "bp_basezombiearm"), // new BodyPart(this, new Vector2(15, -75), "bp_basezombiehead"), //}; //_destroyProjections = new BodyPart[] //{ // new BodyPart(this, new Vector2(10, -50), "bp_basezombieupperb"), // new BodyPart(this, new Vector2(10, -50), "bp_pogostick"), // new BodyPart(this, new Vector2(10, -10), "bp_basezombielowerb") //}; /// /// Body parts /// m_bodyParts = new ParticleSystem(Globals.TheGame, 6); m_head = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombiehead"), new Transform(Transform, true)); m_head.Transform.Position = new Vector2(7, -97); m_bodyParts.AddParticle(m_head); m_armR = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombiearm"), new Transform(Transform, true)); m_armR.Transform.Position = new Vector2(-20, -70); m_bodyParts.AddParticle(m_armR); m_lowerB = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombielowerb"), new Transform(Transform, true)); m_lowerB.Transform.Position = new Vector2(0, -40); m_bodyParts.AddParticle(m_lowerB); m_upperB = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombieupperb"), new Transform(Transform, true)); m_upperB.Transform.Position = new Vector2(0, -65); m_bodyParts.AddParticle(m_upperB); m_armL = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombiearm"), new Transform(Transform, true)); m_armL.Transform.Position = new Vector2(-20, -70); m_bodyParts.AddParticle(m_armL); m_pogoStick = new BodyPart(TextureLibrary.GetSpriteSheet("bp_pogostick"), new Transform(Transform, true)); m_pogoStick.Transform.Position = new Vector2(-6, -40); m_bodyParts.AddParticle(m_pogoStick); /// ///Hit events /// m_destructible.SetHitEvent(AttackType.Shuriken, OnShurikenHit); m_destructible.SetHitEvent(AttackType.Slash, OnSliceHit); /// /// Health events /// m_destructible.AddHealthEvent(3, false, new MethodAction(delegate() { m_currentFrame = 2; m_sprite.SetFrame(m_currentFrame); m_head.Pop(-1.1f, 800, true); })); m_destructible.AddHealthEvent(2, false, new MethodAction(delegate() { m_currentFrame = 4; m_sprite.SetFrame(m_currentFrame); m_armL.Pop(-1.1f, 800, true); })); m_destructible.AddHealthEvent(1, false, new MethodAction(delegate() { m_currentFrame = 6; m_sprite.SetFrame(m_currentFrame); m_armR.Pop(-1.1f, 800, true); })); m_destructible.AddHealthEvent(0, false, new MethodAction(delegate() { m_upperB.Pop(-1.1f, 800, true); m_lowerB.Pop(-1.1f, 800, true); m_pogoStick.Pop(-1.1f, 200, true); ObjectState.Destroy(); })); ObjectState.Begin(); }
public BasicZombie() : base() { m_physics = new PhysicsComponent(Globals.TheGame, Transform); m_sprite = new Sprite(Globals.TheGame, TextureLibrary.GetSpriteSheet("zombie_base", 1, 8), Transform); m_sprite.Origin = new Vector2(0.5f, 1.0f); m_loot = Loot.GenerateLoot(4); ObjectState.BeginAction = delegate() { m_actionManager.StartNew(m_full); }; ObjectState.StandbyAction = delegate() { m_actionManager.Stop(); m_sprite.SetFrame(0); }; ObjectState.DestroyAction = delegate() { m_destructible.ClearHitEvents(); Backpacker.HitPlayerColliders.Remove(m_collider); }; m_collider = new AABBCollider(this, new AABB(m_sprite)); Backpacker.HitPlayerColliders.Add(m_collider, delegate(Collider other) { m_physics.Throw(10.0f, -10.0f, 0.1f); }); m_destructible = new DestructibleComponent(Transform, m_collider, m_collider.AABB, HP); m_impactBox = new AABB(new Transform(Transform, true), new Vector2(22, 42)); m_impactBox.Transform.Position = new Vector2(13, -44); m_measurer = new AABBMeasurer(m_impactBox); m_shurikenReceiver = new ShurikenReceiver(Transform, m_impactBox, 5); m_hitAnimation = new HitAnimation(World.baseEffect); m_full = new SpriteSheetAnimation(m_sprite, 0, 1, 0.5f, -1); m_noHead = new SpriteSheetAnimation(m_sprite, 2, 3, 0.5f, -1); m_noLeftArm = new SpriteSheetAnimation(m_sprite, 4, 5, 0.5f, -1); m_noRightArm = new SpriteSheetAnimation(m_sprite, 6, 7, 0.5f, -1); m_actionManager = new SingleActionManager(); //Transform headTransform = new Transform(Transform, true //_projections = new BodyPart[] { // null, // new BodyPart(this, new Vector2(0, -65), "bp_basezombiearm"), // new BodyPart(this, new Vector2(-10, -55), "bp_basezombiearm"), // new BodyPart(this, new Vector2(15, -75), "bp_basezombiehead"), // new BodyPart(this, new Vector2(10, -50), "bp_basezombieupperb"), // new BodyPart(this, new Vector2(10, -10), "bp_basezombielowerb") //}; /// /// Body Parts /// m_bodyParts = new ParticleSystem(Globals.TheGame, 5); m_head = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombiehead"), new Transform(Transform, true)); m_head.Transform.Position = new Vector2(5, -50); m_bodyParts.AddParticle(m_head); m_armL = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombiearm"), new Transform(Transform, true)); m_armL.Transform.Position = new Vector2(5, -30); m_bodyParts.AddParticle(m_armL); m_armR = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombiearm"), new Transform(Transform, true)); m_armR.Transform.Position = new Vector2(-5, -30); m_bodyParts.AddParticle(m_armR); m_upperB = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombieupperb"), new Transform(Transform, true)); m_upperB.Transform.Position = new Vector2(0, -30); m_bodyParts.AddParticle(m_upperB); m_lowerB = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombielowerb"), new Transform(Transform, true)); m_lowerB.Transform.Position = new Vector2(0, -10); m_bodyParts.AddParticle(m_lowerB); /// ///Hit events /// m_destructible.SetHitEvent(AttackType.Shuriken, OnShurikenHit); m_destructible.SetHitEvent(AttackType.Slash, OnSliceHit); /// /// Health events /// m_destructible.AddHealthEvent(3, false, new MethodAction(delegate() { m_actionManager.StartNew(m_noHead); m_head.Pop(-1.1f, 500, true); })); m_destructible.AddHealthEvent(2, false, new MethodAction(delegate() { m_actionManager.StartNew(m_noLeftArm); m_armL.Pop(-1.1f, 500, true); })); m_destructible.AddHealthEvent(1, false, new MethodAction(delegate() { m_actionManager.StartNew(m_noRightArm); m_armR.Pop(-1.1f, 500, true); })); m_destructible.AddHealthEvent(0, false, new MethodAction(delegate() { m_upperB.Pop(-1.1f, 500, true); m_lowerB.Pop(-1.1f, 500, true); ObjectState.Destroy(); })); ObjectState.Begin(); }
public async Task SayLineAsync(string line, string actorStatus, CancellationToken cancellationToken) { var cameraPosition = Graphics.GetCameraPosition(); var textPosition = Sprite.Position.Offset( 0, -Sprite.Size.Height - 20); //TODO GameObject.IsVisible ? -Sprite.Size.Height - 20 : 0); var marginLeft = textPosition.X - cameraPosition.X; var marginRight = Graphics.Width - marginLeft; var wordWrapWidth = (int)Math.Min(marginLeft, marginRight) * 2; // TODO Must take into account real width of the text! // Move the textbox if we're to close to an edge of the screen. if (wordWrapWidth < MIN_WORD_WRAP_WIDTH) { wordWrapWidth = MIN_WORD_WRAP_WIDTH; if (marginLeft < marginRight) { textPosition = new Point( wordWrapWidth / 2, textPosition.Y); } else { textPosition = new Point( Graphics.Width - (wordWrapWidth / 2) + cameraPosition.X, textPosition.Y); } } var frameBeforeAnimation = Sprite.Frame; var animate = (actorStatus == WellKnownStatus.FaceCamera); if (animate) { Sprite.PlayAnimation(WellKnownAnimation.Talk); } using var text = Graphics.AddText( line, textPosition, options => { options.Depth = Graphics.Height + 1; // Text must be top-most. options.FillColor = Model.TextColor; options.Origin = new Point(0.5, 0.5); options.ScrollFactor = Model.ScrollFactor; options.WordWrapWidth = wordWrapWidth; }); var delay = Math.Max(line.Length * DELAY_PER_CHAR, MIN_TEXT_DELAY); try { await Task.Delay(delay, cancellationToken); } catch (TaskCanceledException) {} if (animate) { Sprite.StopAnimation(); Sprite.SetFrame(frameBeforeAnimation); } }
private void Setup() { _AddedToDelegates = false; _Pause = false; _Kill = false; _Time = Random.Range(0.0f,100.0f); _TimeToFire = 1.0f; switch(_Type) { case eAIType.AITYPE_ENEMY1: _Sprite = Sprite.Spawn(1); _Sprite.AddFrame("Enemy1F1.png"); _Sprite.AddFrame("Enemy1F2.png"); _Sprite.AddFrame("Enemy1F3.png"); _Sprite.AddFrame("Enemy1F4.png"); _Sprite.AddFrame("Enemy1F3.png"); _Sprite.AddFrame("Enemy1F2.png"); _Sprite._Width = 1.2f; _Sprite._Height = 1.2f; _Sprite._Animate = true; _Sprite._Y = 0.1f; _Radius = 0.5f; _Speed = 10.0f + Random.Range(0.0f,3.0f); _Value = 1; _AABBCollision = false; _HitPoints = 1; _Width = 0.5f * 0.5f; _Height = (0.5f * 0.5f) * Director._Instance._Aspect; _FrameAdvanceOnHit = false; _TimeToFire = Random.Range(2.0f,3.0f); AddToDelegates(); break; case eAIType.AITYPE_BLOCK: _Sprite = Sprite.Spawn(1); switch(_Block) { case 1: _Sprite.AddFrame("Block1.png"); break; case 2: _Sprite.AddFrame("Block2.png"); break; case 3: _Sprite.AddFrame("Block3.png"); break; case 4: _Sprite.AddFrame("Block4.png"); break; case 5: _Sprite.AddFrame("Block5.png"); break; case 6: _Sprite.AddFrame("Block6.png"); break; case 7: _Sprite.AddFrame("Block7.png"); break; case 8: _Sprite.AddFrame("Block8.png"); break; } _Sprite._Width = 2.0f; _Sprite._Height = 2.0f; _Sprite._Animate = false; _Sprite._Y = 0.0f; _Radius = 0.8f; _Speed = 10.0f; _Value = 1; _AABBCollision = false; _HitPoints = 1; _Width = 0.5f * 0.5f; _Height = (0.5f * 0.5f) * Director._Instance._Aspect; _FrameAdvanceOnHit = false; _TimeToFire = Random.Range(2.0f,3.0f); AddToDelegates(); break; case eAIType.AITYPE_RDEFENDER: _Sprite = Sprite.Spawn(1); _Sprite.AddFrame("RDefenderF1.png"); _Sprite.AddFrame("RDefenderF2.png"); _Sprite.AddFrame("RDefenderF3.png"); _Sprite.AddFrame("RDefenderF4.png"); _Sprite.AddFrame("RDefenderF5.png"); _Sprite.AddFrame("RDefenderF6.png"); _Sprite.AddFrame("RDefenderF7.png"); _Sprite.AddFrame("RDefenderF8.png"); _Sprite.AddFrame("RDefenderF9.png"); _Sprite.AddFrame("RDefenderF10.png"); _Sprite.AddFrame("RDefenderF11.png"); _Sprite.AddFrame("RDefenderF12.png"); _Sprite._Width = 2.5f; _Sprite._Height = 2.5f; _Sprite._Animate = true; _Sprite._Y = 0.1f; _Radius = 1.0f; _Speed = 10.0f + Random.Range(0.0f,5.0f); _Value = 1; _AABBCollision = false; _HitPoints = 1; _Width = 0.5f * 0.5f; _Height = (0.5f * 0.5f) * Director._Instance._Aspect; _FrameAdvanceOnHit = false; _TimeToFire = Random.Range(0.3f,1.0f); AddToDelegates(); break; case eAIType.AITYPE_UP_TURRET: _Sprite = Sprite.Spawn(1); _Sprite.AddFrame("TurretUpF1.png"); _Sprite.AddFrame("TurretUpF2.png"); _Sprite.AddFrame("TurretUpF3.png"); _Sprite.AddFrame("TurretUpF4.png"); _Sprite.AddFrame("TurretUpF5.png"); _Sprite.AddFrame("TurretUpF6.png"); _Sprite.AddFrame("TurretUpF7.png"); _Sprite.AddFrame("TurretUpF8.png"); _Sprite.AddFrame("TurretUpF9.png"); _Sprite.AddFrame("TurretUpF10.png"); _Sprite._Width = 1.5f; _Sprite._Height = 1.5f; _Sprite._Animate = true; _Sprite._Y = 0.1f; _Z -= 0.2f; _Radius = 1.0f; _Speed = 10.0f; _Value = 1; _AABBCollision = false; _HitPoints = 1; _Width = 0.5f * 0.5f; _Height = (0.5f * 0.5f) * Director._Instance._Aspect; _FrameAdvanceOnHit = false; _TimeToFire = Random.Range(0.3f,1.0f); AddToDelegates(); break; case eAIType.AITYPE_DOWN_TURRET: _Sprite = Sprite.Spawn(1); _Sprite.AddFrame("TurretDownF1.png"); _Sprite.AddFrame("TurretDownF2.png"); _Sprite.AddFrame("TurretDownF3.png"); _Sprite.AddFrame("TurretDownF4.png"); _Sprite.AddFrame("TurretDownF5.png"); _Sprite.AddFrame("TurretDownF6.png"); _Sprite.AddFrame("TurretDownF7.png"); _Sprite.AddFrame("TurretDownF8.png"); _Sprite.AddFrame("TurretDownF9.png"); _Sprite.AddFrame("TurretDownF10.png"); _Sprite._Width = 1.5f; _Sprite._Height = 1.5f; _Sprite._Animate = true; _Sprite._Y = 0.1f; _Z += 0.2f; _Radius = 1.0f; _Speed = 10.0f; _Value = 1; _AABBCollision = false; _HitPoints = 1; _Width = 0.5f * 0.5f; _Height = (0.5f * 0.5f) * Director._Instance._Aspect; _FrameAdvanceOnHit = false; _TimeToFire = Random.Range(0.3f,1.0f); AddToDelegates(); break; case eAIType.AITYPE_SKULL: _Sprite = Sprite.Spawn(1); _Sprite.AddFrame("MineF1.png"); _Sprite.AddFrame("MineF2.png"); _Sprite.AddFrame("MineF3.png"); _Sprite.AddFrame("MineF4.png"); _Sprite.AddFrame("MineF3.png"); _Sprite.AddFrame("MineF2.png"); _Sprite._Width = 1.8f; _Sprite._Height = 1.8f; _Sprite._Animate = true; _Sprite._Y = 0.1f; _Radius = 0.7f; _Speed = 15.0f + Random.Range(0.0f,5.0f); _SpeedBoost = 4.0f; _Value = 1; _AABBCollision = false; _HitPoints = 1; _Width = 0.5f * 0.5f; _Height = (0.5f * 0.5f) * Director._Instance._Aspect; _FrameAdvanceOnHit = false; _TimeToFire = Random.Range(2.0f,3.0f); AddToDelegates(); break; case eAIType.AITYPE_FLYER: _Sprite = Sprite.Spawn(1); _Sprite.AddFrame("FlyerF1.png"); _Sprite.AddFrame("FlyerF2.png"); _Sprite.AddFrame("FlyerF3.png"); _Sprite.AddFrame("FlyerF4.png"); _Sprite.AddFrame("FlyerF5.png"); _Sprite.AddFrame("FlyerF6.png"); _Sprite.AddFrame("FlyerF7.png"); _Sprite.AddFrame("FlyerF8.png"); _Sprite.AddFrame("FlyerF9.png"); _Sprite.AddFrame("FlyerF10.png"); _Sprite._Width = 1.5f; _Sprite._Height = 1.5f; _Sprite._Animate = true; _Sprite._Y = 0.1f; _Radius = 0.5f; _Speed = 10.0f + Random.Range(0.0f,5.0f); _Value = 1; _AABBCollision = false; _HitPoints = 1; _Width = 0.5f * 0.5f; _Height = (0.5f * 0.5f) * Director._Instance._Aspect; _FrameAdvanceOnHit = false; _TimeToFire = Random.Range(1.0f,2.0f); AddToDelegates(); _RealZ = _Z; _SinRadius = Random.Range(3.0f,5.0f); _SinFrequency = _Speed * 0.1f; break; case eAIType.AITYPE_ROCK: _Sprite = Sprite.Spawn(1); int iRock = Random.Range(0,100); if(iRock > 75) { _Sprite.AddFrame("Rock1F1.png"); _Sprite.AddFrame("Rock1F2.png"); _Sprite.AddFrame("Rock1F3.png"); _Sprite.AddFrame("Rock1F4.png"); } else if(iRock > 50) { _Sprite.AddFrame("Rock2F1.png"); _Sprite.AddFrame("Rock2F2.png"); _Sprite.AddFrame("Rock2F3.png"); _Sprite.AddFrame("Rock2F4.png"); } else if(iRock > 25) { _Sprite.AddFrame("Rock3F1.png"); _Sprite.AddFrame("Rock3F2.png"); _Sprite.AddFrame("Rock3F3.png"); _Sprite.AddFrame("Rock3F4.png"); } else { _Sprite.AddFrame("Rock4F1.png"); _Sprite.AddFrame("Rock4F2.png"); _Sprite.AddFrame("Rock4F3.png"); _Sprite.AddFrame("Rock4F4.png"); } _Sprite._Width = 4.1f; _Sprite._Height = 4.1f; _Sprite._Animate = false; _Sprite._Y = 0.0f; _Sprite.SetFrame(0); _Radius = 1.1f; _Speed = 10.0f + Random.Range(0.0f,5.0f); _Value = 1; _Width = 3.0f * 0.5f; _Height = (3.0f * 0.5f) * Director._Instance._Aspect; _AABBCollision = true; _HitPoints = 4; _CurrentFrame = 0; _FrameAdvanceOnHit = true; AddToDelegates(); break; case eAIType.AITYPE_BULLET: _Sprite = Sprite.Spawn(1); _Sprite.AddFrame("EnemyBullet.png"); _Sprite._Width = 0.8f; _Sprite._Height = 0.8f; _Sprite._Animate = false; _Sprite._Y = 0.15f; _Radius = 0.1f; _Speed = 8.0f; _Value = 1; _AABBCollision = false; _HitPoints = 1; _Width = 0.5f * 0.5f; _Height = (0.5f * 0.5f) * Director._Instance._Aspect; _FrameAdvanceOnHit = false; AddToDelegates(); break; case eAIType.AITYPE_POWERUP: _Sprite = Sprite.Spawn(1); if(_PowerupType == 0) { _Sprite.AddFrame("FasterShots.png"); } else if(_PowerupType == 1) { _Sprite.AddFrame("TriShot.png"); } else if(_PowerupType == 2) { _Sprite.AddFrame("Magnet.png"); } else if(_PowerupType == 3) { _Sprite.AddFrame("Shield.png"); } _Sprite._Width = 1.5f; _Sprite._Height = 1.5f; _Sprite._Animate = false; _Sprite._Y = 0.15f; _Radius = 0.5f; _Speed = 8.0f; _Value = 1; _AABBCollision = false; _HitPoints = 1; _Width = 0.5f * 0.5f; _Height = (0.5f * 0.5f) * Director._Instance._Aspect; _FrameAdvanceOnHit = false; AddToDelegates(); break; case eAIType.AITYPE_DRONE: _Sprite = Sprite.Spawn(1); _Sprite.AddFrame("Enemy1F1.png"); _Sprite.AddFrame("Enemy1F2.png"); _Sprite.AddFrame("Enemy1F3.png"); _Sprite.AddFrame("Enemy1F4.png"); _Sprite.AddFrame("Enemy1F3.png"); _Sprite.AddFrame("Enemy1F2.png"); _Sprite._Width = 1.2f; _Sprite._Height = 1.2f; _Sprite._Animate = true; _Sprite._Y = 0.1f; _Radius = 0.5f; _Speed = 8.0f + Random.Range(0.0f,3.0f); _Value = 1; _AABBCollision = false; _HitPoints = 300; _Width = 0.5f * 0.5f; _Height = (0.5f * 0.5f) * Director._Instance._Aspect; _FrameAdvanceOnHit = false; _TimeToFire = Random.Range(2.0f,3.0f); AddToDelegates(); break; case eAIType.AITYPE_BOSS1: _Sprite = Sprite.Spawn(1); _Sprite.AddFrame("Enemy1F1.png"); _Sprite.AddFrame("Enemy1F2.png"); _Sprite.AddFrame("Enemy1F3.png"); _Sprite.AddFrame("Enemy1F4.png"); _Sprite.AddFrame("Enemy1F3.png"); _Sprite.AddFrame("Enemy1F2.png"); _Sprite._Width = 1.2f; _Sprite._Height = 1.2f; _Sprite._Animate = true; _Sprite._Y = 0.1f; _Radius = 0.5f; _Speed = 8.0f + Random.Range(0.0f,3.0f); _Value = 1; _AABBCollision = false; _HitPoints = 6; _Width = 0.5f * 0.5f; _Height = (0.5f * 0.5f) * Director._Instance._Aspect; _FrameAdvanceOnHit = false; _TimeToFire = Random.Range(2.0f,3.0f); AddToDelegates(); ++Director._Instance._SequencerSemaphore; // Create drones for the boss _Drones = new List<AI>(); for(int i = 0; i < 8; ++i) { AI pAI = Spawn(eAIType.AITYPE_DRONE,0.0f,0.0f); _Drones.Add(pAI); } AI pDrone = _Drones[0]; pDrone._DroneRadius = 9.0f; pDrone._DroneAngle = 0.0f; pDrone._DroneSpinSpeed = 3.0f; pDrone.UpdateDronePosition(_X,_Z); pDrone = _Drones[1]; pDrone._DroneRadius = 7.0f; pDrone._DroneAngle = 0.0f; pDrone._DroneSpinSpeed = 3.0f; pDrone.UpdateDronePosition(_X,_Z); pDrone = _Drones[2]; pDrone._DroneRadius = 5.0f; pDrone._DroneAngle = 0.0f; pDrone._DroneSpinSpeed = 3.0f; pDrone.UpdateDronePosition(_X,_Z); pDrone = _Drones[3]; pDrone._DroneRadius = 3.0f; pDrone._DroneAngle = 0.0f; pDrone._DroneSpinSpeed = 3.0f; pDrone.UpdateDronePosition(_X,_Z); pDrone = _Drones[4]; pDrone._DroneRadius = 3.0f; pDrone._DroneAngle = 3.14f; pDrone._DroneSpinSpeed = 3.0f; pDrone.UpdateDronePosition(_X,_Z); pDrone = _Drones[5]; pDrone._DroneRadius = 5.0f; pDrone._DroneAngle = 3.14f; pDrone._DroneSpinSpeed = 3.0f; pDrone.UpdateDronePosition(_X,_Z); pDrone = _Drones[6]; pDrone._DroneRadius = 7.0f; pDrone._DroneAngle = 3.14f; pDrone._DroneSpinSpeed = 3.0f; pDrone.UpdateDronePosition(_X,_Z); pDrone = _Drones[7]; pDrone._DroneRadius = 9.0f; pDrone._DroneAngle = 3.14f; pDrone._DroneSpinSpeed = 3.0f; pDrone.UpdateDronePosition(_X,_Z); break; case eAIType.AITYPE_GOLD_COIN: _Sprite = Sprite.Spawn(1); _Sprite.AddFrame("GoldF1.png"); _Sprite.AddFrame("GoldF2.png"); _Sprite.AddFrame("GoldF3.png"); _Sprite.AddFrame("GoldF4.png"); _Sprite.AddFrame("GoldF5.png"); _Sprite.AddFrame("GoldF6.png"); _Sprite.AddFrame("GoldF7.png"); _Sprite.AddFrame("GoldF8.png"); _Sprite._Width = 1.0f; _Sprite._Height = 1.0f; _Sprite._Animate = true; _Sprite._Y = 0.1f; _Radius = 0.5f; _Speed = 10.0f; _Value = 1; _AABBCollision = false; _HitPoints = 1; _Width = 0.5f * 0.5f; _Height = (0.5f * 0.5f) * Director._Instance._Aspect; _FrameAdvanceOnHit = false; _TimeToFire = Random.Range(2.0f,3.0f); AddToDelegates(); break; case eAIType.AITYPE_SILVER_COIN: _Sprite = Sprite.Spawn(1); _Sprite.AddFrame("SilverF1.png"); _Sprite.AddFrame("SilverF2.png"); _Sprite.AddFrame("SilverF3.png"); _Sprite.AddFrame("SilverF4.png"); _Sprite.AddFrame("SilverF5.png"); _Sprite.AddFrame("SilverF6.png"); _Sprite.AddFrame("SilverF7.png"); _Sprite.AddFrame("SilverF8.png"); _Sprite._Width = 1.0f; _Sprite._Height = 1.0f; _Sprite._Animate = true; _Sprite._Y = 0.1f; _Radius = 0.5f; _Speed = 10.0f; _Value = 1; _AABBCollision = false; _HitPoints = 1; _Width = 0.5f * 0.5f; _Height = (0.5f * 0.5f) * Director._Instance._Aspect; _FrameAdvanceOnHit = false; _TimeToFire = Random.Range(2.0f,3.0f); AddToDelegates(); break; case eAIType.AITYPE_BRONZE_COIN: _Sprite = Sprite.Spawn(1); _Sprite.AddFrame("BronzeF1.png"); _Sprite.AddFrame("BronzeF2.png"); _Sprite.AddFrame("BronzeF3.png"); _Sprite.AddFrame("BronzeF4.png"); _Sprite.AddFrame("BronzeF5.png"); _Sprite.AddFrame("BronzeF6.png"); _Sprite.AddFrame("BronzeF7.png"); _Sprite.AddFrame("BronzeF8.png"); _Sprite._Width = 1.0f; _Sprite._Height = 1.0f; _Sprite._Animate = true; _Sprite._Y = 0.1f; _Radius = 0.5f; _Speed = 10.0f; _Value = 1; _AABBCollision = false; _HitPoints = 1; _Width = 0.5f * 0.5f; _Height = (0.5f * 0.5f) * Director._Instance._Aspect; _FrameAdvanceOnHit = false; _TimeToFire = Random.Range(2.0f,3.0f); AddToDelegates(); break; case eAIType.AITYPE_FEEDBACK: _Sprite = Sprite.Spawn(1); if(_FeedbackType == 0) { _Sprite.AddFrame("PlusOne.png"); } else if(_FeedbackType == 1) { _Sprite.AddFrame("PlusFive.png"); } else if(_FeedbackType == 2) { _Sprite.AddFrame("PlusTen.png"); } else if(_FeedbackType == 3) { _Sprite.AddFrame("MinusTen.png"); } else if(_FeedbackType == 4) { _Sprite.AddFrame("MinusTwenty.png"); } _Sprite._Width = 3.0f; _Sprite._Height = 3.0f; _Sprite._Animate = false; _Sprite._Y = 0.1f; _Speed = 8.0f; _Width = 0.5f * 0.5f; _Height = (0.5f * 0.5f) * Director._Instance._Aspect; break; } _Sprite._AI = this; _Sprite._Bullet = null; _Kill = false; }
void Update() { if(_Sprite == null) { _Sprite = Sprite.Spawn(1); _Sprite._Width = _Width; _Sprite._Height = _Height; _Sprite._Animate = false; _Sprite.AddFrame(_UpImage); _Sprite.AddFrame(_DownImage); _Sprite.AddFrame(_OverImage); _Sprite.AddFrame(_LockUp); _Sprite.AddFrame(_LockDown); _Sprite._X = 10000.0f; _Sprite._Z = 10000.0f; _Sprite._Y = _Depth; if(_Locked) { _Sprite.SetFrame(2); } } switch(_Ease) { case eButtonEase.BUTTON_EASE_IN: _Time += _Speed * Time.deltaTime; if(_Time > 1.0f) { _Time = 1.0f; _C = _B; _Ease = eButtonEase.BUTTON_EASE_NONE; if(_Shake) { Director._Instance.ShakeCamera(_ShakeIntensity,_ShakeTime); } } float fRealTime = 1.0f - _Time; _C = _B + (_A - _B) * (fRealTime * fRealTime); break; case eButtonEase.BUTTON_EASE_OUT: _Time -= _Speed * Time.deltaTime; if(_Time < 0.0f) { _Time = 0.0f; _C = _A; _Ease = eButtonEase.BUTTON_EASE_KILL; } _C = _A + (_B - _A) * (_Time * _Time); break; case eButtonEase.BUTTON_EASE_KILL: this.active = false; _Sprite._Alive = false; break; } this.transform.position = _C; _Sprite._X = _C.x; _Sprite._Z = _C.z; if(Input.GetMouseButtonDown(0)) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if(Physics.Raycast(ray, out hit, 100)) { if(hit.transform.gameObject.name == this.name) { _IsButtonDown = true; if(_Locked) { _Sprite.SetFrame(3); } else { _Sprite.SetFrame(1); } } } } if(Input.GetMouseButtonUp(0)) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if(Physics.Raycast(ray, out hit, 100)) { if(hit.transform.gameObject.name == this.name) { if(_IsButtonDown && !_Locked) { Director._Instance.FireEvent(_Event); Director._Instance.PlaySample("PRESS",1.0f); } } } _IsButtonDown = false; if(_Locked) { _Sprite.SetFrame(2); } else { _Sprite.SetFrame(0); } } if(!_IsButtonDown) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if(Physics.Raycast(ray, out hit, 100)) { if(hit.transform.gameObject.name == this.name) { if(!_IsOver) { Director._Instance.PlaySample("CLICK",1.0f); } _IsOver = true; _Sprite.SetFrame(2); } else { _IsOver = false; _Sprite.SetFrame(0); } } } else { _IsOver = false; } }