private void SetEnemyConstraintsOnAllPoints(EnemyRank inRank, EnemySize inSize) { for (int i = 0; i < spawnPoints.Count; i++) { spawnPoints[i].SetEnemyConstraints(inRank, inSize); } }
public TemporaryEnemy(int xPosition, int yPosition, EnemyType movementType, EnemySize size) { this.xPosition = xPosition; this.yPosition = yPosition; this.movementType = movementType; this.size = size; }
/// <summary> /// Figures out if you can spawn an enemy of the size asked for /// Returns true if you can spawn the enemy /// </summary> public bool SpaceCheck(EnemySize size, int xPos, int yPos) { switch (size) { // Large enemies take up a 2x2 space case EnemySize.Large: if ((terrain[xPos][yPos] == ' ' || terrain[xPos][yPos] == 'C') && (terrain[xPos + 1][yPos] == ' ' || terrain[xPos + 1][yPos] == 'C') && (terrain[xPos][yPos + 1] == ' ' || terrain[xPos][yPos + 1] == 'C') && (terrain[xPos + 1][yPos + 1] == ' ' || terrain[xPos + 1][yPos + 1] == 'C')) { return(true); } return(false); // Medium and small enemies only take up 1 block worth of space. case EnemySize.Medium: case EnemySize.Small: if (terrain[xPos][yPos] == ' ' || terrain[xPos][yPos] == 'C') { return(true); } return(false); default: return(false); } }
private void AddEnemySpawnPoint(EnemyRank inRank, EnemySize inSize, Vector2 inPosition) { isEnemySpawnPattern = true; //enemies always face left SpawnPoint s = new SpawnPoint(inPosition, Direction.LEFT); s.SetEnemyConstraints(inRank, inSize); spawnPoints.Add(s); }
/// <summary> /// Basic paramaterized constructor for the base enemy object. Does not account for health, use the health paramaterzied constructor for that /// </summary> /// <param name="animationList">The animations for the enemy</param> /// <param name="pos">The position to spawn the enemy at</param> public BaseEnemy(List <List <Texture2D> > animationList, Vector2 pos, EnemyType ai, Random rand, Player myPlayer, EnemySize size) : base(animationList, pos, "enemy") { this.rand = rand; zOrder = 8999; //Create the vertices and their color vertices = new VertexPositionColor[3]; vertices[0].Position = new Vector3(pos.X, pos.Y, 0); vertices[0].Color = Color.Red; vertices[1].Position = new Vector3(pos.X, pos.Y, 0); vertices[1].Color = Color.Green; this.ai = ai; this.myPlayer = myPlayer; this.mySize = size; this.animating = true; this.looping = true; this.projectiles = new List <int>(); CheckForCollisions = true; currentHealth = maxHealth; if (ai == EnemyType.Flying) { overshootEndDistance = 16; } if (mySize == EnemySize.Small) { maxHealth = 1; currentHealth = 1; baseSpeed = 2.0f; chaseDistance = 6 * 64; } if (mySize == EnemySize.Medium) { maxHealth = 3; currentHealth = 3; baseSpeed = 1.0f; chaseDistance = 8 * 64; } if (mySize == EnemySize.Large) { maxHealth = 10; currentHealth = 10; baseSpeed = 0.5f; chaseDistance = 10 * 64; } }
public static List <EnemyCharacterData> GetEnemiesOfSize(EnemySize inSize) { List <EnemyCharacterData> enemiesOfSize = new List <EnemyCharacterData>(); for (int i = 0; i < enemyCollectionList.Count; i++) { if (enemyCollectionList[i].size == inSize && !enemyCollectionList[i].isOre) { enemiesOfSize.Add(enemyCollectionList[i]); } } return(enemiesOfSize); }
public void SetSize(EnemySize size) { this.size = size; if ((int)size < 2) { speed = 1; } if ((int)size < 4) { speed = 2; } if ((int)size < 5) { speed = 3; } }
public static Boat_Stats GenerateBoatStats(EnemySize size, EnemyType type) { Boat_Stats stats = null; switch (size) { case EnemySize.Small: stats = new Boat_Stats(45, new Stats(5, 1), new Stats(50, 1), new Stats(5, 1), new Stats(0, 0)); break; case EnemySize.Big: stats = new Boat_Stats(160, new Stats(3, 1), new Stats(50, 1), new Stats(5, 1), new Stats(0, 0)); break; } stats.canons = GenerateCanons(size, type); return(stats); }
public void SetRandomEnemy(GameObject newEnemy, int maxLevel) { int randomValue = Random.Range(0, maxLevel); EnemyColor color = (EnemyColor)randomValue; string colorStr = color.ToString() + "_"; if ((int)color == 0) { colorStr = ""; } EnemySize size = (EnemySize)Random.Range(0, 6); string enemySize = size.ToString(); string spriteName = colorStr + enemySize; newEnemy.GetComponent <SpriteRenderer>().sprite = findEnemySpriteByName(spriteName.ToLower()); newEnemy.GetComponent <EnemyController>().SetColor(color); newEnemy.GetComponent <EnemyController>().SetSize(size); }
public void SetEnemyConstraints(EnemyRank inRank, EnemySize inSizes) { allowedRank = inRank; allowedSizes = inSizes; }
public override void Update() { // Base update UpdateCollisionBox(); if (animating == true) { if (Game1.TIMER % (60 / framesPerSecond) == 0) { frameIndex++; } if (frameIndex >= animationList[animationListIndex].Count && looping == true) { frameIndex = 0; } else if (frameIndex >= animationList[animationListIndex].Count && looping == false) { A_StopAnimating(); } } rotation += 1; rotation = rotation % 360; //OnScreenCheck(); onScreen = true; // Enemy spawning if (rotation == 0) { EnemyType myType = (EnemyType)rand.Next(0, 3); EnemySize mySize = (EnemySize)rand.Next(0, 3); int numberToSpawn = 0; string myTexture = ""; // Choose a texture and a number of enemies to spawn. #region TextureChoosing switch (myType) { case EnemyType.Flying: if (mySize == EnemySize.Large) { myTexture = "FlyingEnemyLarge"; numberToSpawn = 1; } if (mySize == EnemySize.Medium) { myTexture = "FlyingEnemy"; numberToSpawn = 2; } if (mySize == EnemySize.Small) { myTexture = "FlyingEnemySmall"; numberToSpawn = 5; } break; case EnemyType.Ghost: if (mySize == EnemySize.Large) { myTexture = "GhostEnemyLarge"; numberToSpawn = 1; } if (mySize == EnemySize.Medium) { myTexture = "GhostEnemy"; numberToSpawn = 2; } if (mySize == EnemySize.Small) { myTexture = "GhostEnemySmall"; numberToSpawn = 5; } break; case EnemyType.Ground: if (mySize == EnemySize.Large) { myTexture = "GroundEnemyLarge"; numberToSpawn = 1; } if (mySize == EnemySize.Medium) { myTexture = "Onion"; numberToSpawn = 2; } if (mySize == EnemySize.Small) { myTexture = "GroundEnemySmall"; numberToSpawn = 5; } break; } #endregion for (int i = 0; i < numberToSpawn; i++) { BaseEnemy myEnemy = new BaseEnemy(Game1.A_CreateListOfAnimations(Game1.ANIMATION_DICTIONARY[myTexture]), new Vector2(position.X + rand.Next(-64, 65), position.Y + rand.Next(-64, 65)), myType, rand, myPlayer, mySize); myEnemy.chaseDistance = 14 * 64; level.AddObjectToHandler("Enemy", myEnemy); } } if (destroyThis) { PlayerStats.mula += 10000; StreamReader stReader; try { stReader = new StreamReader(File.OpenRead("..\\Debug\\Content\\HighScores.txt")); } catch { StreamWriter st2Writer = new StreamWriter(File.Create("..\\Debug\\Content\\HighScores.txt")); st2Writer.Close(); stReader = new StreamReader(File.OpenRead("..\\Debug\\Content\\HighScores.txt")); } string all = stReader.ReadToEnd(); stReader.Close(); StreamWriter stWriter = new StreamWriter(File.OpenWrite("..\\Debug\\Content\\HighScores.txt")); stWriter.WriteLine(all + PlayerStats.mula); stWriter.Close(); Destroy(); PlayerStats.bossDead = true; } }
private static List <Canon> GenerateCanons(EnemySize size, EnemyType type) { if (defaultCanonball == null) { LoadResources(); } List <Canon> canons = new List <Canon>(); CanonType canonType = CanonType.Normal; int maxCanon = (size == EnemySize.Small) ? 2 : 6; for (int i = 0; i < maxCanon; i++) { float damage = 25; float baseCooldown = 3; GameObject canonball = defaultCanonball; switch (type) { case EnemyType.Normal: canonType = CanonType.Normal; damage = 15; baseCooldown = 3; canonball = defaultCanonball; break; case EnemyType.Fire: canonType = CanonType.LanceFlammes; damage = 10; baseCooldown = 5; canonball = flameEffect; break; case EnemyType.Triple: canonType = CanonType.TirTriple; damage = 7; baseCooldown = 3.5f; canonball = defaultCanonball; //Reduce power switch (size) { case EnemySize.Big: if (i == 1 || i == 4) { canons.Add(null); continue; } break; } break; } canons.Add(new Canon(canonType, damage, baseCooldown, canonball, 1, 1.15f)); } return(canons); }
public static void CreateEnemyCharacters() { enemyCollection = new Dictionary <string, EnemyCharacterData>(); //use this line to load from a json file //EnemyCharacterMap map = Utils.LoadJsonFromPath<EnemyCharacterMap>(inPath); /* * {"id":"1:rat", "area": "CAVERNS|JAIL", "rank":"NORM", "size": "MD", "base_stats" : ["hp=2", "atk=1", "spd=default"], "spawn_rate": 1, "area_spawn_range": "0-50", "drop_rate":"3", "drops": "6", "fps":4, "frames":3, "shadow_size": 7, "shadow_offset":0, "fly_height": 0, "fly_speed": 0, "projectile_spawn_offset":"0,0", "fade_amt":0, "flags": "CANT_STRIKE", "variable_target_preference":1, "skills":"CLAW"}, * {"id":"11:tunneler", "area": "CAVERNS", "rank":"MBOS", "size": "LG", "base_stats" : ["hp=8", "atk=2", "spd=default"], "spawn_rate": 1, "area_spawn_range": "0-50", "drop_rate":"1", "drops": "3", "fps":4, "frames":3, "shadow_size": 0, "shadow_offset":0, "fly_height": 0, "fly_speed": 0, "projectile_spawn_offset":"0,0", "fade_amt":0, "flags": "IN_GROUND", "variable_target_preference":1, "skills":""}, * {"id":"13:dragon", "area": "CAVERNS", "rank":"BOSS", "size": "XL", "base_stats" : ["hp=28", "atk=3", "spd=default"], "spawn_rate": 1, "area_spawn_range": "0-50", "drop_rate":"50", "drops": "55", "fps":4, "frames":3, "shadow_size": 23, "shadow_offset":0, "fly_height": 30, "fly_speed": 10, "projectile_spawn_offset":"0,0", "fade_amt":0, "flags": "", "variable_target_preference":1, "skills":"METEOR"}, */ //instead, create the data manually var ratData = new EnemyCharacterRow() { id = "1:" + EnemyId.RAT, area = "CAVERNS|JAIL", rank = "NORM", size = "MD", base_stats = new string[] { "hp=2", "atk=1", "spd=default" }, spawn_rate = 1, area_spawn_range = "0-50", drop_rate = "3", drops = "6", flags = "", variable_target_preference = 1, skills = "" }; var tunnelerData = new EnemyCharacterRow() { id = "11:" + EnemyId.TUNNELER, area = "CAVERNS", rank = "MBOS", size = "MD", base_stats = new string[] { "hp=8", "atk=2", "spd=default" }, spawn_rate = 1, area_spawn_range = "0-50", drop_rate = "1", drops = "", flags = "IN_GROUND", variable_target_preference = 1, skills = "" }; var dragonData = new EnemyCharacterRow() { id = "13:" + EnemyId.DRAGON, area = "CAVERNS", rank = "BOSS", size = "MD", base_stats = new string[] { "hp=28", "atk=3", "spd=default" }, spawn_rate = 1, area_spawn_range = "0-50", drop_rate = "50", drops = "", flags = "", variable_target_preference = 1, skills = "METEOR" }; EnemyCharacterMap map = new EnemyCharacterMap(); map.enemy_characters = new EnemyCharacterRow[] { ratData, tunnelerData, dragonData }; EnemyCharacterRow row; EnemyCharacterData tempCharacter; string[] idPieces; for (int i = 0; i < map.enemy_characters.Length; i++) { row = map.enemy_characters[i]; tempCharacter = new EnemyCharacterData(); tempCharacter.Init(); idPieces = row.id.Split(':'); int storageId = int.Parse(idPieces[0]); tempCharacter.SetId(idPieces[1]); tempCharacter.SetStorageId(storageId); tempCharacter.SetSpecies(Species.CREATURE); tempCharacter.SetBaseFaction(Faction.ENEMY); Stats.ParseArrayIntoStatObject(row.base_stats, tempCharacter.baseStats); tempCharacter.spawnAreas = Utils.ParseStringToFlagEnum <AdventureArea>(row.area, '|'); EnemyRank parsedRank = (EnemyRank)Enum.Parse(typeof(EnemyRank), row.rank); EnemySize parsedSize = (EnemySize)Enum.Parse(typeof(EnemySize), row.size); tempCharacter.SetRankAndSize(parsedRank, parsedSize); int spawnRate = row.spawn_rate; string[] rangeInfo = row.area_spawn_range.Split('-'); if (rangeInfo.Length != 2) { throw new Exception("Spawn range for enemy " + row.id + " is not exactly two elements"); } int minSpawnRange = int.Parse(rangeInfo[0]); int maxSpawnRange = int.Parse(rangeInfo[1]); tempCharacter.SetSpawnValues(spawnRate, minSpawnRange, maxSpawnRange); string[] drops = row.drops == "" ? new string[] { } : row.drops.Split('|'); for (int j = 0; j < drops.Length; j++) { if (!ItemId.IsValid(drops[j])) { throw new Exception("Item drop id '" + drops[j] + "' is not valid"); } } int dropRate = 9; if (row.drop_rate != "default") { dropRate = int.Parse(row.drop_rate); } tempCharacter.SetItemDrops(dropRate, drops); tempCharacter.SetVisualValues(row.fps, row.frames, row.shadow_size, row.shadow_offset, row.fade_amt); tempCharacter.SetFlightValue(row.fly_height, row.fly_speed); CharacterFlags flags = Utils.ParseStringToFlagEnum <CharacterFlags>(row.flags, ','); flags |= CharacterFlags.CANT_DEFEND; tempCharacter.SetFlags(flags); tempCharacter.SetVariableTargetPreference(row.variable_target_preference); if (row.skills.Length > 0) { tempCharacter.SetBaseSkills(row.skills.Split(',')); } //was the cant strike flag set? only allow this if the enemy has at least one other skill that costs 0 mp if (tempCharacter.FlagIsSet(CharacterFlags.CANT_STRIKE)) { if (tempCharacter.baseSkills[0].mpCost != 0) { throw new Exception("0 mp Default skill not provided for enemy " + row.id + " (cant_strike flag set)"); } } enemyCollection.Add(tempCharacter.id, tempCharacter); characterCollection.Add(tempCharacter.id, tempCharacter); } enemyCollectionList = enemyCollection.Values.ToList(); if (enemyCollection.Count > GameContext.MAX_NUM_ENEMIES_SUPPPORTED) { throw new Exception("Loaded " + enemyCollection.Count + " enemy types but game only allows a max of " + GameContext.MAX_NUM_ENEMIES_SUPPPORTED); } }
public void SetRankAndSize(EnemyRank inRank, EnemySize inSize) { rank = inRank; size = inSize; }