public static void CutIn(BHGame mGame, BHStage mStage, Texture mTexture, bool mText = false, string mBackgroundText = "spell attack", Vector2i mVelocity = default(Vector2i), Vector2i mOffset = default(Vector2i), int mLength = 100) { var cutInTimeline = new Timeline(); var texts = new List<Text>(); var drawEvents = new List<Action>(); if (mText) { for (int iX = -2; iX < 3; iX++) { for (int i = 0; i < 35; i++) { var temp = new Text(mBackgroundText, Font.DefaultFont) { Position = new Vector2f(300 + (iX*84), (i*35) - 200), Color = Color.White, CharacterSize = 15, Rotation = 25 }; texts.Add(temp); Action drawEvent = () => mGame.GameWindow.RenderWindow.Draw(temp); drawEvents.Add(drawEvent); mGame.AddDrawAction(drawEvent); } } } var cutInSprite = new Sprite(mTexture) { Color = new Color(255, 255, 255, 0) }; var cutInEntity = new BHEntity(mGame) { DrawOrder = 100000, Sprite = cutInSprite, Position = mGame.Center + mOffset }; BHPresetTimelines.Fade(cutInEntity, 0, true, 16); BHPresetTimelines.Fade(cutInEntity, mLength, false, 16); cutInTimeline.Action(() => { foreach (var text in texts) text.Position -= new Vector2f(3, 1); }); cutInTimeline.Action(() => cutInEntity.Position += mVelocity); cutInTimeline.Wait(); cutInTimeline.Goto(mTimes: 200); cutInTimeline.Action(() => { foreach (var drawEvent in drawEvents) mGame.RemoveDrawAction(drawEvent); cutInEntity.Destroy(); }); mStage.TimelinesUpdate.Add(cutInTimeline); }
public static BHEntity Enemy(BHGame mGame, int mRadius, int mHealth) { var deathTimeline = new Timeline(); var result = new BHEntity(mGame, "enemy", "character"); result.CollisionShape = new BHCSCircle(result, mRadius*mRadius); result.Parameters["health"] = mHealth; deathTimeline.Action(() => { if ((int) result.Parameters["health"] <= 0) { result.Destroy(); Assets.GetSound("se_enep00").Play(); } }); deathTimeline.Wait(); deathTimeline.Goto(); result.TimelinesUpdate.Add(deathTimeline); return result; }
public static BHEntity PlayerBullet(BHGame mGame, Vector2i mPosition = default(Vector2i), float mAngle = 0, int mSpeed = 0) { var result = new BHEntity(mGame, "playerbullet") {Position = mPosition, Velocity = BHUtils.CalculateVelocity(mAngle, mSpeed)}; result.CollisionShape = new BHCSPoint(result); result.CollisionAgainstGroups.Add("enemy"); result.OnCollision += (entity, group) => { if (group == "enemy") { entity.Sprite.Color = new Color((byte) Utils.Random.Next(0, 255), (byte) Utils.Random.Next(0, 255), (byte) Utils.Random.Next(0, 255)); entity.Parameters["health"] = (int) entity.Parameters["health"] - 1; result.Destroy(); Assets.GetSound("se_damage00").Play(); } }; result.OnOutOfBounds += BHPresetOutOfBounds.Destroy; return result; }
public static void Destroy(BHEntity mEntity, Vector2i mDirection, Rectangle mBounds, int mBoundsOffset) { mEntity.Destroy(); }