public static void DetectCollision(FireballObject fireball) { List <IGameObject> gameObjects = new List <IGameObject>(Game1.Instance.currentState.Level.GetObjects()); gameObjects.AddRange(Game1.Instance.currentState.Level.BigFloorRectangles); List <IEnemy> enemies = new List <IEnemy>(Game1.Instance.currentState.Level.GetEnemies()); Rectangle fireballRectangle = fireball.GetHitBox(); foreach (IGameObject collidedObject in gameObjects) { Rectangle collidedObjectRectangle = collidedObject.GetHitBox(); if (fireballRectangle.Intersects(collidedObjectRectangle)) { if (collidedObject is IBlock) { FireballBlockCollisionResponder.FireballCollideWithBlock(fireball, collidedObject); } else if (collidedObject is IPipe) { FireballPipeCollisionResponder.FireballCollideWithPipe(fireball, (IPipe)collidedObject, Game1.Instance.currentState.Level); } } } foreach (IEnemy enemy in enemies) { Rectangle enemyRectangle = enemy.GetHitBox(); if (fireballRectangle.Intersects(enemyRectangle)) { Game1.Instance.currentState.Level.AddObject(new FireballExpolsion((int)fireball.Position.X, (int)fireball.Position.Y)); FireballEnemyCollisionResponder.FireballCollideWithEnemy(fireball, enemy); } } }
public FireballObject GetFireballObjects() { string FIREBALL_API_PATH = BASE_URL; string fireballRaw = ""; FireballObject fireballData = null; httpClient.BaseAddress = new Uri(FIREBALL_API_PATH); try { HttpResponseMessage response = httpClient.GetAsync(FIREBALL_API_PATH).GetAwaiter().GetResult(); if (response.IsSuccessStatusCode) { fireballRaw = response.Content.ReadAsStringAsync().GetAwaiter().GetResult(); } if (!fireballRaw.Equals("")) { fireballData = JsonConvert.DeserializeObject <FireballObject>(fireballRaw); } } catch (Exception e) { Console.WriteLine(e.Message); } return(fireballData); }
private void InputControls() { if (Input.touchCount > 0) { Touch touch = Input.GetTouch(0); if (frozenGame) { if (touch.phase == TouchPhase.Began) { for (int i = 0; i < fireballs.Length; i++) { FireballObject fireball = fireballs [i].GetComponent <FireballObject> (); fireball.freezePosition = false; cardStyle.alignment = TextAnchor.UpperLeft; cardStyle.fontSize = 92; } frozenGame = false; GetComponent <SpriteRenderer> ().sprite = aliveSprite; score = 0; } } else { Vector3 newPosition = Camera.main.ScreenToWorldPoint(touch.position); newPosition.z = 10; transform.position = newPosition; } } }
public static void FireballCollideWithBlock(FireballObject fireball, IGameObject block) { Level level = Game1.Instance.currentState.Level; Rectangle fireballRectangle = fireball.GetHitBox(); Rectangle blockRectangle = block.GetHitBox(); IBlock castBlock = (IBlock)block; ICollision collisionSide = CollisionSideDetector.DetectCollisionSide(fireballRectangle, blockRectangle); if (castBlock.State is HiddenItemBlockState) { return; } if (collisionSide is TopCollision) { fireball.Position = new Vector2(fireball.Position.X, fireball.Position.Y - collisionSide.CollisionIntersection.Height); fireball.BounceOffGround(); } else if (collisionSide is RightCollision) { level.AddObject(new FireballExpolsion((int)fireball.Position.X, (int)fireball.Position.Y)); fireball.Explode(); } else if (collisionSide is LeftCollision) { level.AddObject(new FireballExpolsion((int)fireball.Position.X, (int)fireball.Position.Y)); fireball.Explode(); } else if (collisionSide is BottomCollision) { level.AddObject(new FireballExpolsion((int)fireball.Position.X, (int)fireball.Position.Y)); fireball.PhysicsObject.dy = 10.0F; } }
public void LoadFireball() { FireballHandler webHandler = new FireballHandler(); FireballObject fireballData = webHandler.GetFireballObjects(); int x = 1; foreach (Fireball s in fireballData.data) { IQueryable <Fireball> firetest = dbContext.FireballEntries .Where(c => c.objectName == s.objectName); if (firetest == s | firetest.Count() == 0) { s.fnum = x; x++; dbContext.FireballEntries.Add(s); } else { s.fnum = x; x++; dbContext.FireballEntries.Update(s); } } dbContext.SaveChanges(); }
public void ignite() { for (int i = 0; i < fireballs.Length; i++) { FireballObject fireball = fireballs [i].GetComponent <FireballObject> (); fireball.respawn(); fireball.freezePosition = true; cardStyle.alignment = TextAnchor.MiddleCenter; cardStyle.fontSize = 156; } frozenGame = true; GetComponent <SpriteRenderer> ().sprite = deadSprite; }
public static void FireballCollideWithPipe(FireballObject fireball, IPipe pipe, Level level) { Rectangle fireballRectangle = fireball.GetHitBox(); Rectangle pipeRectangle = pipe.GetHitBox(); ICollision collisionSide = CollisionSideDetector.DetectCollisionSide(fireballRectangle, pipeRectangle); if (collisionSide is TopCollision) { fireball.BounceOffGround(); } else { level.AddObject(new FireballExpolsion((int)fireball.Position.X, (int)fireball.Position.Y)); fireball.Explode(); } }
public FireballSprite(FireballObject fireballObject) { this.fireballObject = fireballObject; destination = new Rectangle((int)fireballObject.Position.X, (int)fireballObject.Position.Y, 16, 16); }
public static void FireballCollideWithEnemy(FireballObject fireball, IEnemy enemy) { fireball.Explode(); enemy.BeFlipped(); }
public static void FireballCollision(FireballObject fireball) { FireballCollisionDetection.DetectCollision(fireball); }