public static void HandleCollision(IUsableItem item, IBlock block, Enumerations.CollisionSide collision) { Contract.Requires(block != null); Contract.Requires(item != null); block.IsDestructable = true; foreach (IDoorTrigger doorTrigger in Room.CurrentRoomDoorTriggers) { if (doorTrigger.GameObjectType == Enumerations.GameObjectType.DoorTriggerUp) { doorTrigger.IsDestructable = true; } } IBlock newDoor = new BlockUpBombedOpening(); newDoor.Position = block.Position; IDoorTrigger newTrigger = new BlockUpOverBombed(); newTrigger.Position = new Vector2(Constant.UpOverBombedPositionNative.X * Game1.Instance.graphics.PreferredBackBufferWidth / Constant.OriginalNesWidth, (Constant.UpOverBombedPositionNative.Y + HUDConstants.HUDHeight) * Game1.Instance.graphics.PreferredBackBufferHeight / Constant.OriginalNesHeight); Room.CurrentRoomBlocks.Add(newDoor); Room.CurrentRoomDoorTriggers.Add(newTrigger); SoundManager.Instance.PlayFoundSecret(); int oppositeRoom = GameObjects.Instance.LevelListPosition - Constant.DungeonGridWidth; Enumerations.Direction doorDirection = Enumerations.Direction.Down; Enumerations.DoorType doorType = Enumerations.DoorType.Bombed; ToolsXML toolsXml = new ToolsXML(); toolsXml.ReplaceOppositeDoorNodeXML(oppositeRoom, doorType, doorDirection); }
public static void HandleCollision(INPC character, IUsableItem item, Enumerations.CollisionSide collisionSide) { character.TakeDamage(item.DamageAmount); item.IsDestructable = true; UsableWoodenSword.projectile = null; UsableWoodenSword.IsMoving = false; // Room.CurrentRoomSpriteEffects.Add(new EffectSwordBeamCollision(item.Position)); SoundManager.Instance.PlayEnemyHit(); switch (collisionSide) { case Enumerations.CollisionSide.Right: RightCollision(character); break; case Enumerations.CollisionSide.Left: LeftCollision(character); break; case Enumerations.CollisionSide.Top: UpCollision(character); break; case Enumerations.CollisionSide.Bottom: DownCollision(character); break; default: break; } }
public static void HandleCollision(INPC character, IUsableItem item, Enumerations.CollisionSide collisionSide) { character.TakeDamage(item.DamageAmount); item.IsDestructable = true; SoundManager.Instance.PlayEnemyHit(); switch (collisionSide) { case Enumerations.CollisionSide.Right: RightCollision(character); break; case Enumerations.CollisionSide.Left: LeftCollision(character); break; case Enumerations.CollisionSide.Top: UpCollision(character); break; case Enumerations.CollisionSide.Bottom: DownCollision(character); break; default: break; } }
private void ThrowBoomerang() { if (Constant.RNG.Next(0, 1000) < 5) { Velocity = Vector2.Zero; boomerang = new UsableBoomerang(this); boomerang.GameObjectType = Enumerations.GameObjectType.UsableItemVsPlayer; switch (facingDirection) { case Enumerations.Direction.Up: boomerang.UseUp(); break; case Enumerations.Direction.Down: boomerang.UseDown(); break; case Enumerations.Direction.Left: boomerang.UseLeft(); break; case Enumerations.Direction.Right: boomerang.UseRight(); break; default: break; } } }
public static void HandleCollision(IUsableItem projectile, IBlock block, Enumerations.CollisionSide collision) { Contract.Requires(block != null); Contract.Requires(projectile != null); if (block.IsMovable) { block.Knockback = true; block.CollisionLocation = block.Position; switch (collision) { case Enumerations.CollisionSide.Right: RightCollision(block); break; case Enumerations.CollisionSide.Left: LeftCollision(block); break; case Enumerations.CollisionSide.Top: UpCollision(block); break; case Enumerations.CollisionSide.Bottom: DownCollision(block); break; default: break; } } block.Knockback = false; }
public static void HandleCollision(IUsableItem item, IBlock block, Enumerations.CollisionSide collision) { Contract.Requires(block != null); Contract.Requires(item != null); item.IsDestructable = true; UsableWoodenSword.projectile = null; UsableWoodenSword.IsMoving = false; Room.CurrentRoomSpriteEffects.Add(new EffectSwordBeamCollision(item.Position)); }
public void Execute() { IUsableItem usableItem = Item as IUsableItem; usableItem.Use(); if (Item.CurrentStacksAmount <= 0) { inventory.RemoveItem(Item); } }
private static void DownCollision(ILink link, IUsableItem projectile, Enumerations.CollisionSide collisionSide) { if (link.FacingDirection.Equals(collisionSide)) { projectile.Velocity = Vector2.UnitY * ItemConstants.ItemKnockbackSpeed; } else { link.Velocity = -Vector2.UnitY * Constant.LinkKnockbackSpeed; } }
public static void HandleCollision(ILink link, IUsableItem projectile, Enumerations.CollisionSide collisionSide) { Contract.Requires(link != null); Contract.Requires(projectile != null); //Contract.Requires(collision != null); projectile.IsDestructable = true; if (link.FacingDirection.Equals(collisionSide)) { projectile.Knockback = true; projectile.CollisionLocation = projectile.Position; } else { link.Knockback = true; link.CollisionLocation = link.Position; } switch (collisionSide) { case Enumerations.CollisionSide.Right: RightCollision(link, projectile, collisionSide); break; case Enumerations.CollisionSide.Left: LeftCollision(link, projectile, collisionSide); break; case Enumerations.CollisionSide.Top: UpCollision(link, projectile, collisionSide); break; case Enumerations.CollisionSide.Bottom: DownCollision(link, projectile, collisionSide); break; default: break; } }
public UseItemPlayerAction(IUsableItem item) { this.item = item; }
public UsedItemMessage(IUsableItem item) { Item = item; }
public void ReverseTime() { if (timeStates.Count == 0) { return; } TimeState state = timeStates[timeStates.Count - 1]; timeStates.RemoveAt(timeStates.Count - 1); Dictionary <Type, int> typeCounts = new Dictionary <Type, int>(); foreach (KeyValuePair <Type, Vector2> kvp in state.Positions) { if (typeof(IPlayer).IsAssignableFrom(kvp.Key)) { game.player.Position = kvp.Value; game.player.State = (IPlayerState)Activator.CreateInstance(state.playerState, new object[] { game.player }); } if (typeof(IEnemy).IsAssignableFrom(kvp.Key)) { int typeCount = typeCounts.ContainsKey(kvp.Key) ? typeCounts[kvp.Key] : 0; if (typeCount != 0) { typeCounts[kvp.Key]++; } else { typeCounts.Add(kvp.Key, 1); } List <IEnemy> enemies = game.currentRoom.Enemies.FindAll((IEnemy e) => e.GetType() == kvp.Key).ToList(); IEnemy enemy = typeCount >= enemies.Count ? null : enemies[typeCount]; if (enemy != null) { enemy.Position = kvp.Value; } } if (typeof(INPC).IsAssignableFrom(kvp.Key)) { int typeCount = typeCounts.ContainsKey(kvp.Key) ? typeCounts[kvp.Key] : 0; if (typeCount != 0) { typeCounts[kvp.Key]++; } else { typeCounts.Add(kvp.Key, 1); } List <INPC> npcs = game.currentRoom.NPCs.FindAll((INPC n) => n.GetType() == kvp.Key).ToList(); INPC npc = typeCount >= npcs.Count ? null : npcs[typeCount]; if (npc != null) { npc.Position = kvp.Value; } } if (typeof(IItem).IsAssignableFrom(kvp.Key)) { int typeCount = typeCounts.ContainsKey(kvp.Key) ? typeCounts[kvp.Key] : 0; if (typeCount != 0) { typeCounts[kvp.Key]++; } else { typeCounts.Add(kvp.Key, 1); } List <IItem> items = game.currentRoom.Items.FindAll((IItem i) => i.GetType() == kvp.Key).ToList(); IItem item = typeCount >= items.Count ? null : items[typeCount]; if (item != null) { item.Position = kvp.Value; } } if (typeof(IItem).IsAssignableFrom(kvp.Key)) { int typeCount = typeCounts.ContainsKey(kvp.Key) ? typeCounts[kvp.Key] : 0; if (typeCount != 0) { typeCounts[kvp.Key]++; } else { typeCounts.Add(kvp.Key, 1); } List <IItem> items = game.currentRoom.HiddenItems.FindAll((IItem i) => i.GetType() == kvp.Key).ToList(); IItem item = typeCount >= items.Count ? null : items[typeCount]; if (item != null) { item.Position = kvp.Value; } } if (typeof(IUsableItem).IsAssignableFrom(kvp.Key)) { int typeCount = typeCounts.ContainsKey(kvp.Key) ? typeCounts[kvp.Key] : 0; if (typeCount != 0) { typeCounts[kvp.Key]++; } else { typeCounts.Add(kvp.Key, 1); } List <IUsableItem> items = game.player.ActiveItems.FindAll((IUsableItem i) => i.GetType() == kvp.Key).ToList(); IUsableItem item = typeCount >= items.Count ? null : items[typeCount]; if (item != null) { item.Position = kvp.Value; } } } }
public static void HandleCollision(IUsableItem item, IBlock block, Enumerations.CollisionSide collision) { Contract.Requires(block != null); Contract.Requires(item != null); item.IsDestructable = true; }
public UsableItemCollisionHandler(IPlayer player, IUsableItem item, float colliderWidth, float colliderHeight, float offsetX, float offsetY) { this.player = player; this.item = item; Collider = new BoxCollider(item, colliderWidth, colliderHeight, offsetX, offsetY); }