private void UpdateElementals(GameTime gameTime, Character character, ViewManager viewManager) { for (int i = 0; i < elementals.Count; i++) { // Using relativeX for both check for a circle image zone if (Vector2.DistanceSquared(character.Position, elementals[i].Position) > Math.Pow(viewManager.RelativeX(relativeRemovalRadius), 2)) { // Console.WriteLine("Elemental removed"); elementals.RemoveAt(i); } else if (!elementals[i].IsAlive) { character.AddExperience(elementals[i].PointYield); character.AddElementalPoints(elementals[i].CurrentElement, elementals[i].PointYield * 2); elementals.RemoveAt(i); } else { elementals[i].Update(gameTime, elementals, character.Position); elementals[i].Visible = Math.Abs(character.Position.X - elementals[i].Position.X) < viewManager.RelativeX(50) + elementals[i].Width || Math.Abs(character.Position.Y - elementals[i].Position.Y) < viewManager.RelativeY(50) + elementals[i].Height; } } }
private void UpdateZones(GameTime gameTime, Character character, ViewManager viewManager) { // Using relativeX for both check for a circle image zone int zoneRadius = viewManager.RelativeX(50); if (newZoneNeeded) { // Console.WriteLine("New zone needed"); if (elementalZones.Count == 0) { // Create a zone with the character at the radius AddNewZone(character.Position, character.StatAverage, zoneRadius); } else if(elementalZones.Count < maxZoneCount) { CreateNewZone(character, viewManager, zoneRadius); } } else { elapsedZoneTime += (int)gameTime.ElapsedGameTime.TotalMilliseconds; if (elapsedZoneTime >= zoneInterval) { newZoneNeeded = true; elapsedZoneTime = 0; } } for (int i = 0; i < elementalZones.Count; i++) { // Smaller removal radius for zones if (elementalZones[i].GeneratedAll || Vector2.DistanceSquared(character.Position, elementalZones[i].Position) > viewManager.RelativeX(relativeRemovalRadius) * viewManager.RelativeX(relativeRemovalRadius)) { // Console.WriteLine("Zone removed"); elementalZones.RemoveAt(i); } else { elementalZones[i].Update(gameTime, character.Position); if (elementalZones[i].GeneratingElement) { elementalZones[i].GeneratingElement = false; if (elementals.Count < maxElementalCount) { Elemental optionElemental = elementalZones[i].NewElemental(elementals); if(optionElemental != null) elementals.Add(optionElemental); // Console.WriteLine("Elemental created at: " + elementals[elementals.Count - 1].Position); } } } } }
private Vector2 RandomZonePos(Vector2 characterPosition, ViewManager viewManager) { var angle = Math.Sqrt(Helper.RandomNextDouble()) * Math.PI * 2; var gRadius = Helper.RandomInt(viewManager.RelativeY(10), viewManager.RelativeX(125)); return new Vector2((int)(characterPosition.X + gRadius * Math.Cos(angle)), (int)(characterPosition.Y + gRadius * Math.Sin(angle))); }
public InfoArea(ViewManager viewManager) { infoZoneRect = new Rectangle(0, viewManager.Height - viewManager.RelativeX(17.5f), viewManager.RelativeX(25), viewManager.RelativeX(17.5f)); characterCircleRect = new Rectangle(viewManager.RelativeX(3.5f), viewManager.Height - viewManager.RelativeX(11f), viewManager.RelativeX(10), viewManager.RelativeX(10)); expBarRect = new Rectangle(characterCircleRect.X + characterCircleRect.Width / 2, characterCircleRect.Y + characterCircleRect.Height - viewManager.RelativeX(1), viewManager.RelativeX(25), viewManager.RelativeX(1)); hpBarRect = new Rectangle(characterCircleRect.X + (int)(0.7f * characterCircleRect.Width), expBarRect.Y - viewManager.RelativeX(2), expBarRect.Width - (int)(0.20f * characterCircleRect.Width), viewManager.RelativeX(2)); // Element icons int iconWidth = viewManager.RelativeX(3.5f); int iconMargin = viewManager.RelativeX(0.1f); int radius = (characterCircleRect.Width + iconWidth) / 2 + iconMargin; this.fireIconRect = new Rectangle(-iconWidth / 2 + characterCircleRect.Center.X + (int)(radius * Math.Cos(Math.PI * 13 / 12)), -iconWidth / 2 + characterCircleRect.Center.Y + (int)(radius * Math.Sin(Math.PI * 13 / 12)), iconWidth, iconWidth); this.waterIconRect = new Rectangle(-iconWidth / 2 + characterCircleRect.Center.X + (int)(radius * Math.Cos(Math.PI * 49 / 36)), -iconWidth / 2 + characterCircleRect.Center.Y + (int)(radius * Math.Sin(Math.PI * 49 / 36)), iconWidth, iconWidth); this.earthIconRect = new Rectangle(-iconWidth / 2 + characterCircleRect.Center.X + (int)(radius * Math.Cos(Math.PI * 59 / 36)), -iconWidth / 2 + characterCircleRect.Center.Y + (int)(radius * Math.Sin(Math.PI * 59 / 36)), iconWidth, iconWidth); this.windIconRect = new Rectangle(-iconWidth / 2 + characterCircleRect.Center.X + (int)(radius * Math.Cos(Math.PI * 23 / 12)), -iconWidth / 2 + characterCircleRect.Center.Y + (int)(radius * Math.Sin(Math.PI * 23 / 12)), iconWidth, iconWidth); // Stat icons int statIconWidth = viewManager.RelativeX(2); int statIconMargin = viewManager.RelativeX(3); int baseY = infoZoneRect.Y + statIconMargin / 2; this.attackIconRect = new Rectangle(infoZoneRect.Right - statIconWidth - 4 * statIconMargin / 3, baseY, statIconWidth, statIconWidth); this.staminaIconRect = new Rectangle(infoZoneRect.Right - statIconWidth - 4 * statIconMargin / 3, baseY + statIconMargin, statIconWidth, statIconWidth); this.defenseIconRect = new Rectangle(infoZoneRect.Right - statIconWidth - 4 * statIconMargin / 3, baseY + 2 * statIconMargin, statIconWidth, statIconWidth); this.speedIconRect = new Rectangle(infoZoneRect.Right - statIconWidth - 4 * statIconMargin / 3, baseY + 3 * statIconMargin, statIconWidth, statIconWidth); // Stat number rects this.attackStatRect = new Rectangle(attackIconRect.Right + viewManager.RelativeX(0.5f), attackIconRect.Top, statIconWidth * 2 / 3, statIconWidth); this.staminaStatRect = new Rectangle(staminaIconRect.Right + viewManager.RelativeX(0.5f), staminaIconRect.Top, statIconWidth * 2 / 3, statIconWidth); this.defenseStatRect = new Rectangle(defenseIconRect.Right + viewManager.RelativeX(0.5f), defenseIconRect.Top, statIconWidth * 2 / 3, statIconWidth); this.speedStatRect = new Rectangle(speedIconRect.Right + viewManager.RelativeX(0.5f), speedIconRect.Top, statIconWidth * 2 / 3, statIconWidth); this.healthStatRect = new Rectangle(hpBarRect.Right - statIconWidth * 3, hpBarRect.Top - statIconWidth * 5 / 3, statIconWidth, statIconWidth * 3 / 2); }