public void add(GameEntity instance) { CollisionEntry entry = new CollisionEntry(); entry.owner = instance; if(instance is Player){ entry.type = CollisionEntityType.Player; } else if (instance is Cell){ entry.type = CollisionEntityType.Cell; } else if (instance is WinSection || instance is TrashCan){ entry.type = CollisionEntityType.Sensor; } entry.center = instance.GetCenter; entry.radius = instance.GetRadius; collisionEntries.Add(entry); }
public override void CollideTo(GameEntity instance) { collisionCells = new List<Cell>(); if(instance is Cell){ Cell c = (Cell)instance; if(c.grabbed){ collisionCells.Add(c); Vector2 cellCenter = c.GetCenter(); for(var i = 0; i < collisionCells.Count; i++){ //s.DestroyCell(collisionCells[i]); Support.SoundSystem.Instance.Play("trash.wav"); collisionCells[i].Visible = false; collisionCells[i].destroyed = true; Console.WriteLine("TRASH!!!"); } } } }
public override void CollideTo(GameEntity instance) { collisionCells = new List<Cell>(); if(instance is Cell){ Cell c = (Cell)instance; collisionCells.Add(c); Vector2 cellCenter = c.GetCenter(); Vector2 trashCenter = this.GetCenter(); displacement = trashCenter - cellCenter; for(var i = 0; i < collisionCells.Count; i++){ if(collisionCells[i].grabbed){ if(this.checkCellWin(collisionCells[i])){ Console.WriteLine("WINNER"); Scheduler.Instance.Unschedule(GameScene.Instance,SpawnManager.Instance.FrameUpdate); Scheduler.Instance.Unschedule(GameScene.Instance,GameScene.Instance.player.Tick); Scheduler.Instance.Unschedule(GameScene.Instance,GameScene.Instance.Tick); GameOverScene.Instance = new GameOverScene(true); Director.Instance.ReplaceScene(GameOverScene.Instance); Scheduler.Instance.Schedule(GameOverScene.Instance,GameOverScene.Instance.Tick, 0.0f, false); } else { Console.WriteLine("WRONG ONE"); } } } } }
public override void CollideFrom(GameEntity instance) { }
public override void CollideFrom(GameEntity instance) { if(instance is Player && grabbed){ } else if(instance is Cell && !grabbed){ instance.sprite.Position += (instance.sprite.Position-sprite.Position)*.1f; } }
public virtual void CollideTo(GameEntity instance) { throw new NotImplementedException(); }
public void remove(GameEntity instance) { CollisionEntry e = collisionEntries.Find(x => x.owner == instance); collisionEntries.Remove(e); }
public override void CollideTo(GameEntity instance) { Boolean canGrab = (instance == grabbing || grabbing == null); if(Input2.GamePad0.Circle.Down && canGrab){ if(instance is Cell){ Cell c = (Cell)instance; //c.sprite.Position = new Vector2(c.sprite.Position.X+10, c.sprite.Position.Y+10); c.grabbed = true; grabbing = c; } } else { if(!(instance is Cell)) return; Cell c = (Cell)instance; //instance.sprite.Position += (instance.sprite.Position-sprite.Position)*.2f; Vector2 cellCenter = c.GetCenter(); Vector2 playerCenter = this.GetCenter(); Vector2 displacement = cellCenter - playerCenter; if(System.Math.Abs(displacement.X) > System.Math.Abs(displacement.Y)){ if(playerCenter.X < cellCenter.X){ sprite.Position = new Vector2(sprite.Position.X - runSpeed,sprite.Position.Y); } else if(playerCenter.X > cellCenter.X){ sprite.Position = new Vector2(sprite.Position.X + runSpeed,sprite.Position.Y); } } else { if(playerCenter.Y < cellCenter.Y){ sprite.Position = new Vector2(sprite.Position.X,sprite.Position.Y - runSpeed); } else if(playerCenter.Y > cellCenter.Y){ sprite.Position = new Vector2(sprite.Position.X,sprite.Position.Y + runSpeed); } } } }