package com.palepail.TestGame.Levels;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.Animation;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.math.Vector2;
import com.palepail.TestGame.Enemies.BossOne;
import com.palepail.TestGame.Enemies.Follower;
import com.palepail.TestGame.Enemies.LargeEnemy;
import com.palepail.TestGame.Enemies.Shooter;
import com.palepail.TestGame.Model.Entity;
import com.palepail.TestGame.Utilities.Configuration;
public class TestLevel extends Level {
Texture shipSheet;
Texture enemySheet;
Texture projectileSheet;
Texture bossSheet;
Animation enemyBasicBulletAnimation;
Animation shooterAnimation;
Animation shooterMoveAnimation;
Animation shipAnimation;
Animation shipMoveAnimation;
Animation followerAnimation;
Animation bossMoveAnimation;
Animation bossWaitAnimation;
Animation bossAttackAnimation;
TextureRegion[] bossMoveFrames;
TextureRegion[] bossWaitFrames;
TextureRegion[] bossAttackFrames;
int shipSheetTileWidth = 16;
int shipSheetTileHeight = 16;
TextureRegion[] shipFrames;
TextureRegion[] shipMoveFrames;
TextureRegion shipSlow;
TextureRegion shipBasicBullet;
TextureRegion basicExplosion;
TextureRegion Follower;
TextureRegion bomb;
TextureRegion bossHealthBar;
int enemySheetTileWidth = 32;
int enemySheetTileHeight = 32;
TextureRegion[] enemyBasicBulletFrames;
TextureRegion[] shooterMoveFrames;
TextureRegion[] shooterFrames;
TextureRegion pointsItem;
TextureRegion powerItem;
TextureRegion bombItem;
TextureRegion frameTexture;
boolean alternate = false;
public TestLevel() {
name = "Test Level";
bgm = "game";
bgmName = "Naki Oujo no Tame no Septette";
setQueues();
// =================Animations
shipSheet = new Texture(Gdx.files.internal("data/spritesheets/CharacterSheet.png"));
enemySheet = new Texture(Gdx.files.internal("data/spritesheets/EnemySheet.png"));
projectileSheet = new Texture(Gdx.files.internal("data/spritesheets/ProjectileSheet.png"));
bossSheet = new Texture(Gdx.files.internal("data/spritesheets/BossSheet.png"));
frameTexture = new TextureRegion(new Texture("data/screens/frame.png"));
// set sprite sheet to work with to shipSheet
TextureRegion[][] tmp = TextureRegion.split(shipSheet, shipSheet.getWidth() / shipSheetTileWidth * 3,
shipSheet.getHeight() / shipSheetTileHeight * 3);
shipFrames = new TextureRegion[3]; // number of frames for the animation
// counting from 0
shipMoveFrames = new TextureRegion[4];
// place all ship frames into array
//
int index = 0;
for (int i = 2; i < 3; i++) {
for (int j = 0; j < 3; j++) {
shipFrames[index++] = tmp[i][j];
}
}
// place all ship turing frams into array
index = 0;
for (int i = 3; i < 4; i++) {
for (int j = 0; j < 4; j++) {
shipMoveFrames[index++] = tmp[i][j];
}
}
index = 0;
for (int i = 3; i < 4; i++) {
for (int j = 0; j < 4; j++) {
shipMoveFrames[index++] = tmp[i][j];
}
}
shipBasicBullet = new TextureRegion(shipSheet, 64, 224, 48, 16);
shipAnimation = new Animation(.2f, shipFrames);
shipMoveAnimation = new Animation(.2f, shipMoveFrames);
// switch sprite sheet to enemySheet
tmp = TextureRegion.split(enemySheet, enemySheet.getWidth() / 16, enemySheet.getHeight() / 16);
// place enemy bulletFrames into array sprite sheet
index = 0;
enemyBasicBulletFrames = new TextureRegion[7];
for (int i = 6; i < 7; i++) {
for (int j = 8; j < 15; j++) {
enemyBasicBulletFrames[index++] = tmp[i][j];
}
}
enemyBasicBulletAnimation = new Animation(.15f, enemyBasicBulletFrames);
animations.put("enemyBasicBulletBlue", enemyBasicBulletAnimation);
// red enemy bullets
index = 0;
enemyBasicBulletFrames = new TextureRegion[7];
for (int i = 4; i < 5; i++) {
for (int j = 8; j < 15; j++) {
enemyBasicBulletFrames[index++] = tmp[i][j];
}
}
enemyBasicBulletAnimation = new Animation(.15f, enemyBasicBulletFrames);
animations.put("enemyBasicBulletRed", enemyBasicBulletAnimation);
// green enemy bullets
index = 0;
enemyBasicBulletFrames = new TextureRegion[7];
for (int i = 5; i < 6; i++) {
for (int j = 8; j < 15; j++) {
enemyBasicBulletFrames[index++] = tmp[i][j];
}
}
enemyBasicBulletAnimation = new Animation(.15f, enemyBasicBulletFrames);
animations.put("enemyBasicBulletGreen", enemyBasicBulletAnimation);
// place enemy frames into array from sprite sheet
// blue shooter animations
shooterFrames = new TextureRegion[3];
index = 0;
for (int i = 0; i < 1; i++) {
for (int j = 0; j < 3; j++) {
shooterFrames[index++] = tmp[i][j];
}
}
shooterAnimation = new Animation(.2f, shooterFrames);
animations.put("ShooterBlue", shooterAnimation);
shooterMoveFrames = new TextureRegion[3];
index = 0;
for (int i = 0; i < 1; i++) {
for (int j = 4; j < 7; j++) {
shooterMoveFrames[index++] = tmp[i][j];
}
}
shooterMoveAnimation = new Animation(.2f, shooterMoveFrames);
animations.put("ShooterBlueMove", shooterMoveAnimation);
shooterFrames = new TextureRegion[3];
index = 0;
for (int i = 1; i < 2; i++) {
for (int j = 0; j < 3; j++) {
shooterFrames[index++] = tmp[i][j];
}
}
// red shooter animation
shooterAnimation = new Animation(.2f, shooterFrames);
animations.put("ShooterRed", shooterAnimation);
shooterMoveFrames = new TextureRegion[3];
index = 0;
for (int i = 1; i < 2; i++) {
for (int j = 4; j < 7; j++) {
shooterMoveFrames[index++] = tmp[i][j];
}
}
shooterMoveAnimation = new Animation(.2f, shooterMoveFrames);
animations.put("ShooterRedMove", shooterMoveAnimation);
// green shooter animations
shooterFrames = new TextureRegion[3];
index = 0;
for (int i = 2; i < 3; i++) {
for (int j = 0; j < 3; j++) {
shooterFrames[index++] = tmp[i][j];
}
}
shooterAnimation = new Animation(.2f, shooterFrames);
animations.put("ShooterGreen", shooterAnimation);
shooterMoveFrames = new TextureRegion[3];
index = 0;
for (int i = 2; i < 3; i++) {
for (int j = 4; j < 7; j++) {
shooterMoveFrames[index++] = tmp[i][j];
}
}
shooterMoveAnimation = new Animation(.2f, shooterMoveFrames);
animations.put("ShooterGreenMove", shooterMoveAnimation);
shipSlow = new TextureRegion(projectileSheet, 288, 128, 64, 64);
Follower = new TextureRegion(enemySheet, 1, 192, 32, 32);
followerAnimation = new Animation(1f, Follower);
animations.put("FollowerRed", followerAnimation);
Follower = new TextureRegion(enemySheet, 65, 192, 32, 32);
followerAnimation = new Animation(1f, Follower);
animations.put("FollowerBlue", followerAnimation);
Follower = new TextureRegion(enemySheet, 33, 192, 32, 32);
followerAnimation = new Animation(1f, Follower);
animations.put("FollowerGreen", followerAnimation);
;
basicExplosion = new TextureRegion(enemySheet, 1, 224, 32, 32);
textures.put("basicExplosionRed", basicExplosion);
basicExplosion = new TextureRegion(enemySheet, 65, 224, 32, 32);
textures.put("basicExplosionBlue", basicExplosion);
basicExplosion = new TextureRegion(enemySheet, 33, 224, 32, 32);
textures.put("basicExplosionGreen", basicExplosion);
// place enemy bulletFrames into array sprite sheet
bossWaitFrames = new TextureRegion[4];
index = 0;
for (int j = 0; j < 4; j++) {
bossWaitFrames[index++] = new TextureRegion(bossSheet, j * 48, 0*64, 48, 64);
}
bossWaitAnimation = new Animation(.15f, bossWaitFrames);
animations.put("BossOneWait", bossWaitAnimation);
bossMoveFrames = new TextureRegion[3];
index = 0;
for (int j = 0; j < 3; j++) {
bossMoveFrames[index++] = new TextureRegion(bossSheet, j * 48, 1*64, 48, 64);
}
bossMoveAnimation = new Animation(.15f, bossMoveFrames);
animations.put("BossOneMove", bossMoveAnimation);
bossAttackFrames = new TextureRegion[4];
index = 0;
for (int j = 0; j < 4; j++) {
bossAttackFrames[index++] = new TextureRegion(bossSheet, j * 48, 2*64, 48, 64);
}
bossAttackAnimation = new Animation(.15f, bossAttackFrames);
animations.put("BossOneAttack", bossAttackAnimation);
bomb = new TextureRegion(projectileSheet, 695, 28, 256, 256);
powerItem = new TextureRegion(projectileSheet, 320, 80, 16, 16);
bombItem = new TextureRegion(projectileSheet, 336, 80, 16, 16);
pointsItem = new TextureRegion(projectileSheet, 306, 82, 12, 12);
bossHealthBar = new TextureRegion(projectileSheet, 34, 18, 14, 14);
textures.put("healthBar", bossHealthBar);
animations.put("Ship", shipAnimation);
animations.put("ShipMove", shipMoveAnimation);
textures.put("shipBasicBullet", shipBasicBullet);
textures.put("shipSlow", shipSlow);
textures.put("bomb", bomb);
textures.put("Follower", Follower);
textures.put("powerItem", powerItem);
textures.put("bombItem", bombItem);
textures.put("pointsItem", pointsItem);
textures.put("Frame", frameTexture);
}
public Level getNextLevel() {
return new LevelTwo();
}
public Animation getAnimation(String key) {
return animations.get(key);
}
public TextureRegion getTexture(String key) {
return textures.get(key);
}
protected void setQueues() {
super.setQueues();
enemyQueue.add(getFollowerLerp(5, 23, 0, 0f, Entity.VARIATION_BLUE));
enemyTimes.add(300);
enemyQueue.add(getFollowerLerp(14, 23, 0, 0f, Entity.VARIATION_BLUE));
enemyTimes.add(300);
enemyTimes.add(WAIT_FOR_ENEMIES);
enemyTimes.add(VICTORY);
}
}