public void LoadContent(ContentManager content) { sango = new Sango(new StateManager(content, inputHandler)); Sango aux = (Sango)sango; exit = new Actors.Objects.Object(1, new Vector2(1860, 512), content.Load <Texture2D>("Exit"), 0); aux.LoadContent(content); map.SetHearts(content); levelSnd = content.Load <SoundEffect>("No Victim"); actCollider.LoadContent(content); Actor bat = new Youkai(new StateManager(content, inputHandler)); Actor oni = new Youkai(new StateManager(content, inputHandler)); Actor oni2 = new Youkai(new StateManager(content, inputHandler)); Actor oni3 = new Youkai(new StateManager(content, inputHandler)); Actor Gyu = new Youkai(new StateManager(content, inputHandler)); Youkai auxBat = (Youkai)bat; Youkai auxOni = (Youkai)oni; Youkai auxOni2 = (Youkai)oni2; Youkai auxOni3 = (Youkai)oni3; Youkai auxGyu = (Youkai)Gyu; auxBat.setState(new BatState(auxBat, auxBat.state)); auxOni.setState(new OniState(auxOni, auxOni.state, new Vector2(1120, 480))); auxOni2.setState(new OniState(auxOni2, auxOni2.state, new Vector2(704, 320))); auxOni3.setState(new OniState(auxOni3, auxOni3.state, new Vector2(1728, 288))); auxGyu.setState(new GyuState(auxGyu, auxGyu.state, new Vector2(1550, 501))); youkais.Add(auxBat); youkais.Add(auxOni); youkais.Add(auxOni2); youkais.Add(auxOni3); youkais.Add(auxGyu); }
public void Gravity(IList <Rectangle> collisionRectangles, Actor actors) { Point origin = actors.origin.ToPoint() + new Point(0, 23); Sango sango = (Sango)actors; if (!sango.grounded) { bool yCollide = false; float moveX = 0.0f; foreach (Rectangle rect in collisionRectangles) { if (rect.Contains(origin)) { yCollide = true; sango.grounded = true; //Console.WriteLine("Y : "+rect.ToString() + " Sango: " + sango.xCollision.ToString()); } if (sango.fullCollision.Intersects(rect)) { if (sango.fullCollision.X < rect.X) { moveX = -1.0f; } else if (sango.fullCollision.X > rect.X) { moveX = 1.0f; } if (sango.fullCollision.Y + sango.fullCollision.Height > rect.Y) { sango.nextMoveY = -1.0f; } } } if (!yCollide) { actors.position += new Vector2(moveX, 2); } } else { bool yCollide = false; foreach (Rectangle rect in collisionRectangles) { if (rect.Contains(origin)) { yCollide = true; //Console.WriteLine("Y : "+rect.ToString() + " Sango: " + sango.xCollision.ToString()); } } if (!yCollide) { sango.grounded = false; } } }
private void jumpCollision(IList <Rectangle> collisionRectangles, Actor actors) { Sango sangoJump = (Sango)actors; bool xCollide = false; bool yCollide = false; foreach (Rectangle rect in collisionRectangles) { if (actors.xCollision.Intersects(rect)) { xCollide = true; //Console.WriteLine("X : " + rect.ToString() + " Sango: " + sango.xCollision.ToString()); } if (actors.yCollision.Intersects(rect)) { yCollide = true; //Console.WriteLine("Y : "+rect.ToString() + " Sango: " + sango.xCollision.ToString()); } } if (!xCollide && !yCollide) { actors.position += sangoJump.jumpVector; } else if (!xCollide && yCollide) { actors.position = new Vector2(actors.position.X + sangoJump.jumpVector.X, actors.position.Y); } else if (xCollide && !yCollide) { actors.position = new Vector2(actors.position.X, actors.position.Y + sangoJump.jumpVector.Y); } }
static void Main(string[] args) { Console.WriteLine("STRATEGY DESIGN PATTERN\n"); Console.WriteLine("--------"); //moves IJumpBehaviour shortJump = new ShortJump(); IJumpBehaviour longJump = new LongJump(); IKickBehaviour tornadoKick = new TornadoKick(); //create fighter Fighter sango = new Sango(tornadoKick, shortJump); sango.Display(); //fight sango.Punch(); sango.Kick(); sango.Jump(); //change behaviour dynamically(runtime) sango.SetJumpBehaviour(longJump); sango.Jump(); }
private void checkHit(IList <Rectangle> spikes, Actor actors) { foreach (Rectangle spike in spikes) { if (actors.fullCollision.Intersects(spike)) { Sango aux = (Sango)actors; aux.lives -= 1; aux.position = new Vector2(36, 534); } } }
public void Collide(IList <Rectangle> collisionRectangles, IList <Rectangle> spikes, Actor actors) { Sango sangoAux = (Sango)actors; checkHit(spikes, actors); if (!sangoAux.hasJumped) { regularCollision(collisionRectangles, actors); } else { jumpCollision(collisionRectangles, actors); } }
public void Update(IList <Heart> hearts, Actor sango) { for (int i = 0; i < hearts.Count; i++) { if (hearts[i].isAvailable) { if (hearts[i].Update(sango.fullCollision)) { Sango aux = (Sango)sango; aux.lives += 1; } } } }
public void collide(Actor sango, IList <Actor> youkais) { Sango aux = (Sango)sango; for (int i = 0; i < youkais.Count; i++) { if (sango.fullCollision.Intersects(youkais[i].fullCollision)) { aux.lives -= 1; aux.position = new Vector2(aux.position.X - 16, aux.position.Y); } if (aux.boomerang != null) { if (aux.boomerang.fullCollision.Intersects(youkais[i].fullCollision)) { hitSndInstance.Play(); youkais.Remove(youkais[i]); } } } }