Exemplo n.º 1
0
void Player::Update(float elapsed){

	//JUMP
	if (keys[SDL_SCANCODE_UP]) {
		if (!offGround) {
			SpriteSheet playerSprite = SpriteSheet(chracterTexture, 8, 4, 20);
			sprite = playerSprite;
			collidedBottom = false;
			offGround = true;
			velocityY = 2.85f;
		}

	}
	//Move right
	if (keys[SDL_SCANCODE_RIGHT]) {
		SpriteSheet playerSprite = SpriteSheet(chracterTexture, 8, 4, 17);
		sprite = playerSprite;
		direction = 1;
		accelerationX = 10.0f * direction;
	}
	//Move left
	else if (keys[SDL_SCANCODE_LEFT]) {
		SpriteSheet playerSprite = SpriteSheet(chracterTexture, 8, 4, 18);
		sprite = playerSprite;
		direction = -1;
		accelerationX = 10.0f * direction;
	}
	//Standing still
	else {
		velocityX = 0.0f;
		accelerationX = 0.0f;
	}
}
Exemplo n.º 2
0
void SideScroller::updateGameLevel(float elapsed) {
	// keyboard controls
	SDL_Event event;
	while (SDL_PollEvent(&event)) {
		if (event.type == SDL_QUIT || event.type == SDL_WINDOWEVENT_CLOSE) {
			done = true;
		}
	}
	const Uint8 *keys = SDL_GetKeyboardState(NULL);
	if (keys[SDL_SCANCODE_Z]) {
		if (!entities[0]->isJumping) {
			entities[0]->jump();
		}

	}
	if (keys[SDL_SCANCODE_RIGHT]) {
		if (!entities[0]->collidedRight){
			SpriteSheet playerSprite = SpriteSheet(characterSpriteSheetTexture, 12, 8, 30);
			entities[0]->sprite = playerSprite;
			entities[0]->walkRight();
		}
	}
	else if (keys[SDL_SCANCODE_LEFT]) {
		if (!entities[0]->collidedLeft){
			SpriteSheet playerSprite = SpriteSheet(characterSpriteSheetTexture, 12, 8, 18);
			entities[0]->sprite = playerSprite;
			entities[0]->walkLeft();
		}
	}
	else {
		entities[0]->idle();
	}
}
Exemplo n.º 3
0
void CoreApp::GotoMainMenu() {
    state = MENU;
    clearColorBit = true;
    score = 0;
    lives = 3;
    player = Entity();
    player.x = GRD_LEFT + 1.5f;
    player.y = GRD_BOT + .5f;
    player.sprite = SpriteSheet(invadersTexture, 16.0f/80.0f, 16.0f/48.0f, 16.0f/80.0f, 16.0f/48.0f, 1.0f);
        // Initialize the object list to all we need
}
Exemplo n.º 4
0
void Player::Update(float elapsed){
	shootTimer -= elapsed;

	for (int i = 0; i < MAX_BULLETS; i++) {
		bullets[i].Update(elapsed);
	}

	//JUMP
	if (keys[controlls.jump]) {
		if (!offGround) {
			SpriteSheet playerSprite = SpriteSheet(chracterTexture, 8, 4, charIndex+2);
			sprite = playerSprite;
			collidedBottom = false;
			offGround = true;
			velocityY = 2.85f;
		}

	}
	//Move right
	if (keys[controlls.right]) {
		SpriteSheet playerSprite = SpriteSheet(chracterTexture, 8, 4, charIndex-1);
		sprite = playerSprite;
		direction = 1;
		accelerationX = 10.0f * direction;
	}
	//Move left
	else if (keys[controlls.left]) {
		SpriteSheet playerSprite = SpriteSheet(chracterTexture, 8, 4, charIndex);
		sprite = playerSprite;
		direction = -1;
		accelerationX = 10.0f * direction;
	}
	//Standing still
	else {
		velocityX = 0.0f;
		accelerationX = 0.0f;
	}
}
Exemplo n.º 5
0
//shoot the bullet
void Player::shootBullet(unsigned int levelTexture) {
	SpriteSheet bulletSprite = SpriteSheet(levelTexture, 16, 8, 23);
	bullets[bulletIndex].sprite = bulletSprite;
	bullets[bulletIndex].visible = true;
	bullets[bulletIndex].width = 0.15;
	bullets[bulletIndex].xPos = xPos;
	bullets[bulletIndex].yPos = yPos;
	bullets[bulletIndex].rotation = 0.0f;
	bullets[bulletIndex].velocityX = 3.5f * direction;
	bulletIndex++;
	if (bulletIndex > MAX_BULLETS - 1) {
		bulletIndex = 0;
	}
}
Exemplo n.º 6
0
Player::Player(unsigned int texture, int charIndex, const Uint8 left, const Uint8 right, const Uint8 jump, const Uint8 shoot) :chracterTexture(texture), charIndex(charIndex){
	SpriteSheet playerSprite = SpriteSheet(texture, 8, 4, charIndex);
	sprite = playerSprite;
	controlls.jump = jump;
	controlls.left = left;
	controlls.right = right;
	controlls.shoot = shoot;

	bulletIndex = 0;
	shootTimer = 0.0f;

	life = 5;
	power = 0;
}
Exemplo n.º 7
0
bool Haste::load(File* file){
	static SpriteSheet ssHaste;
	static bool loaded = false;
	if (!loaded){
		ssHaste = SpriteSheet(Vec2i(1, 1));
		if (!ssHaste.load("haste.png")){
			return false;
		}
		loaded = true;
	}
	m_sprite.setSpriteSheet(&ssHaste);
	m_sprite.loadAnimation(&ssHaste, 0, 0, 1);
	m_duration = 5.0f;
	m_timeRemaining = m_duration;

	return true;
}
Exemplo n.º 8
0
void SideScroller::Init() {
	// insert player as the first entity
	SpriteSheet playerSprite = SpriteSheet(characterSpriteSheetTexture, 12, 8, 18);
	Entity* player = new Entity();
	player->sprite = playerSprite;
	player->x = 0.0f;
	player->y = -2.5f;
	player->width = 0.2f;
	player->height = 0.2f;
	player->friction_x = 3.0f;
	player->isPlayer = true;

	entities.push_back(player);

	// build the level, aka read tile file and throw into leveldata
	buildLevel();
}
Exemplo n.º 9
0
void gameApp::RenderMainMenu()
{
	Entity ts = Entity(SpriteSheet(titlescreen, 1, 1, 1,1, 8.0f));
	ts.Draw(program);
	//implement shade in via shaders
	modelMatrix.identity();
	modelMatrix.Translate(-2.5f, 3.0f, 0.0f);
	program->setModelMatrix(modelMatrix);
	DrawText(fontSprites, "Touhou Quest", .45f, -.22f);

	modelMatrix.identity();
	modelMatrix.Translate(-2.0f, 2.4f, 0.0f);
	program->setModelMatrix(modelMatrix);
	DrawText(fontSprites, "Two Buttons To Play", .3f, -.189f);

	modelMatrix.identity();
	modelMatrix.Translate(-1.8f, 2.0f, 0.0f);
	program->setModelMatrix(modelMatrix);
	DrawText(fontSprites, "Z, X", .3f, -.189f);
	SDL_GL_SwapWindow(displayWindow);
}
Exemplo n.º 10
0
void CoreApp::GotoGame() {
    state = GAME;
    
    clearColorBit = true;
    
    enmTickCount = 0;
    enmTickWait = ENM_MOVEMENT_BASE_TICK_TIME;
    enmCurrentDirection = 1.0f;
    enmMoveDown = false;
    enmHitWall = false;
    
    player = Entity();
    player.x = GRD_LEFT + 1.5f;
    player.y = GRD_BOT + .5f;
    player.sprite = SpriteSheet(invadersTexture, 16.0f/80.0f, 16.0f/48.0f, 16.0f/80.0f, 16.0f/48.0f, 1.0f);
    
    enemies.clear();
        // Setup enemies
    for( int row = 0; row < 6; row++ ) {
        for( int column = 0; column < 6; column++ ) {
            
            Entity newEnemy = Entity();
            newEnemy.x = column + -7.0f + .8 * column; // Can't use compiler vars here.
            newEnemy.y = -row + 6.0f;
            if( row <= 1 ) {
                newEnemy.sprite = SpriteSheet(invadersTexture, 0.0f/80.0f, 0.0f/48.0f, 16.0f/80.0f, 16.0f/48.0f, 1.0f);
            } else if( row <= 3 ) {
                newEnemy.sprite = SpriteSheet(invadersTexture, 16.0f/80.0f, 0.0f/48.0f, 16.0f/80.0f, 16.0f/48.0f, 1.0f);
            } else {
                newEnemy.sprite = SpriteSheet(invadersTexture, 0.0f/80.0f, 16.0f/48.0f, 16.0f/80.0f, 16.0f/48.0f, 1.0f);
            }
            enemies.push_back(newEnemy);
            
        }
    }
    
    enmRemaining = ENM_GRID_NUM_ENEMIES;
    
    playerBullet = Entity();
    playerBullet.active = false;
    playerBullet.sprite = SpriteSheet(invadersTexture, 0.0f/80.0f, 32.0f/48.0f, 16.0f/80.0f, 16.0f/48.0f, 1.0f);
    playerBullet.hitboxHeight = .5f;
    playerBullet.hitboxWidth = .2f;
    enemyBullet = Entity();
    enemyBullet.active = false;
    enemyBullet.sprite = SpriteSheet(invadersTexture, 0.0f/80.0f, 32.0f/48.0f, 16.0f/80.0f, 16.0f/48.0f, 1.0f);
}
Exemplo n.º 11
0
void gameApp::Setup()
{
	SDL_Init(SDL_INIT_VIDEO);
	displayWindow = SDL_CreateWindow("Touhou Quests", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 880, 640, SDL_WINDOW_OPENGL);
	SDL_GLContext context = SDL_GL_CreateContext(displayWindow);
	SDL_GL_MakeCurrent(displayWindow, context);
#ifdef _WINDOWS
	glewInit();
#endif
	program = new ShaderProgram(RESOURCE_FOLDER"vertex_textured.glsl", RESOURCE_FOLDER"fragment_textured.glsl");
	glUseProgram(program->programID);
	glViewport(0, 0,880,640);
	projectionMatrix.setOrthoProjection(-4.0f, 4.0f, -4.0f, 4.0f, -1.0f, 1.0f);
	glEnable(GL_BLEND);
	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

	program->setModelMatrix(modelMatrix);
	program->setViewMatrix(viewMatrix);
	program->setProjectionMatrix(projectionMatrix);
	//loadmusic
	Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, 2, 4096);
	swordhit = Mix_LoadWAV("music/swordslash.wav");
	monsterhit = Mix_LoadWAV("music/gettinghitwave");
	interact = Mix_LoadWAV("music/upgrade.wave");
	titlemewsic = Mix_LoadMUS("music/The Flower Like the Fantasy - Phantasmagoria of Flower View.mp3");
	stagemewsic = Mix_LoadMUS("music/Mystic Oriental Dream - Ancient Temple.mp3");
	gameovermewsic = Mix_LoadMUS("music/Wingless.mp3");
	//load images
	fontSprites = LoadTexture("images/font1.png");
	shrineImg = LoadTexture("images/shrine.png");

	stagescreen = LoadTexture("images/bg.png");
	titlescreen = LoadTexture24Bit("images/title.png");

	potion = LoadTexture("images/potion.png");
	divineEdge = LoadTexture("images/divineblade.png");
	skillScroll = LoadTexture("images/skillscroll.png");
	secondChance = LoadTexture("images/secondchance.png");
	//load sprite sheet animations into arrays [oh man, this would have been easier with an even sprite sheet]
	GLuint youmu = LoadTexture("images/youmu.png");

	attack1[0] = SpriteSheet(youmu, 1425.0f / 1642.0f, 75.0f / 879.0f, 77.0f / 1642.0f, 94.0f / 879.0f, 1.11f);
	attack1[1] = SpriteSheet(youmu, 1149.0f / 1642.0f, 679.0f / 879.0f, 66.0f / 1642.0f, 122.0f / 879.0f, 1.11f);
	attack1[2] = SpriteSheet(youmu, 1254.0f / 1642.0f, 0.0f / 879.0f, 85.0f / 1642.0f, 107.0f / 879.0f, 1.11f);
	attack1[3] = SpriteSheet(youmu, 512.0f / 1642.0f, 669.0f / 879.0f, 96.0f / 1642.0f, 91.0f / 879.0f, 1.11f);
	attack1[4] = SpriteSheet(youmu, 1170.0f / 1642.0f, 599.0f / 879.0f, 68.0f / 1642.0f, 79.0f / 879.0f, 1.11f);
	attack1[5] = SpriteSheet(youmu, 1174.0f / 1642.0f, 417.0f / 879.0f, 73.0f / 1642.0f, 72.0f / 879.0f, 1.11f);
	attack1[6] = SpriteSheet(youmu, 1097.0f / 1642.0f, 528.0f / 879.0f, 72.0f / 1642.0f, 97.0f / 879.0f, 1.11f);
	attack1[7] = SpriteSheet(youmu, 1477.0f / 1642.0f, 170.0f / 879.0f, 71.0f / 1642.0f, 100.0f / 879.0f, 1.11f);
	attack1[8] = SpriteSheet(youmu, 1507.0f / 1642.0f, 0.0f / 879.0f, 77.0f / 1642.0f, 92.0f / 879.0f, 1.11f);
	attack1[9] = SpriteSheet(youmu, 1503.0f / 1642.0f, 93.0f / 879.0f, 76.0f / 1642.0f, 75.0f / 879.0f, 1.11f);
	attack1[10] = SpriteSheet(youmu, 1124.0f / 1642.0f, 802.0f / 879.0f, 66.0f / 1642.0f, 77.0f / 879.0f, 1.11f);

	attack2[0] = SpriteSheet(youmu, 1457.0f / 1642.0f, 372.0f / 879.0f, 66.0f / 1642.0f, 123.0f / 879.0f, 1.11f);
	attack2[1] = SpriteSheet(youmu, 1322.0f / 1642.0f, 176.0f / 879.0f, 77.0f / 1642.0f, 105.0f / 879.0f, 1.11f);
	attack2[2] = SpriteSheet(youmu, 0.0f / 1642.0f, 652.0f / 879.0f, 105.0f / 1642.0f, 79.0f / 879.0f, 1.11f);
	attack2[3] = SpriteSheet(youmu, 213.0f / 1642.0f, 587.0f / 879.0f, 102.0f / 1642.0f, 81.0f / 879.0f, 1.11f);
	attack2[4] = SpriteSheet(youmu, 0.0f / 1642.0f, 358.0f / 879.0f, 135.0f / 1642.0f, 82.0f / 879.0f, 1.11f);
	attack2[5] = SpriteSheet(youmu, 226.0f / 1642.0f, 113.0f / 879.0f, 161.0f / 1642.0f, 68.0f / 879.0f, 1.11f);
	attack2[6] = SpriteSheet(youmu, 359.0f / 1642.0f, 182.0f / 879.0f, 149.0f / 1642.0f, 70.0f / 879.0f, 1.11f);
	attack2[7] = SpriteSheet(youmu, 0.0f / 1642.0f, 213.0f / 879.0f, 144.0f / 1642.0f, 72.0f / 879.0f, 1.11f);
	attack2[8] = SpriteSheet(youmu, 136.0f / 1642.0f, 437.0f / 879.0f, 123.0f / 1642.0f, 74.0f / 879.0f, 1.11f);
	attack2[9] = SpriteSheet(youmu, 739.0f / 1642.0f, 392.0f / 879.0f, 107.0f / 1642.0f, 70.0f / 879.0f, 1.11f);
	attack2[10] = SpriteSheet(youmu, 0.0f / 1642.0f, 580.0f / 879.0f, 106.0f / 1642.0f, 71.0f / 879.0f, 1.11f);
	attack2[11] = SpriteSheet(youmu, 1400.0f / 1642.0f, 253.0f / 879.0f, 71.0f / 1642.0f, 73.0f / 879.0f, 1.11f);
	attack2[12] = SpriteSheet(youmu, 982.0f / 1642.0f, 793.0f / 879.0f, 68.0f / 1642.0f, 77.0f / 879.0f, 1.11f);

	attack3[0] = SpriteSheet(youmu, 989.0f / 1642.0f, 0.0f / 879.0f, 88.0f / 1642.0f, 81.0f / 879.0f, 1.11f);
	attack3[1] = SpriteSheet(youmu, 762.0f / 1642.0f, 80.0f / 879.0f, 112.0f / 1642.0f, 85.0f / 879.0f, 1.11f);
	attack3[2] = SpriteSheet(youmu, 1017.0f / 1642.0f, 428.0f / 879.0f, 79.0f / 1642.0f, 107.0f / 879.0f, 1.11f);
	attack3[3] = SpriteSheet(youmu, 214.0f / 1642.0f, 512.0f / 879.0f, 105.0f / 1642.0f, 74.0f / 879.0f, 1.11f);
	attack3[4] = SpriteSheet(youmu, 320.0f / 1642.0f, 509.0f / 879.0f, 102.0f / 1642.0f, 71.0f / 879.0f, 1.11f);
	attack3[5] = SpriteSheet(youmu, 423.0f / 1642.0f, 509.0f / 879.0f, 101.0f / 1642.0f, 68.0f / 879.0f, 1.11f);
	attack3[6] = SpriteSheet(youmu, 210.0f / 1642.0f, 752.0f / 879.0f, 101.0f / 1642.0f, 68.0f / 879.0f, 1.11f);
	attack3[7] = SpriteSheet(youmu, 619.0f / 1642.0f, 437.0f / 879.0f, 109.0f / 1642.0f, 71.0f / 879.0f, 1.11f);
	attack3[8] = SpriteSheet(youmu, 1292.0f / 1642.0f, 345.0f / 879.0f, 71.0f / 1642.0f, 73.0f / 879.0f, 1.11f);
	attack3[9] = SpriteSheet(youmu, 1319.0f / 1642.0f, 423.0f / 879.0f, 68.0f / 1642.0f, 77.0f / 879.0f, 1.11f);

	attack4[0] = SpriteSheet(youmu, 107.0f / 1642.0f, 512.0f / 879.0f,	106.0f / 1642.0f, 67.0f / 879.0f, 1.11f);
	attack4[1] = SpriteSheet(youmu, 800.0f / 1642.0f, 716.0f / 879.0f, 106.0f / 1642.0f, 74.0f / 879.0f, 1.11f);
	attack4[2] = SpriteSheet(youmu, 1340.0f / 1642.0f, 83.0f / 879.0f, 81.0f / 1642.0f, 91.0f / 879.0f, 1.11f);
	attack4[3] = SpriteSheet(youmu, 1316.0f / 1642.0f, 282.0f / 879.0f, 73.0f / 1642.0f, 62.0f / 879.0f, 1.11f);
	attack4[4] = SpriteSheet(youmu, 395.0f / 1642.0f, 253.0f / 879.0f, 118.0f / 1642.0f, 108.0f / 879.0f, 1.11f);
	attack4[5] = SpriteSheet(youmu, 1067.0f / 1642.0f, 164.0f / 879.0f, 85.0f / 1642.0f, 108.0f / 879.0f, 1.11f);
	attack4[6] = SpriteSheet(youmu, 1174.0f / 1642.0f, 490.0f / 879.0f, 70.0f / 1642.0f, 108.0f / 879.0f, 1.11f);
	attack4[7] = SpriteSheet(youmu, 1191.0f / 1642.0f, 802.0f / 879.0f, 64.0f / 1642.0f, 67.0f / 879.0f, 1.11f);
	attack4[8] = SpriteSheet(youmu, 1388.0f / 1642.0f, 423.0f / 879.0f, 68.0f / 1642.0f, 60.0f / 879.0f, 1.11f);
	attack4[9] = SpriteSheet(youmu, 199.0f / 1642.0f, 821.0f / 879.0f, 72.0f / 1642.0f, 54.0f / 879.0f, 1.11f);

	block[0] = SpriteSheet(youmu, 609.0f / 1642.0f, 675.0f / 879.0f, 95.0f / 1642.0f, 81.0f / 879.0f, 1.11f);
	block[1] = SpriteSheet(youmu, 1455.0f / 1642.0f, 570.0f / 879.0f, 63.0f / 1642.0f, 102.0f / 879.0f, 1.11f);

	crit[0] = SpriteSheet(youmu, 1541.0f / 1642.0f, 290.0f / 879.0f, 67.0f / 1642.0f, 80.0f / 879.0f, 1.11f);
	crit[1] = SpriteSheet(youmu, 705.0f / 1642.0f, 716.0f / 879.0f, 94.0f / 1642.0f, 79.0f / 879.0f, 1.11f);
	crit[2] = SpriteSheet(youmu, 1239.0f / 1642.0f, 599.0f / 879.0f, 67.0f / 1642.0f, 98.0f / 879.0f, 1.11f);
	crit[3] = SpriteSheet(youmu, 1472.0f / 1642.0f, 271.0f / 879.0f, 68.0f / 1642.0f, 100.0f / 879.0f, 1.11f);
	crit[4] = SpriteSheet(youmu, 1006.0f / 1642.0f, 633.0f / 879.0f, 72.0f / 1642.0f, 74.0f / 879.0f, 1.11f);
	crit[5] = SpriteSheet(youmu, 1248.0f / 1642.0f, 419.0f / 879.0f, 70.0f / 1642.0f, 72.0f / 879.0f, 1.11f);
	crit[6] = SpriteSheet(youmu, 609.0f / 1642.0f, 757.0f / 879.0f, 94.0f / 1642.0f, 96.0f / 879.0f, 1.11f);
	crit[7] = SpriteSheet(youmu, 723.0f / 1642.0f, 547.0f / 879.0f, 95.0f / 1642.0f, 91.0f / 879.0f, 1.11f);
	crit[8] = SpriteSheet(youmu, 877.0f / 1642.0f, 0.0f / 879.0f, 111.0f / 1642.0f, 91.0f / 879.0f, 1.11f);
	crit[9] = SpriteSheet(youmu, 1425.0f / 1642.0f, 0.0f / 879.0f, 81.0f / 1642.0f, 74.0f / 879.0f, 1.11f);
	crit[10] = SpriteSheet(youmu, 1582.0f / 1642.0f, 582.0f / 879.0f, 59.0f / 1642.0f, 76.0f / 879.0f, 1.11f);
	crit[11] = SpriteSheet(youmu, 1400.0f / 1642.0f, 175.0f / 879.0f, 76.0f / 1642.0f, 77.0f / 879.0f, 1.11f);
	crit[12] = SpriteSheet(youmu, 963.0f / 1642.0f, 247.0f / 879.0f, 86.0f / 1642.0f, 80.0f / 879.0f, 1.11f);

	criteffect[0] = SpriteSheet(youmu, 312.0f / 1642.0f, 751.0f / 879.0f, 99.0f / 1642.0f, 80.0f / 879.0f, 1.11f);
	criteffect[1] = SpriteSheet(youmu, 850.0f / 1642.0f, 376.0f / 879.0f, 106.0f / 1642.0f, 87.0f / 879.0f, 1.11f);
	criteffect[2] = SpriteSheet(youmu, 628.0f / 1642.0f, 347.0f / 879.0f, 110.0f / 1642.0f, 89.0f / 879.0f, 1.11f);
	criteffect[3] = SpriteSheet(youmu, 514.0f / 1642.0f, 261.0f / 879.0f, 113.0f / 1642.0f, 94.0f / 879.0f, 1.11f);
	criteffect[4] = SpriteSheet(youmu, 392.0f / 1642.0f, 362.0f / 879.0f, 114.0f / 1642.0f, 98.0f / 879.0f, 1.11f);
	criteffect[5] = SpriteSheet(youmu, 641.0f / 1642.0f, 101.0f / 879.0f, 115.0f / 1642.0f, 99.0f / 879.0f, 1.11f);
	criteffect[6] = SpriteSheet(youmu, 642.0f / 1642.0f, 0.0f / 879.0f, 119.0f / 1642.0f, 100.0f / 879.0f, 1.11f);
	criteffect[7] = SpriteSheet(youmu, 269.0f / 1642.0f, 344.0f / 879.0f, 122.0f / 1642.0f, 97.0f / 879.0f, 1.11f);
	criteffect[8] = SpriteSheet(youmu, 396.0f / 1642.0f, 49.0f / 879.0f, 122.0f / 1642.0f, 93.0f / 879.0f, 1.11f);
	criteffect[9] = SpriteSheet(youmu, 270.0f / 1642.0f, 253.0f / 879.0f, 124.0f / 1642.0f, 90.0f / 879.0f, 1.11f);
	criteffect[10] = SpriteSheet(youmu, 519.0f / 1642.0f, 0.0f / 879.0f, 122.0f / 1642.0f, 88.0f / 879.0f, 1.11f);
	criteffect[11] = SpriteSheet(youmu, 519.0f / 1642.0f, 89.0f / 879.0f, 121.0f / 1642.0f, 87.0f / 879.0f, 1.11f);
	criteffect[12] = SpriteSheet(youmu, 514.0f / 1642.0f, 177.0f / 879.0f, 117.0f / 1642.0f, 83.0f / 879.0f, 1.11f);

	death[0] = SpriteSheet(youmu, 0.0f / 1642.0f, 814.0f / 879.0f, 102.0f / 1642.0f, 52.0f / 879.0f, 1.11f);
	death[1] = SpriteSheet(youmu, 369.0f / 1642.0f, 461.0f / 879.0f, 107.0f / 1642.0f, 47.0f / 879.0f, 1.11f);

	encounter[0] = SpriteSheet(youmu, 757.0f / 1642.0f, 166.0f / 879.0f, 111.0f / 1642.0f, 72.0f / 879.0f, 1.11f);
	encounter[1] = SpriteSheet(youmu, 412.0f / 1642.0f, 744.0f / 879.0f, 97.0f / 1642.0f, 76.0f / 879.0f, 1.11f);
	encounter[2] = SpriteSheet(youmu, 1078.0f / 1642.0f, 82.0f / 879.0f, 87.0f / 1642.0f, 71.0f / 879.0f, 1.11f);
	encounter[3] = SpriteSheet(youmu, 855.0f / 1642.0f, 313.0f / 879.0f, 107.0f / 1642.0f, 62.0f / 879.0f, 1.11f);
	encounter[4] = SpriteSheet(youmu, 260.0f / 1642.0f, 442.0f / 879.0f, 108.0f / 1642.0f, 61.0f / 879.0f, 1.11f);
	encounter[5] = SpriteSheet(youmu, 855.0f / 1642.0f, 241.0f / 879.0f, 107.0f / 1642.0f, 71.0f / 879.0f, 1.11f);
	encounter[6] = SpriteSheet(youmu, 523.0f / 1642.0f, 591.0f / 879.0f, 98.0f / 1642.0f, 77.0f / 879.0f, 1.11f);
	
	flashstepEff[0] = SpriteSheet(youmu, 103.0f / 1642.0f, 815.0f / 879.0f, 95.0f / 1642.0f, 60.0f / 879.0f, 1.11f);
	flashstepEff[1] = SpriteSheet(youmu, 203.0f / 1642.0f, 182.0f / 879.0f, 155.0f / 1642.0f, 63.0f / 879.0f, 1.11f);
	flashstepEff[2] = SpriteSheet(youmu, 0.0f / 1642.0f, 50.0f / 879.0f, 231.0 / 1642.0f, 61.0f / 879.0f, 1.11f);
	flashstepEff[3] = SpriteSheet(youmu, 0.0f / 1642.0f, 0.0f / 879.0f, 249.0f / 1642.0f, 49.0f / 879.0f, 1.11f);
	flashstepEff[4] = SpriteSheet(youmu, 0.0f / 1642.0f, 112.0f / 879.0f, 225.0f / 1642.0f, 45.0f / 879.0f, 1.11f);
	flashstepEff[5] = SpriteSheet(youmu, 250.0f / 1642.0f, 0.0f / 879.0f, 197.0f / 1642.0f, 48.0f / 879.0f, 1.11f);
	flashstepEff[6] = SpriteSheet(youmu, 0.0f / 1642.0f, 158.0f / 879.0f, 202.0f / 1642.0f, 54.0f / 879.0f, 1.11f);
	flashstepEff[7] = SpriteSheet(youmu, 232.0f / 1642.0f, 50.0f / 879.0f, 163.0f / 1642.0f, 62.0f / 879.0f, 1.11f);
	flashstepEff[8] = SpriteSheet(youmu, 0.0f / 1642.0f, 286.0f / 879.0f, 141.0f / 1642.0f, 71.0f / 879.0f, 1.11f);
	flashstepEff[9] = SpriteSheet(youmu, 719.0f / 1642.0f, 639.0f / 879.0f, 95.0f / 1642.0f, 76.0f / 879.0f, 1.11f);
	
	flashstep[0] = SpriteSheet(youmu, 762.0f / 1642.0f, 0.0f / 879.0f, 114.0f / 1642.0f, 79.0f / 879.0f, 1.11f);
	flashstep[1] = SpriteSheet(youmu, 704.0f / 1642.0f, 796.0f / 879.0f, 93.0f / 1642.0f, 75.0f / 879.0f, 1.11f);
	flashstep[2] = SpriteSheet(youmu, 1153.0f / 1642.0f, 176.0f / 879.0f, 84.0f / 1642.0f, 71.0f / 879.0f, 1.11f);
	flashstep[3] = SpriteSheet(youmu, 1253.0f / 1642.0f, 108.0f / 879.0f, 84.0f / 1642.0f, 67.0f / 879.0f, 1.11f);
	flashstep[4] = SpriteSheet(youmu, 1455.0f / 1642.0f, 496.0f / 879.0f, 65.0f / 1642.0f, 73.0f / 879.0f, 1.11f);
	flashstep[5] = SpriteSheet(youmu, 1580.0f / 1642.0f, 93.0f / 879.0f, 59.0f / 1642.0f, 74.0f / 879.0f, 1.11f);
	flashstep[6] = SpriteSheet(youmu, 893.0f / 1642.0f, 715.0f / 879.0f, 91.0f / 1642.0f, 63.0f / 879.0f, 1.11f);
	flashstep[7] = SpriteSheet(youmu, 142.0f / 1642.0f, 286.0f / 879.0f, 127.0f / 1642.0f, 57.0f / 879.0f, 1.11f);
	flashstep[8] = SpriteSheet(youmu, 0.0f / 1642.0f, 441.0f / 879.0f, 117.0f / 1642.0f, 57.0f / 879.0f, 1.11f);
	flashstep[9] = SpriteSheet(youmu, 1017.0f / 1642.0f, 536.0f / 879.0f, 76.0f / 1642.0f, 96.0f / 879.0f, 1.11f);
	flashstep[10] = SpriteSheet(youmu, 1167.0f / 1642.0f, 0.0f / 879.0f, 86.0f / 1642.0f, 92.0f / 879.0f, 1.11f);
	flashstep[11] = SpriteSheet(youmu, 1153.0f / 1642.0f, 248.0f / 879.0f, 83.0f / 1642.0f, 75.0f / 879.0f, 1.11f);
	flashstep[12] = SpriteSheet(youmu, 985.0f / 1642.0f, 715.0f / 879.0f, 70.0f / 1642.0f, 77.0f / 879.0f, 1.11f);

	idle[0] = SpriteSheet(youmu, 819.0f / 1642.0f, 631.0f / 879.0f, 93.0f / 1642.0f, 81.0f / 879.0f, 1.11f);
	idle[1] = SpriteSheet(youmu, 914.0f / 1642.0f, 548.0f / 879.0f, 93.0f / 1642.0f, 81.0f / 879.0f, 1.11f);
	idle[2] = SpriteSheet(youmu, 826.0f / 1642.0f, 464.0f / 879.0f, 95.0f / 1642.0f, 80.0f / 879.0f, 1.11f);
	idle[3] = SpriteSheet(youmu, 412.0f / 1642.0f, 663.0f / 879.0f, 99.0f / 1642.0f, 80.0f / 879.0f, 1.11f);
	idle[4] = SpriteSheet(youmu, 107.0f / 1642.0f, 580.0f / 879.0f, 105.0f / 1642.0f, 79.0f / 879.0f, 1.11f);
	idle[5] = SpriteSheet(youmu, 745.0f / 1642.0f, 239.0f / 879.0f, 109.0f / 1642.0f, 78.0f / 879.0f, 1.11f);
	idle[6] = SpriteSheet(youmu, 0.0f / 1642.0f, 499.0f / 879.0f, 106.0f / 1642.0f, 80.0f / 879.0f, 1.11f);
	idle[7] = SpriteSheet(youmu, 320.0f / 1642.0f, 581.0f / 879.0f, 101.0f / 1642.0f, 81.0f / 879.0f, 1.11f);

	dash[0] = SpriteSheet(youmu, 632.0f / 1642.0f, 201.0f / 879.0f, 112.0f / 1642.0f, 71.0f / 879.0f, 1.11f);
	dash[1] = SpriteSheet(youmu, 740.0f / 1642.0f,318.0f / 879.0f, 109.0f / 1642.0f, 73.0f / 879.0f, 1.11f);
	dash[2] = SpriteSheet(youmu, 507.0f / 1642.0f, 433.0f / 879.0f, 111.0f / 1642.0f, 72.0f / 879.0f, 1.11f);
	dash[3] = SpriteSheet(youmu, 875.0f / 1642.0f, 92.0f / 879.0f, 111.0f / 1642.0f, 71.0f / 879.0f, 1.11f);
	dash[4] = SpriteSheet(youmu, 507.0f / 1642.0f, 362.0f / 879.0f, 112.0f / 1642.0f, 70.0f / 879.0f, 1.11f);
	dash[5] = SpriteSheet(youmu, 869.0f / 1642.0f, 166.0f / 879.0f, 109.0f / 1642.0f, 74.0f / 879.0f, 1.11f);
	dash[6] = SpriteSheet(youmu, 628.0f / 1642.0f, 273.0f / 879.0f, 111.0f / 1642.0f, 73.0f / 879.0f, 1.11f);

	skillSplit[0] = SpriteSheet(youmu, 893.0f / 1642.0f, 779.0f / 879.0f, 88.0f / 1642.0f, 82.0f / 879.0f, 1.11f);
	skillSplit[1] = SpriteSheet(youmu, 1215.0f / 1642.0f, 332.0f / 879.0f, 76.0f / 1642.0f, 84.0f / 879.0f, 1.11f);
	skillSplit[2] = SpriteSheet(youmu, 1056.0f / 1642.0f, 753.0f / 879.0f, 67.0f / 1642.0f, 101.0f / 879.0f, 1.11f);
	skillSplit[3] = SpriteSheet(youmu, 1254.0f / 1642.0f, 492.0f / 879.0f, 68.0f / 1642.0f, 104.0f / 879.0f, 1.11f);
	skillSplit[4] = SpriteSheet(youmu, 1347.0f / 1642.0f, 706.0f / 879.0f, 63.0f / 1642.0f, 101.0f / 879.0f, 1.11f);
	skillSplit[5] = SpriteSheet(youmu, 1411.0f / 1642.0f, 697.0f / 879.0f, 62.0f / 1642.0f, 94.0f / 879.0f, 1.11f);
	skillSplit[6] = SpriteSheet(youmu, 1382.0f / 1642.0f, 604.0f / 879.0f, 64.0f / 1642.0f, 92.0f / 879.0f, 1.11f);
	skillSplit[7] = SpriteSheet(youmu, 1524.0f / 1642.0f, 376.0f / 879.0f, 66.0f / 1642.0f, 90.0f / 879.0f, 1.11f);
	skillSplit[8] = SpriteSheet(youmu, 1237.0f / 1642.0f, 248.0f / 879.0f, 78.0f / 1642.0f, 83.0f / 879.0f, 1.11f);
	skillSplit[9] = SpriteSheet(youmu, 1166.0f / 1642.0f, 93.0f / 879.0f, 85.0f / 1642.0f, 82.0f / 879.0f, 1.11f);
	skillSplit[0] = SpriteSheet(youmu, 979.0f / 1642.0f, 164.0f / 879.0f, 87.0f / 1642.0f, 82.0f / 879.0f, 1.11f);

	split = SpriteSheet(youmu, 106.0f / 1642.0f, 660.0f / 879.0f, 103.0f / 1642.0f, 154.0f / 879.0f, 1.11f);
	
	eoGeom[0] = SpriteSheet(youmu, 1340.0f / 1642.0f, 0.0f / 879.0f, 84.0f / 1642.0f, 82.0f / 879.0f, 1.11f);
	eoGeom[1] = SpriteSheet(youmu, 1097.0f / 1642.0f, 428.0f / 879.0f, 76.0f / 1642.0f, 99.0f / 879.0f, 1.11f);
	eoGeom[2] = SpriteSheet(youmu, 1314.0f / 1642.0f, 501.0f / 879.0f, 67.0f / 1642.0f, 121.0f / 879.0f, 1.11f);
	eoGeom[3] = SpriteSheet(youmu, 1549.0f / 1642.0f, 169.0f / 879.0f, 68.0f / 1642.0f, 120.0f / 879.0f, 1.11f);
	eoGeom[4] = SpriteSheet(youmu, 1283.0f / 1642.0f, 706.0f / 879.0f, 63.0f / 1642.0f, 120.0f / 879.0f, 1.11f);
	eoGeom[5] = SpriteSheet(youmu, 1519.0f / 1642.0f, 583.0f / 879.0f, 62.0f / 1642.0f, 119.0f / 879.0f, 1.11f);
	eoGeom[6] = SpriteSheet(youmu, 1524.0f / 1642.0f, 463.0f / 879.0f, 64.0f / 1642.0f, 119.0f / 879.0f, 1.11f);
	eoGeom[7] = SpriteSheet(youmu, 1388.0f / 1642.0f, 484.0f / 879.0f, 66.0f / 1642.0f, 119.0f / 879.0f, 1.11f);
	eoGeom[8] = SpriteSheet(youmu, 1079.0f / 1642.0f, 633.0f / 879.0f, 69.0f / 1642.0f, 119.0f / 879.0f, 1.11f);
	eoGeom[9] = SpriteSheet(youmu, 963.0f / 1642.0f, 328.0f / 879.0f, 84.0f / 1642.0f, 87.0f / 879.0f, 1.11f);
	eoGeom[10] = SpriteSheet(youmu, 1050.0f / 1642.0f, 273.0f / 879.0f, 84.0f / 1642.0f, 82.0f / 879.0f, 1.11f);
	eoGeom[11] = SpriteSheet(youmu, 312.0f / 1642.0f, 669.0f / 879.0f, 99.0f / 1642.0f, 81.0f / 879.0f, 1.11f);
	eoGeom[12] = SpriteSheet(youmu, 423.0f / 1642.0f, 578.0f / 879.0f, 99.0f / 1642.0f, 81.0f / 879.0f, 1.11f);
	eoGeom[13] = SpriteSheet(youmu, 989.0f / 1642.0f, 82.0f / 879.0f, 88.0f / 1642.0f, 81.0f / 879.0f, 1.11f);
	eoGeom[14] = SpriteSheet(youmu, 1216.0f / 1642.0f, 698.0f / 879.0f, 66.0f / 1642.0f, 82.0f / 879.0f, 1.11f);
	eoGeom[15] = SpriteSheet(youmu, 1411.0f / 1642.0f, 792.0f / 879.0f, 61.0f / 1642.0f, 80.0f / 879.0f, 1.11f);
	eoGeom[16] = SpriteSheet(youmu, 1048.0f / 1642.0f, 356.0f / 879.0f, 83.0f / 1642.0f, 71.0f / 879.0f, 1.11f);
	eoGeom[17] = SpriteSheet(youmu, 914.0f / 1642.0f, 630.0f / 879.0f, 91.0f / 1642.0f, 84.0f / 879.0f, 1.11f);
	eoGeom[18] = SpriteSheet(youmu, 729.0f / 1642.0f, 463.0f / 879.0f, 96.0f / 1642.0f, 93.0f / 879.0f, 1.11f);
	eoGeom[19] = SpriteSheet(youmu, 819.0f / 1642.0f, 547.0f / 879.0f, 94.0f / 1642.0f, 83.0f / 879.0f, 1.11f);
	
	callsword = SpriteSheet(youmu, 142.0f / 1642.0f, 334.0f / 879.0f, 126.0f / 1642.0f, 92.0f / 879.0f, 1.11f);

	takedamage[0] = SpriteSheet(youmu, 410.0f / 1642.0f, 547.0f / 761.0f, 96.0f / 1642.0f, 81.0f / 879.0f, 1.11f);
	takedamage[1] = SpriteSheet(youmu, 1364.0f / 1642.0f, 345.0f / 879.0f, 70.0f / 1642.0f, 77.0f / 879.0f, 1.11f);
	takedamage[2] = SpriteSheet(youmu, 1135.0f / 1642.0f, 324.0f / 879.0f, 79.0f / 1642.0f, 76.0f / 879.0f, 1.11f);

	useitem[0] = SpriteSheet(youmu, 525.0f / 1642.0f, 509.0f / 879.0f, 99.0f / 1642.0f, 81.0f / 879.0f, 1.11f);
	useitem[1] = SpriteSheet(youmu, 1078.0f / 1642.0f, 0.0f / 879.0f, 88.0f / 1642.0f, 81.0f / 879.0f, 1.11f);
	useitem[2] = SpriteSheet(youmu, 1307.0f / 1642.0f, 623.0f / 879.0f, 66.0f / 1642.0f, 82.0f / 879.0f, 1.11f);
	useitem[3] = SpriteSheet(youmu, 1474.0f / 1642.0f, 703.0f / 879.0f, 61.0f / 1642.0f, 80.0f / 879.0f, 1.11f);
	useitem[3] = SpriteSheet(youmu, 1238.0f / 1642.0f, 176.0f / 879.0f, 83.0f / 1642.0f, 71.0f / 879.0f, 1.11f);
	useitem[4] = SpriteSheet(youmu, 800.0f / 1642.0f, 791.0f / 879.0f, 91.0f / 1642.0f, 84.0f / 879.0f, 1.11f);
	useitem[5] = SpriteSheet(youmu, 622.0f / 1642.0f, 591.0f / 879.0f, 96.0f / 1642.0f, 83.0f / 879.0f, 1.11f);
	useitem[6] = SpriteSheet(youmu, 922.0f / 1642.0f, 464.0f / 879.0f, 94.0f / 1642.0f, 83.0f / 879.0f, 1.11f);
	useitem[7] = SpriteSheet(youmu, 210.0f / 1642.0f, 669.0f / 879.0f, 101.0f / 1642.0f, 82.0f / 879.0f, 1.11f);
	useitem[8] = SpriteSheet(youmu, 0.0f / 1642.0f, 732.0f / 879.0f, 104.0f / 1642.0f, 81.0f / 879.0f, 1.11f);
	useitem[9] = SpriteSheet(youmu, 625.0f / 1642.0f, 509.0f / 879.0f, 97.0f / 1642.0f, 80.0f / 879.0f, 1.11f);
}
Exemplo n.º 12
0
void MapController::loadMap(const Map& map)
{
    const auto& nodes = map.getNodes();
    for (const auto& n : nodes)
    {
        if (n.type == Category::Item)
        {
            m_items.emplace_back(n, Util::Random::value(12.f, 19.f));
        }
        else
        {
            spawn(n);
            switch (n.type)
            {
            case Category::Solid:
                m_solidDrawable.addPart(n.position, n.size, map.getPlatformImageName());
                break;

            case Category::Block:
                //m_blockSprite.setScale(n.size.x / blockTextureSize.x, n.size.y / blockTextureSize.y);
                break;
            case Category::Detail:
            {
                assert(!n.spriteSheet.empty());
                auto result = m_spriteSheets.find(n.spriteSheet);
                if (result == m_spriteSheets.end())
                {
                    //insert new sprite sheet
                    const std::string sheetName = n.spriteSheet.substr(0, n.spriteSheet.find("png")) + "json";
                    m_spriteSheets.insert(std::make_pair(n.spriteSheet, SpriteSheet("res/textures/atlases/" + sheetName)));
                    result = m_spriteSheets.find(n.spriteSheet); //hackiness to avoid default ctor for SpriteSheet
                }

                if (n.layer == Scene::RearDetail)
                {
                    m_rearDrawable.addSprite(n.spriteSheet, result->second.getFrame(n.image, n.position));
                }
                else
                {
                    //safe to assume layer is front? might not be....
                    m_frontDrawable.addSprite(n.spriteSheet, result->second.getFrame(n.image, n.position));
                }
            }
            break;
            default: break;
            }
        }
    }
    //shuffle item order
    shuffleItems();

    //load background texture based on map data
    std::string imageName = map.getBackgroundImageName();
    m_backgroundSprite.setTexture(m_textureResource.get("res/textures/map/" + imageName));
    m_backgroundSprite.setFrameSize(sf::Vector2i(m_backgroundSprite.getTexture()->getSize()));
    auto strpos = imageName.find_last_of('.');
    if(strpos != std::string::npos)
        imageName.insert(strpos, "_normal");
    m_backgroundSprite.setNormalMap(m_textureResource.get("res/textures/map/" + imageName));
    m_backgroundSprite.setShader(m_shaderResource.get(Shader::Type::NormalMap));
    m_shaderResource.get(Shader::Type::Water).setParameter("u_reflectMap", *m_backgroundSprite.getTexture());
    m_shaderResource.get(Shader::Type::WaterDrop).setParameter("u_reflectMap", *m_backgroundSprite.getTexture());
    m_shaderResource.get(Shader::Type::Metal).setParameter("u_reflectMap", *m_backgroundSprite.getTexture());

    //std::function<const sf::Texture&()> f = std::bind(&MapController::getBackgroundTexture, this);
    //Shader::UniformBinding::Ptr fb = std::make_unique<Shader::FunctionBinding<const sf::Texture&>>(m_shaderResource.get(Shader::Type::Metal), "u_reflectMap", f);
    //m_shaderResource.addBinding(fb);

    m_solidDrawable.buildShadow(m_shaderResource.get(Shader::Type::GaussianBlur));

    //generate some random hat spawns
    for(auto i = 0u; i < 40u; ++i)
    {
        m_hatSpawns.emplace_back(static_cast<float>(Util::Random::value(40, 1880)), static_cast<float>(Util::Random::value(-30, 1000)));
    }
    //remove points inside nodes
    for (const auto& n : nodes)
    {
        sf::FloatRect nodebox(n.position, n.size);
        m_hatSpawns.erase(std::remove_if(m_hatSpawns.begin(), m_hatSpawns.end(),
            [&nodebox](const sf::Vector2f& p)
        {
            return nodebox.contains(p);
        }), m_hatSpawns.end());
    }
    
    spawnHat();
}
Exemplo n.º 13
0
Player::Player(unsigned int texture) :chracterTexture(texture){
	SpriteSheet playerSprite = SpriteSheet(texture, 8, 4, 18);
	sprite = playerSprite;
}