Example #1
0
File: Worm.cpp Project: xy124/Spill
void CWorm::ProcessMining() {//HINT Mining without item!
	if (g_pFramework->KeyDown(m_pSettings->KeyMine)) {
		//get Block under Worm!
		CVec vec(getRect());
		vec.x += getRect().w/2;//Block UNDER worm
		CBlockKoord pos = vec.toBlockKoord();
		pos.y++;//Block UNDER worm
		CBlock* miningBlock = m_pGame->getBlock(pos);//returns NULL if for example out of Gameboard
		if (miningBlock != NULL) {
			int miningBlockTeamID = miningBlock->getTeamID();
			int miningBlockBuilderID = miningBlock->getBuilderID();
			if ( ((miningBlockTeamID == NOBODY) || (miningBlockTeamID == m_TeamID))//you can't mine other teams blocks
					&& (miningBlock->getBlockType() != CBlock::AIR) ){
				int newMoney = m_Money + CBlock::BlockCosts[miningBlock->getBlockType()]; //da blocktype sich dann ja ändert... bei buildblock
				if (m_pGame->BuildBlock(pos, CBlock::AIR, m_WormID, m_TeamID)) { //block konnte gebaut werden!:
					m_Money = newMoney;
					m_Points++;
					g_pLogfile->fTextout(BLUE, false, "Mined Block");
					//delete block from playerlist!
					if (miningBlockBuilderID != NOBODY) {
						list<CBlockKoord>::iterator it;
						for (it = m_BuiltBlocks.begin();
							(it != m_BuiltBlocks.end()) && ((*it) != pos);
							++it) /*nothing*/;
						m_BuiltBlocks.erase(it);

						//m_pGame->m_vWorms.at(miningBlockBuilderID)->m_BuiltBlocks.erase();
					}

				}
			}
		} else g_pLogfile->Textout("<br /> Couldn't mine Block because miningBlock == NULL");
	}//Keydown


	//FIXME: use keylock also for useitem keys and so on....
}