bool EliteEnemyShip::update(XMFLOAT3 pos, ID3D11Device* device) { bool ret = false; advance(); if (damageFrames > 0) damageFrames--; for (unsigned int i = 0; i < bullets.size(); i++) { Bullet* b = bullets.at(i); b->advance(); if (b->getFrames() == 0) { bullets.erase(remove(bullets.begin(), bullets.end(), b), bullets.end()); delete b; } } XMFLOAT3 bpos = body->getPos(); if ((bpos.x-pos.x)*(bpos.x-pos.x) + (bpos.y-pos.y)*(bpos.y-pos.y) + (bpos.z-pos.z)*(bpos.z-pos.z) < 2500) { if (shootingFrames == 0) { fireLaser(pos, device); shootingFrames = 75; ret = true; } else shootingFrames--; } return ret; }
void WeaponRack::internalOnEvent(EventIdT action, Property::Value payload, GameHandle module, GameHandle sender) { switch(action) { case ID::GOE_FIRE_ROCKET: fireRocket(); break; case ID::GOE_FIRE_LASER: fireLaser(); break; case ID::GOE_SET_WEAPON_TARGET: mTarget = payload; infolog << "WeaponRack_New Target: " << mTarget; break; case ID::GOE_REINITIALIZE: mRocketAmmo = ROCKET_AMMO_START_AMOUNT_FOR_TESTING; updateGuiAmmo(); break; default: throw std::logic_error("un nu?"); } }
void Player::update() { fireLaser(); handleInput(); m_velocity = handleMovement(); m_position += m_velocity; handleCollisions(); //std::cout << "Enemy Size: " << EnemyManager::instance()->getEnemies().size() << "\n"; //std::cout << "Asteroid Size: " << AsteroidManagement::instance()->getAsteroids().size() << "\n"; //std::cout << "PLayer Laser Size: " << LaserHandler::instance()->getPlayerLasers().size() << "\n"; //std::cout << "Enemy Laser Size: " << LaserHandler::instance()->getEnemyLasers().size() << "\n\n\n"; }
// performs move on this state, assumes move is valid // any move it makes is valid, of course // because gen() performs validation of moves // before adding to the vector of moves void KhetState::imake(KhetMove mv) { //move piece KhetPiece targetPiece = board[mv.toFile][mv.toRank]; if (targetPiece.type != EMPTY && mv.fromRot == mv.toRot) {//if its rotation target wont be empty assert(mv.piece.type == SCARAB); assert(targetPiece.type == ANUBIS || targetPiece.type == PYRAMID); //scarab swap board[mv.fromFile][mv.fromRank] = targetPiece; board[mv.toFile][mv.toRank] = mv.piece; } else { board[mv.fromFile][mv.fromRank].type = EMPTY; board[mv.toFile][mv.toRank] = mv.piece; board[mv.toFile][mv.toRank].rot = (Rotation)mv.toRot;//mv.piece is original piece } key = hashBoard(); //shoot laser KhetPiece sph; int tFile; int tRank; //set inital laser location if(ctm == SILVER) { sph = board[9][0]; tFile = 9; tRank = 0; } else { sph = board[0][7]; tFile = 0; tRank = 7; } assert(board[tFile][tRank].type == SPHINX && board[tFile][tRank].color == ctm); Rotation laserDir = sph.rot; LaserHitInfo laserHitInfo = fireLaser(board, tFile, tRank, laserDir, 0, 0); //piece is to be removed from board //handle it approrpiately targetPiece = laserHitInfo.hitPiece; tFile = laserHitInfo.hitFile; tRank = laserHitInfo.hitRank; switch(targetPiece.type) { case ANUBIS: //anubis can take hit on front if(!isOppositeDirections(laserHitInfo.laserDir, targetPiece.rot)) { board[tFile][tRank].type = EMPTY; } break; case PHAROAH: board[tFile][tRank].type = EMPTY; gameOver = true; winner = (targetPiece.color == RED) ? SILVER : RED; break; case PYRAMID: board[tFile][tRank].type = EMPTY; break; case SCARAB: cout << "ERROR: scarab being removed" << endl; break; case SPHINX://sphinx cant be affected break; case EMPTY: break; default: cout << "Unknown laser target " << targetPiece.type << endl; } //change player ctm = (ctm == RED) ? SILVER : RED; }