public static Dictionary <int, CAnimationObject> BuildObjectInMap(CMap _map) { Dictionary <int, CAnimationObject> listObject = new Dictionary <int, CAnimationObject>(); foreach (KeyValuePair <int, CGameObject> pair in _map.ListObjects) { CAnimationObject _object = null; Vector2 _pos = new Vector2(pair.Value.X, pair.Value.Y); IDObject _type = (IDObject)pair.Value.Type; _object = Build.MakeObject(_type, _pos); if (_object != null) { listObject.Add(pair.Key, _object); } } // gán coin vào break_question foreach (KeyValuePair <int, CAnimationObject> pair in listObject) { if (pair.Value.IDObject == IDObject.MISC_QUESTION_BRICK) { foreach (KeyValuePair <int, CAnimationObject> p in listObject) { if (pair.Value.Position == p.Value.Position && (p.Value.IDObject == IDObject.ITEM_COIN_ACTIVATED || p.Value.IDObject == IDObject.ITEM_FIRE_FLOWER || p.Value.IDObject == IDObject.ITEM_SUPER_MUSHROOM || p.Value.IDObject == IDObject.ITEM_1UP_MUSHROOM || p.Value.IDObject == IDObject.ITEM_STARMAN || p.Value.IDObject == IDObject.ITEM_GROW_UP)) { pair.Value.SetItem(p.Value); } } } } return(listObject); }
public override void UpdateCollision(CAnimationObject _Object) { if (CheckCollision(_Object) != DirectCollision.NONE && m_Status != IDStatus.UNACTIVATE) { switch (_Object.IDObject) { case IDObject.MISC_IRON_BRICK: case IDObject.MISC_BASE_BRICK: case IDObject.MISC_HARD_BRICK: if (CheckCollision(_Object) == DirectCollision.TOP) { m_Velocity.Y = 0.0f; m_Position.Y = _Object.Position.Y - Sprite.FrameHeight; } else if (CheckCollision(_Object) == DirectCollision.RIGHT) { m_Dir = IDDir.RIGHT; } else if (CheckCollision(_Object) == DirectCollision.LEFT) { m_Dir = IDDir.LEFT; } else if (CheckCollision(_Object) == DirectCollision.BOTTOM) { m_Velocity.Y = -m_Velocity.Y; } break; default: break; } } base.UpdateCollision(_Object); }
public QuestionBrick_1(Vector2 _Position, IDObject _IDItem) : base(_Position) { m_IDObject = IDObject.MISC_QUESTION_BRICK; m_Sprite = new CSprite(CResourceManager.GetInstance().GetResource(IDResource.MISC_QUESTION_BRICK)); m_Status = IDStatus.ALIVE; Sprite.Depth = GlobalValue.MISC_SPRITE_DEPTH; switch (_IDItem) { case IDObject.ITEM_COIN_ACTIVATED: m_Item = new ItemCoin(_Position, _IDItem); break; case IDObject.ITEM_GROW_UP: m_Item = new ItemGrowUp(_Position); //m_Item = new CAnimationObject(_Position); break; case IDObject.ITEM_1UP_MUSHROOM: m_Item = new Item1UpMushroom(_Position); //m_Item = new GreenMushroom(_Position); break; case IDObject.ITEM_STARMAN: m_Item = new ItemStarman(_Position); break; default: break; } }
public bool AddObject(CAnimationObject _Object) { if (m_Rectangle.Contains(_Object.Rectangle)) { m_ListObject.Add(_Object); //return true; if (m_ListObject.Count > 1) { if (m_ListNode.Count < 4) { m_ListNode.Add(new NodeQuadtree(new Vector2(m_Rectangle.X, m_Rectangle.Y), m_Rectangle.Width / 2, m_Rectangle.Height / 2)); m_ListNode.Add(new NodeQuadtree(new Vector2(m_Rectangle.X + m_Rectangle.Width / 2, m_Rectangle.Y), m_Rectangle.Width / 2, m_Rectangle.Height / 2)); m_ListNode.Add(new NodeQuadtree(new Vector2(m_Rectangle.X, m_Rectangle.Y + m_Rectangle.Height / 2), m_Rectangle.Width / 2, m_Rectangle.Height / 2)); m_ListNode.Add(new NodeQuadtree(new Vector2(m_Rectangle.X + m_Rectangle.Width / 2, m_Rectangle.Y + m_Rectangle.Height / 2), m_Rectangle.Width / 2, m_Rectangle.Height / 2)); } for (int i = 0; i < 4; ++i) { if (m_ListNode[i].AddObject(_Object)) { m_ListObject.Remove(_Object); return(true); } } } return(true); } return(false); }
public bool AddObject(CAnimationObject _Object) { if (m_Rectangle.Contains(_Object.Rectangle)) { m_ListObject.Add(_Object); //return true; if (m_ListObject.Count > 1) { if (m_ListNode.Count < 4) { m_ListNode.Add(new NodeQuadtree(new Vector2(m_Rectangle.X, m_Rectangle.Y), m_Rectangle.Width / 2, m_Rectangle.Height / 2)); m_ListNode.Add(new NodeQuadtree(new Vector2(m_Rectangle.X + m_Rectangle.Width / 2, m_Rectangle.Y), m_Rectangle.Width / 2, m_Rectangle.Height / 2)); m_ListNode.Add(new NodeQuadtree(new Vector2(m_Rectangle.X, m_Rectangle.Y + m_Rectangle.Height / 2), m_Rectangle.Width / 2, m_Rectangle.Height / 2)); m_ListNode.Add(new NodeQuadtree(new Vector2(m_Rectangle.X + m_Rectangle.Width / 2, m_Rectangle.Y + m_Rectangle.Height / 2), m_Rectangle.Width / 2, m_Rectangle.Height / 2)); } for (int i = 0; i < 4; ++i) { if (m_ListNode[i].AddObject(_Object)) { m_ListObject.Remove(_Object); return true; } } } return true; } return false; }
private void UpdateCollisionBullet(CAnimationObject _Object) { if (m_Bullet1 != null) { m_Bullet1.UpdateCollision(_Object); } if (m_Bullet2 != null) { m_Bullet2.UpdateCollision(_Object); } }
public void RemoveObject(CAnimationObject _Object) { m_ListObject.Remove(_Object); if (m_ListNode.Count == 4) { for (int i = 0; i < 4; ++i) { m_ListNode[i].RemoveObject(_Object); } } }
public override void UpdateCollision(CAnimationObject _Object) { if (CheckCollision(_Object) != DirectCollision.NONE) { if (_Object.IDObject == IDObject.MISC_HARD_BRICK) { Velocity = Vector2.Zero; Accel = Vector2.Zero; } } base.UpdateCollision(_Object); }
public override void UpdateCollision(CAnimationObject _Object) { //Console.WriteLine("aaaa"); if ((_Object.IDObject == IDObject.FIRE_MARIO || _Object.IDObject == IDObject.SMALL_MARIO || _Object.IDObject == IDObject.SUPER_MARIO) && Status == IDStatus.TELEPORT) { _Object.Position = Portal; _Object.Status = IDStatus.MARIO_JUMP; _Object.Accel = new Vector2(0, 0.00098f); MediaPlayer.Resume(); Status = IDStatus.NORMAL_GATE_PIPE; } base.UpdateCollision(_Object); }
public void RemoveObject(CAnimationObject _object, QNode _node) { if (_node.GetChildNode(1) == null) { _node.RemoveObject(_object); } else { RemoveObject(_object, _node.GetChildNode(1)); RemoveObject(_object, _node.GetChildNode(2)); RemoveObject(_object, _node.GetChildNode(3)); RemoveObject(_object, _node.GetChildNode(4)); } }
public override void UpdateCollision(CAnimationObject _Object) { if (_Object.IDObject == IDObject.FIRE_MARIO || _Object.IDObject == IDObject.SMALL_MARIO || _Object.IDObject == IDObject.SUPER_MARIO) { if (_Object.Position.X > Position.X + 35) { _Object.Status = IDStatus.MARIO_STOP; _Object.Sprite.Depth = 0.05f; _Object.Velocity = Vector2.Zero; _Object.Accel = Vector2.Zero; } } base.UpdateCollision(_Object); }
public override void UpdateCollision(CAnimationObject _Object) { if (CheckCollision(_Object) != DirectCollision.NONE) { switch (_Object.IDObject) { case IDObject.FIRE_MARIO: case IDObject.SMALL_MARIO: case IDObject.SUPER_MARIO: Status = IDStatus.DIE; break; default: break; } } base.UpdateCollision(_Object); }
public override void UpdateCollision(CAnimationObject _Object) { m_Flag.UpdateCollision(_Object); base.UpdateCollision(_Object); }
public override void UpdateCollision(CAnimationObject _Object) { GlobalValue.ID_MARIO = IDObject; GlobalValue.MARIO_STATUS = Status; UpdateCollisionBullet(_Object); if (CheckCollision(_Object) != DirectCollision.NONE && m_Status != IDStatus.DIE) { switch (_Object.IDObject) { #region Goomba case IDObject.ENEMY_GOOMBA_OW: if ((CheckCollision(_Object) == DirectCollision.TOP || CheckCollision(_Object) == DirectCollision.RIGHT || CheckCollision(_Object) == DirectCollision.LEFT || CheckCollision(_Object) == DirectCollision.BOTTOM) && IsInvincible && _Object.Status != IDStatus.SHOOTED) { _Object.Status = IDStatus.SHOOTED; _Object.Velocity = new Vector2(0, -0.2f); } if (CheckCollision(_Object) == DirectCollision.TOP && _Object.Status == IDStatus.ALIVE && !IsWorldFreeze) { CResourceManager.GetInstance().GetSoundEffect(IDResource.SFX_STOMP).Play(); _Object.Status = IDStatus.BEFORE_DIE; m_Velocity.Y = -m_Velocity.Y; break; } if ((CheckCollision(_Object) == DirectCollision.RIGHT || CheckCollision(_Object) == DirectCollision.LEFT) && _Object.Status == IDStatus.ALIVE && !IsWorldFreeze) { if (m_IDObject == IDObject.FIRE_MARIO) { CResourceManager.GetInstance().GetSoundEffect(IDResource.SFX_MARIO_HURT).Play(); Sprite = new CSprite(CResourceManager.GetInstance().GetResource(IDResource.SUPER_MARIO)); IDObject = IDObject.SUPER_MARIO; Status = IDStatus.MARIO_DOWNCAST; IsWorldFreeze = true; break; } if (m_IDObject == IDObject.SUPER_MARIO) { CResourceManager.GetInstance().GetSoundEffect(IDResource.SFX_MARIO_HURT).Play(); Sprite = new CSprite(CResourceManager.GetInstance().GetResource(IDResource.SMALL_MARIO)); IsWorldFreeze = true; Status = IDStatus.MARIO_DOWNCAST; IDObject = IDObject.SMALL_MARIO; break; } if (m_IDObject == IDObject.SMALL_MARIO) { m_Status = IDStatus.DIE; break; } if (Direction == IDDir.RIGHT) { Position = new Vector2(Position.X - 5f, Position.Y); } if (Direction == IDDir.LEFT) { Position = new Vector2(Position.X + 5f, Position.Y); } Velocity = Vector2.Zero; } break; #endregion #region Soft Brick case IDObject.MISC_SOFT_BRICK: if (CheckCollision(_Object) == DirectCollision.TOP && _Object.Status != IDStatus.ACTIVATE && _Object.Status != IDStatus.DIE) { if (Status == IDStatus.MARIO_JUMP) { Status = IDStatus.MARIO_STAND; } m_IsJumping = false; m_Velocity = new Vector2(m_Velocity.X, 0.0f); m_Position.Y = _Object.Position.Y - Sprite.FrameHeight; break; } else if (CheckCollision(_Object) == DirectCollision.BOTTOM && _Object.Status != IDStatus.ACTIVATE && _Object.Status != IDStatus.DIE) { m_Velocity = new Vector2(m_Velocity.X, 0.01f); if (_Object.Status != IDStatus.MOVE) { _Object.Velocity = new Vector2(0, -0.04f); } m_Position.Y = _Object.Position.Y + _Object.Sprite.FrameHeight + 2f; if (this.IDObject == Framework.IDObject.SMALL_MARIO) { _Object.Status = IDStatus.MOVE; break; } if (this.IDObject == Framework.IDObject.FIRE_MARIO || this.IDObject == Framework.IDObject.SUPER_MARIO) { CResourceManager.GetInstance().GetSoundEffect(IDResource.SFX_BREAKBLOCK).Play(); _Object.Velocity = new Vector2(0, m_Velocity.Y - 1); _Object.Status = IDStatus.BEFORE_DIE; break; } } else if (CheckCollision(_Object) == DirectCollision.LEFT) { m_Velocity = new Vector2(0.0f, m_Velocity.Y); Position = new Vector2(_Object.Position.X - Sprite.FrameWidht - 1, Position.Y); break; } else if (CheckCollision(_Object) == DirectCollision.RIGHT) { m_Velocity = new Vector2(0.0f, m_Velocity.Y); Position = new Vector2(_Object.Position.X + _Object.Sprite.FrameWidht + 1, Position.Y); break; } break; #endregion #region Item Coin case IDObject.ITEM_COIN_NORMAL: if ((CheckCollision(_Object) == DirectCollision.TOP || CheckCollision(_Object) == DirectCollision.RIGHT || CheckCollision(_Object) == DirectCollision.LEFT) && _Object.Status == IDStatus.ALIVE) { CResourceManager.GetInstance().GetSoundEffect(IDResource.SFX_COIN).Play(); _Object.Status = IDStatus.DIE; GlobalValue.MARIO_SCORE += 100; GlobalValue.MARIO_COIN += 100; } break; #endregion #region Fire Flower case IDObject.ITEM_FIRE_FLOWER: if ((CheckCollision(_Object) == DirectCollision.TOP || CheckCollision(_Object) == DirectCollision.RIGHT || CheckCollision(_Object) == DirectCollision.LEFT) && _Object.Status == IDStatus.ALIVE) { CResourceManager.GetInstance().GetSoundEffect(IDResource.SFX_POWER_UP).Play(); _Object.Status = IDStatus.DIE; if (m_IDObject == IDObject.SMALL_MARIO || m_IDObject == IDObject.SUPER_MARIO) { if (IDObject == IDObject.SMALL_MARIO) { m_Position.Y -= 16; } IDObject = IDObject.FIRE_MARIO; m_Status = IDStatus.MARIO_UPCAST; tempSprite = new CSprite(CResourceManager.GetInstance().GetResource(IDResource.FIRE_MARIO)); IsWorldFreeze = true; GlobalValue.IS_LOCK_KEYBOARD = true; m_isMarioFreeze = true; } GlobalValue.MARIO_SCORE += 1000; break; } break; case IDObject.ITEM_SUPER_MUSHROOM: if ((CheckCollision(_Object) == DirectCollision.TOP || CheckCollision(_Object) == DirectCollision.RIGHT || CheckCollision(_Object) == DirectCollision.LEFT)) { CResourceManager.GetInstance().GetSoundEffect(IDResource.SFX_POWER_UP).Play(); _Object.Status = IDStatus.DIE; if (m_IDObject == IDObject.SMALL_MARIO) { m_Position.Y -= 16; IDObject = IDObject.SUPER_MARIO; m_Status = IDStatus.MARIO_UPCAST; tempSprite = new CSprite(CResourceManager.GetInstance().GetResource(IDResource.SUPER_MARIO)); IsWorldFreeze = true; GlobalValue.IS_LOCK_KEYBOARD = true; m_isMarioFreeze = true; oldPosition = Position; } GlobalValue.MARIO_SCORE += 1000; break; } break; case IDObject.ITEM_1UP_MUSHROOM: if ((CheckCollision(_Object) == DirectCollision.TOP || CheckCollision(_Object) == DirectCollision.RIGHT || CheckCollision(_Object) == DirectCollision.LEFT)) { CResourceManager.GetInstance().GetSoundEffect(IDResource.SFX_1_UP).Play(); _Object.Status = IDStatus.DIE; ++GlobalValue.MARIO_LIFE; break; } break; #endregion #region Case Koopa case IDObject.ENEMY_KOOPA_OW: if ((CheckCollision(_Object) == DirectCollision.TOP || CheckCollision(_Object) == DirectCollision.RIGHT || CheckCollision(_Object) == DirectCollision.LEFT || CheckCollision(_Object) == DirectCollision.BOTTOM) && IsInvincible && _Object.Status != IDStatus.SHOOTED) { _Object.Status = IDStatus.SHOOTED; _Object.Velocity = new Vector2(0, -0.2f); } if (CheckCollision(_Object) == DirectCollision.TOP && _Object.Status == IDStatus.ALIVE) { m_Velocity.Y = -0.02f; _Object.Status = IDStatus.HIDE; _Object.Sprite = new CSprite(CResourceManager.GetInstance().GetResource(IDResource.ENEMY_HIDE_KOOPA_OW)); } if ((CheckCollision(_Object) == DirectCollision.RIGHT || CheckCollision(_Object) == DirectCollision.LEFT) && _Object.Status == IDStatus.HIDE) { if (Direction == IDDir.LEFT && CheckCollision(_Object) == DirectCollision.RIGHT) { _Object.Direction = IDDir.LEFT; _Object.Status = IDStatus.SPIN; CResourceManager.GetInstance().GetSoundEffect(IDResource.SFX_KICK).Play(); break; } if (Direction == IDDir.RIGHT && CheckCollision(_Object) == DirectCollision.LEFT) { _Object.Direction = IDDir.RIGHT; _Object.Status = IDStatus.SPIN; CResourceManager.GetInstance().GetSoundEffect(IDResource.SFX_KICK).Play(); break; } break; } if (CheckCollision(_Object) == DirectCollision.TOP && _Object.Status == IDStatus.HIDE) { if (Status == IDStatus.MARIO_JUMP) { Status = IDStatus.MARIO_STAND; } m_Velocity.Y = 0; //m_IsDisableUp = true; IsJumping = false; break; } if (CheckCollision(_Object) == DirectCollision.TOP && _Object.Status == IDStatus.SPIN) { if (Status == IDStatus.MARIO_JUMP) { Status = IDStatus.MARIO_STAND; } m_Velocity.Y = 0; IsJumping = false; _Object.Status = IDStatus.HIDE; break; } if ((CheckCollision(_Object) == DirectCollision.RIGHT || CheckCollision(_Object) == DirectCollision.LEFT) && _Object.Status == IDStatus.SPIN && !IsWorldFreeze) { if (m_IDObject == IDObject.FIRE_MARIO) { CResourceManager.GetInstance().GetSoundEffect(IDResource.SFX_MARIO_HURT).Play(); IDObject = IDObject.SUPER_MARIO; IsWorldFreeze = true; Sprite = new CSprite(CResourceManager.GetInstance().GetResource(IDResource.SUPER_MARIO)); Status = IDStatus.MARIO_DOWNCAST; break; } if (m_IDObject == IDObject.SUPER_MARIO) { CResourceManager.GetInstance().GetSoundEffect(IDResource.SFX_MARIO_HURT).Play(); IDObject = IDObject.SMALL_MARIO; Sprite = new CSprite(CResourceManager.GetInstance().GetResource(IDResource.SMALL_MARIO)); IsWorldFreeze = true; Status = IDStatus.MARIO_DOWNCAST; break; } if (m_IDObject == IDObject.SMALL_MARIO) { //m_Velocity.Y = -3.0f; m_Status = IDStatus.DIE; break; } } if ((CheckCollision(_Object) == DirectCollision.RIGHT || CheckCollision(_Object) == DirectCollision.LEFT) && _Object.Status == IDStatus.ALIVE && !IsWorldFreeze) { if (m_IDObject == IDObject.FIRE_MARIO) { CResourceManager.GetInstance().GetSoundEffect(IDResource.SFX_MARIO_HURT).Play(); IDObject = IDObject.SUPER_MARIO; Sprite = new CSprite(CResourceManager.GetInstance().GetResource(IDResource.SUPER_MARIO)); IsWorldFreeze = true; Status = IDStatus.MARIO_DOWNCAST; break; } if (m_IDObject == IDObject.SUPER_MARIO) { CResourceManager.GetInstance().GetSoundEffect(IDResource.SFX_MARIO_HURT).Play(); IDObject = IDObject.SMALL_MARIO; Sprite = new CSprite(CResourceManager.GetInstance().GetResource(IDResource.SMALL_MARIO)); IsWorldFreeze = true; Status = IDStatus.MARIO_DOWNCAST; break; } if (m_IDObject == IDObject.SMALL_MARIO) { m_Status = IDStatus.DIE; break; } } break; #endregion #region Case Base Brick case IDObject.MISC_BASE_BRICK: case IDObject.MISC_HARD_BRICK: if (CheckCollision(_Object) == DirectCollision.TOP) { //if (Status != IDStatus.MARIO_RUN && Status != IDStatus.MARIO_STAND && Status != IDStatus.MARIO_ATTACK && Status != IDStatus.MARIO_STRIPPED && Status != IDStatus.MARIO_WIN && Status != IDStatus.MARIO_AUTO_RUN && Status != IDStatus.MARIO_DOWNCAST) if (Status == IDStatus.MARIO_JUMP) { Status = IDStatus.MARIO_STAND; } //m_IsDisableUp = false; m_IsJumping = false; m_Velocity = new Vector2(m_Velocity.X, 0.0f); m_Position.Y = _Object.Position.Y - Sprite.FrameHeight; if (Status == IDStatus.MARIO_STRIPPED) { Position = new Vector2(Position.X + 12, Position.Y); Console.WriteLine(Status.ToString()); Direction = IDDir.LEFT; Status = IDStatus.MARIO_WIN; } break; } else if (CheckCollision(_Object) == DirectCollision.BOTTOM) { m_Velocity = new Vector2(m_Velocity.X, 0.0098f); m_Position.Y = _Object.Position.Y + _Object.Sprite.FrameHeight + 1; break; } else if (CheckCollision(_Object) == DirectCollision.LEFT) { m_Velocity = new Vector2(0.0f, m_Velocity.Y); Position = new Vector2(Position.X - 0.05f, Position.Y); break; } else if (CheckCollision(_Object) == DirectCollision.RIGHT) { m_Velocity = new Vector2(0.0f, m_Velocity.Y); Position = new Vector2(Position.X + 0.05f, Position.Y); break; } break; #endregion #region Goal Pole case IDObject.MISC_GOAL_POLE: if ((CheckCollision(_Object) == DirectCollision.BOTTOM || CheckCollision(_Object) == DirectCollision.LEFT || CheckCollision(_Object) == DirectCollision.RIGHT || CheckCollision(_Object) == DirectCollision.TOP) && !GlobalValue.IS_LOCK_KEYBOARD) { if (!GlobalValue.IS_LOCK_KEYBOARD) { Position = new Vector2(_Object.Position.X - 9, Position.Y); CResourceManager.GetInstance().GetSoundEffect(IDResource.SFX_FLAGPOLE).Play(); MediaPlayer.Stop(); } Status = IDStatus.MARIO_STRIPPED; GlobalValue.IS_LOCK_KEYBOARD = true; Accel = Vector2.Zero; Velocity = Vector2.Zero; _Object.Status = IDStatus.ACTIVATE; } break; #endregion #region Pipe case IDObject.MISC_IN_PORTAL_PIPE: if (CheckCollision(_Object) == DirectCollision.TOP) { if (Status == IDStatus.MARIO_JUMP) { Status = IDStatus.MARIO_STAND; } if (Status != IDStatus.TELEPORT) { m_IsJumping = false; m_Velocity = new Vector2(m_Velocity.X, 0.0f); m_Position.Y = _Object.Position.Y - Sprite.FrameHeight; } break; } if (CheckCollision(_Object) == DirectCollision.LEFT) { m_Velocity = new Vector2(0.0f, m_Velocity.Y); Position = new Vector2(Position.X - 0.05f, Position.Y); break; } else if (CheckCollision(_Object) == DirectCollision.RIGHT) { m_Velocity = new Vector2(0.0f, m_Velocity.Y); Position = new Vector2(Position.X + 0.05f, Position.Y); break; } break; case IDObject.MISC_STOCK_PIPE: case IDObject.MISC_NORMAL_PIPE: case IDObject.MISC_OUT_2_PIPE: if (CheckCollision(_Object) == DirectCollision.TOP) { if (Status != IDStatus.TELEPORT) { if (Status == IDStatus.MARIO_JUMP) { Status = IDStatus.MARIO_STAND; } m_IsJumping = false; m_Velocity = new Vector2(m_Velocity.X, 0.0f); m_Position.Y = _Object.Position.Y - Sprite.FrameHeight; break; } } //if (CheckCollision(_Object) == DirectCollision.BOTTOM) //{ // m_Velocity = new Vector2(m_Velocity.X, 0.0098f); // m_Position.Y = _Object.Position.Y + _Object.Sprite.FrameHeight + 1; // break; //} else if (CheckCollision(_Object) == DirectCollision.LEFT) { if (Status != IDStatus.TELEPORT) { m_Velocity = new Vector2(0.0f, m_Velocity.Y); Position = new Vector2(Position.X - 0.05f, Position.Y); break; } } else if (CheckCollision(_Object) == DirectCollision.RIGHT) { if (Status != IDStatus.TELEPORT) { m_Velocity = new Vector2(0.0f, m_Velocity.Y); Position = new Vector2(Position.X + 0.05f, Position.Y); break; } } break; case IDObject.MISC_OUT_1_PIPE: if (CheckCollision(_Object) == DirectCollision.TOP && Status != IDStatus.MARIO_AUTO_RUN) { if (Status == IDStatus.MARIO_JUMP) { Status = IDStatus.MARIO_STAND; } m_IsJumping = false; m_Velocity = new Vector2(m_Velocity.X, 0.0f); m_Position.Y = _Object.Position.Y - Sprite.FrameHeight; break; } if (CheckCollision(_Object) == DirectCollision.LEFT && Status != IDStatus.MARIO_AUTO_RUN && Status != IDStatus.TELEPORT && Position.Y >= _Object.Position.Y) { Velocity = Vector2.Zero; Accel = Vector2.Zero; CResourceManager.GetInstance().GetSoundEffect(IDResource.SFX_PIPE).Play(); Sprite.Depth = 0.05f; Status = IDStatus.MARIO_AUTO_RUN; GlobalValue.IS_LOCK_KEYBOARD = true; } break; #endregion #region Question Brick case IDObject.MISC_QUESTION_BRICK: if (CheckCollision(_Object) == DirectCollision.TOP) { if (Status == IDStatus.MARIO_JUMP) { Status = IDStatus.MARIO_STAND; } m_IsJumping = false; m_Velocity = new Vector2(m_Velocity.X, 0.0f); m_Position.Y = _Object.Position.Y - Sprite.FrameHeight; break; } else if (CheckCollision(_Object) == DirectCollision.BOTTOM) { m_Velocity = new Vector2(m_Velocity.X, 0.0098f); m_Position.Y = _Object.Position.Y + _Object.Sprite.FrameHeight + 1; if (_Object.Status != IDStatus.UNACTIVATE) { _Object.Status = IDStatus.DEACTIVATE; } break; } else if (CheckCollision(_Object) == DirectCollision.LEFT) { m_Velocity = new Vector2(0.0f, m_Velocity.Y); break; } else if (CheckCollision(_Object) == DirectCollision.RIGHT) { m_Velocity = new Vector2(0.0f, m_Velocity.Y); break; } break; #endregion #region Case Starman case IDObject.ITEM_STARMAN: if ((CheckCollision(_Object) == DirectCollision.TOP || CheckCollision(_Object) == DirectCollision.RIGHT || CheckCollision(_Object) == DirectCollision.LEFT || CheckCollision(_Object) == DirectCollision.BOTTOM) && _Object.Status != IDStatus.UNACTIVATE) { CResourceManager.GetInstance().GetSoundEffect(IDResource.SFX_POWER_UP).Play(); Status = IDStatus.MARIO_INVINCIBLE; tempSprite = Sprite; _Object.Status = IDStatus.DIE; break; } break; #endregion #region Case Default default: break; #endregion } } base.UpdateCollision(_Object); }
public override void UpdateCollision(CAnimationObject _Object) { if (CheckCollision(_Object) != DirectCollision.NONE && Status != IDStatus.SHOOTED && _Object.Index != Index) { switch (_Object.IDObject) { case IDObject.MISC_BASE_BRICK: case IDObject.MISC_IRON_BRICK: case IDObject.MISC_QUESTION_BRICK: case IDObject.MISC_STOCK_PIPE: case IDObject.MISC_SOFT_BRICK: case IDObject.MISC_GATE_PIPE: case IDObject.MISC_HARD_BRICK: if (CheckCollision(_Object) == DirectCollision.TOP) { m_Velocity.Y = 0.0f; m_Position.Y = _Object.Position.Y - m_Sprite.FrameHeight; break; } else if (CheckCollision(_Object) == DirectCollision.BOTTOM) { } else if (CheckCollision(_Object) == DirectCollision.RIGHT) { m_Direction = IDDir.RIGHT; break; } else if (CheckCollision(_Object) == DirectCollision.LEFT) { m_Direction = IDDir.LEFT; break; } break; case IDObject.ENEMY_GOOMBA_OW: case IDObject.ENEMY_KOOPA_OW: if (CheckCollision(_Object) == DirectCollision.TOP) { m_Velocity.Y = 0.0f; m_Position.Y = _Object.Position.Y - m_Sprite.FrameHeight; break; } else if (CheckCollision(_Object) == DirectCollision.BOTTOM) { } else if (CheckCollision(_Object) == DirectCollision.RIGHT && Status != IDStatus.SPIN) { m_Direction = IDDir.RIGHT; break; } else if (CheckCollision(_Object) == DirectCollision.LEFT && Status != IDStatus.SPIN) { m_Direction = IDDir.LEFT; break; } if (CheckCollision(_Object) == DirectCollision.RIGHT || CheckCollision(_Object) == DirectCollision.LEFT && Status == IDStatus.SPIN) { _Object.Velocity = new Vector2(0, -0.2f); _Object.Status = IDStatus.SHOOTED; break; } break; default: break; } } //base.UpdateCollision(_Object); }
public override void UpdateCollision(CAnimationObject _Object) { if (CheckCollision(_Object) != DirectCollision.NONE) { switch (_Object.IDObject) { case IDObject.MISC_BASE_BRICK: case IDObject.MISC_GATE_PIPE: case IDObject.MISC_STOCK_PIPE: case IDObject.MISC_UP_PIPE: case IDObject.MISC_SOFT_BRICK: case IDObject.MISC_HARD_BRICK: if (CheckCollision(_Object) == DirectCollision.TOP) { m_Velocity.Y = -0.1f; break; } if (CheckCollision(_Object) == DirectCollision.RIGHT || CheckCollision(_Object) == DirectCollision.LEFT) { Status = IDStatus.DIE; break; } break; case IDObject.ENEMY_KOOPA_OW: case IDObject.ENEMY_GOOMBA_OW: if (CheckCollision(_Object) != DirectCollision.NONE && _Object.Status != IDStatus.SHOOTED) { _Object.Status = IDStatus.SHOOTED; if (!isContact) { SoundManager.PlaySound(ESound.SFX_KICK); isContact = true; } _Object.Velocity = new Vector2(0, -0.2f); Status = IDStatus.DIE; break; } break; //case IDObject.MISC_HARD_BRICK: // if (CheckCollision(_Object) == DirectCollision.RIGHT || CheckCollision(_Object) == DirectCollision.LEFT) // { // Status = IDStatus.DIE; // break; // } // if (CheckCollision(_Object) == DirectCollision.TOP) // { // m_Velocity.Y = -0.1f; // break; // } // break; //case IDObject.MISC_STOCK_PIPE: // if (CheckCollision(_Object) == DirectCollision.RIGHT || CheckCollision(_Object) == DirectCollision.LEFT || CheckCollision(_Object) == DirectCollision.TOP) // { // Status = IDStatus.DIE; // break; // } // break; case IDObject.ENEMY_BOSS: if (CheckCollision(_Object) == DirectCollision.TOP || CheckCollision(_Object) == DirectCollision.BOTTOM || CheckCollision(_Object) == DirectCollision.RIGHT || CheckCollision(_Object) == DirectCollision.LEFT && _Object.Status != IDStatus.SHOOTED) { if (!isContact) { SoundManager.PlaySound(ESound.SFX_KICK); isContact = true; } Status = IDStatus.DIE; break; } break; default: break; } } base.UpdateCollision(_Object); }
public void RemoveObject(CAnimationObject _object) { m_ListObjects.Remove(_object); }
public override void SetItem(CAnimationObject _Item) { m_Item = _Item; }
public void RemoveObject(CAnimationObject _Object) { m_ListObject.Remove(_Object); if(m_ListNode.Count == 4) for (int i = 0; i < 4; ++i) { m_ListNode[i].RemoveObject(_Object); } }
public static CAnimationObject MakeObject(IDObject _type, Vector2 _pos) { CAnimationObject _object = null; switch (_type) { //case IDObject.SMALL_MARIO: // _object = new Mario(_pos); // break; case IDObject.ENEMY_GOOMBA_OW: _object = new Goomba(_pos, IDDir.LEFT); break; case IDObject.ENEMY_KOOPA_OW: _object = new Koopa(_pos); break; case IDObject.MISC_BASE_BRICK: _object = new BaseBrick(_pos); break; case IDObject.MISC_BIG_GRASS: _object = new BigGrass(_pos); break; case IDObject.MISC_BIG_MOUNTAIN: _object = new BigMountain(_pos); break; case IDObject.MISC_CASTLE: _object = new Castle(_pos); break; case IDObject.ENEMY_BOSS: _object = new Boss(_pos); break; //case IDObject.MISC_GATE_PIPE: //_object = new GatePipe(_pos, IDStatus.GATE_PIPE_DOWN); //break; case IDObject.MISC_HARD_BRICK: _object = new HardBrick(_pos); break; case IDObject.MISC_IRON_BRICK: _object = new HardBrick(_pos); break; case IDObject.MISC_STOCK_PIPE: _object = new StockPipe(_pos); break; case IDObject.MISC_MEDIUM_GRASS: _object = new MediumGrass(_pos); break; case IDObject.MISC_MEDIUM_MOUNTAIN: _object = new MediumMountain(_pos); break; case IDObject.MISC_PIECE: _object = new Piece(_pos); break; case IDObject.MISC_QUESTION_BRICK: _object = new QuestionBrick(_pos, IDObject.ITEM_COIN_ACTIVATED); break; case IDObject.MISC_SMALL_GRASS: _object = new SmallGrass(_pos); break; case IDObject.MISC_SOFT_BRICK: _object = new SoftBrick(_pos); break; case IDObject.MISC_GOAL_POLE: _object = new GoalPole(_pos); break; case IDObject.MISC_GATE_PIPE: _object = new GatePipe(_pos); break; case IDObject.MISC_FLAG: _object = new Flag(_pos); break; //case IDObject.BRICK_COIN: // _object = new QuestionBrick(_pos, IDObject.ITEM_COIN_ACTIVATED); // break; case IDObject.ITEM_STARMAN: _object = new ItemStarman(_pos); break; //case IDObject.MISC_UP_PIPE: // _object = new UpPipe(_pos); // break; case IDObject.ITEM_1UP_MUSHROOM: _object = new Item1UpMushroom(_pos); break; case IDObject.MISC_SMALL_CLOUND: _object = new SmallClound(_pos); break; case IDObject.MISC_MEDIUM_CLOUND: _object = new MediumClound(_pos); break; case IDObject.MISC_BIG_CLOUND: _object = new BigClound(_pos); break; case IDObject.ITEM_COIN_ACTIVATED: _object = new ItemCoin(_pos, IDObject.ITEM_COIN_ACTIVATED); break; case IDObject.ITEM_COIN_NORMAL: _object = new ItemCoin(_pos, IDObject.ITEM_COIN_NORMAL); break; case IDObject.ITEM_FIRE_FLOWER: _object = new ItemFireFlower(_pos); break; case IDObject.ITEM_SUPER_MUSHROOM: _object = new ItemSuperMushroom(_pos); break; case IDObject.ITEM_GROW_UP: _object = new ItemGrowUp(_pos); break; //case IDObject.BRICK_COIN: // _object = new QuestionBrick(_pos, IDObject.ITEM_COIN_ACTIVATED); // break; //case IDObject.BRICK_FLOWER: // _object = new QuestionBrick(_pos, IDObject.ITEM_FIRE_FLOWER); // break; //case IDObject.BRICK_SUPPERMUSHROOM: // _object = new QuestionBrick(_pos, IDObject.ITEM_SUPER_MUSHROOM); // break; //case IDObject.BRICK_1UPMUSHROOM: // _object = new QuestionBrick(_pos, IDObject.BRICK_1UPMUSHROOM); // break; //case IDObject.BRICK_STAR: // _object = new QuestionBrick(_pos, IDObject.ITEM_STARMAN); // break; default: break; } return(_object); }
public override void UpdateCollision(CAnimationObject _Object) { if (_Object.IDObject == IDObject.FIRE_MARIO || _Object.IDObject == IDObject.SMALL_MARIO || _Object.IDObject == IDObject.SUPER_MARIO) { if (Math.Abs(Position.X - _Object.Position.X) < 368) { CanFire = true; if (Position.X > _Object.Position.X && Status == IDStatus.FIRE) { Direction = IDDir.LEFT; } if (Position.X < _Object.Position.X && Status == IDStatus.FIRE) { Direction = IDDir.RIGHT; } } } //for (int i = 0; i < List_Of_Bullet.Count; i++) //{ // List_Of_Bullet[i].UpdateCollision(_Object); //} if (CheckCollision(_Object) != DirectCollision.NONE) { switch (_Object.IDObject) { case IDObject.MISC_BASE_BRICK: case IDObject.MISC_IRON_BRICK: case IDObject.MISC_QUESTION_BRICK: case IDObject.MISC_STOCK_PIPE: case IDObject.MISC_HARD_BRICK: if (CheckCollision(_Object) == DirectCollision.TOP) { m_Velocity.Y = 0.0f; m_Position.Y = _Object.Position.Y - Sprite.FrameHeight; break; } else if (CheckCollision(_Object) == DirectCollision.RIGHT) { Direction = IDDir.RIGHT; break; } else if (CheckCollision(_Object) == DirectCollision.LEFT) { Direction = IDDir.LEFT; break; } else if (CheckCollision(_Object) == DirectCollision.BOTTOM) { } break; case IDObject.FIRE_MARIO: case IDObject.SMALL_MARIO: case IDObject.SUPER_MARIO: if (CheckCollision(_Object) == DirectCollision.BOTTOM && _Object.Status != IDStatus.DIE) { Boss_Heath_Point -= 200; _Object.Velocity = new Vector2(_Object.Velocity.X, -0.35f); } break; case IDObject.BULLET: if (CheckCollision(_Object) != DirectCollision.NONE) { Boss_Heath_Point -= 200; } break; default: break; } } base.UpdateCollision(_Object); }
public override void UpdateCollision(CAnimationObject _Object) { if (CheckCollision(_Object) != DirectCollision.NONE) { switch (_Object.IDObject) { case IDObject.MISC_BASE_BRICK: case IDObject.MISC_IRON_BRICK: case IDObject.MISC_QUESTION_BRICK: case IDObject.MISC_STOCK_PIPE: case IDObject.MISC_SOFT_BRICK: case IDObject.MISC_GATE_PIPE: case IDObject.MISC_HARD_BRICK: if (CheckCollision(_Object) == DirectCollision.TOP && m_Status != IDStatus.SHOOTED) { m_Velocity.Y = 0.0f; m_Position.Y = _Object.Position.Y - Sprite.FrameHeight; break; } else if (CheckCollision(_Object) == DirectCollision.RIGHT) { Direction = IDDir.RIGHT; break; } else if (CheckCollision(_Object) == DirectCollision.LEFT) { Direction = IDDir.LEFT; break; } else if (CheckCollision(_Object) == DirectCollision.BOTTOM) { } break; //case IDObject.MARIO_FIRE: // if(CheckCollision(_Object) == DirectCollision.BOTTOM) // m_Status = IDStatus.BEFORE_DIE; // break; case IDObject.ENEMY_GOOMBA_OW: case IDObject.ENEMY_KOOPA_OW: //if ((CheckCollision(_Object) == DirectCollision.LEFT || CheckCollision(_Object) == DirectCollision.RIGHT) && _Object.Status == IDStatus.SPIN && Status != IDStatus.SHOOTED) //{ // CResourceManager.GetInstance().GetSoundEffect(IDResource.SFX_KICK).Play(); // // _Object.Velocity = new Vector2(0, -0.2f); // m_Status = IDStatus.SHOOTED; //} if ((CheckCollision(_Object) == DirectCollision.LEFT || CheckCollision(_Object) == DirectCollision.RIGHT) && (_Object.Status == IDStatus.HIDE || _Object.Status == IDStatus.ALIVE)) { if (CheckCollision(_Object) == DirectCollision.RIGHT) { Direction = IDDir.RIGHT; } if (CheckCollision(_Object) == DirectCollision.LEFT) { Direction = IDDir.LEFT; } } break; default: break; } } base.UpdateCollision(_Object); }