diff options
| author | Strangerke | 2019-07-26 07:54:51 +0200 | 
|---|---|---|
| committer | Eugene Sandulenko | 2019-09-03 17:17:28 +0200 | 
| commit | 29c7a6cc4aa2e4a1b715b6e2aa35d9450bb41887 (patch) | |
| tree | 5c4891d4e309f837e5162cae4aeb0ea7f70cd92e | |
| parent | becfce8bfc42d53dfa72e28e29a90fabe12f43bc (diff) | |
| download | scummvm-rg350-29c7a6cc4aa2e4a1b715b6e2aa35d9450bb41887.tar.gz scummvm-rg350-29c7a6cc4aa2e4a1b715b6e2aa35d9450bb41887.tar.bz2 scummvm-rg350-29c7a6cc4aa2e4a1b715b6e2aa35d9450bb41887.zip  | |
HDB: More clean up in ai-bots
| -rw-r--r-- | engines/hdb/ai-bots.cpp | 89 | 
1 files changed, 53 insertions, 36 deletions
diff --git a/engines/hdb/ai-bots.cpp b/engines/hdb/ai-bots.cpp index cf7a799348..3db6cd3be2 100644 --- a/engines/hdb/ai-bots.cpp +++ b/engines/hdb/ai-bots.cpp @@ -2326,7 +2326,6 @@ void aiGoodFairyAction(AIEntity *e) {  	static const int yvAhead[5] = {9,-1, 1, 0, 0};  	int	result; -	AIEntity *hit;  	if (e->sequence) {  		e->sequence--; @@ -2352,7 +2351,7 @@ void aiGoodFairyAction(AIEntity *e) {  						(g_hdb->_ai->findEntityType(AI_LIGHTBARREL, e->tileX + xv, e->tileY + yv) != NULL))  						return;  					int spawnOK; -					hit = g_hdb->_ai->legalMove(e->tileX + xv, e->tileY + yv, e->level, &spawnOK); +					AIEntity *hit = g_hdb->_ai->legalMove(e->tileX + xv, e->tileY + yv, e->level, &spawnOK);  					uint32 bg_flags = g_hdb->_map->getMapBGTileFlags(e->tileX + xv, e->tileY + yv);  					if (hit || !spawnOK || (bg_flags & kFlagSpecial))  						return; @@ -2431,7 +2430,7 @@ void aiGoodFairyAction(AIEntity *e) {  					e->moveSpeed = kPlayerMoveSpeed;  					// make sure we can move over water & white gems, but not fg_hdb->_ai->y blockers and solids -					hit = g_hdb->_ai->legalMoveOverWater(e->tileX + e->value1, e->tileY + e->value2, e->level, &result); +					AIEntity *hit = g_hdb->_ai->legalMoveOverWater(e->tileX + e->value1, e->tileY + e->value2, e->level, &result);  					if (hit && ((hit->type == ITEM_GEM_WHITE) || (hit->type == AI_GUY)))  						hit = NULL;  					uint32 bg_flags = g_hdb->_map->getMapBGTileFlags(e->tileX + e->value1, e->tileY + e->value2); @@ -2461,14 +2460,12 @@ void aiGoodFairyAction(AIEntity *e) {  		// did we run into a wall, entity, water, slime etc?  		// if so, pick a new direction!  		if (onEvenTile(e->x, e->y)) { - -			int	index;  			// did we hit a Fg_hdb->_ai->YSTONE??? if so - teleport the thing at the other end to here! -			index = g_hdb->_ai->checkFairystones(e->tileX, e->tileY); +			int index = g_hdb->_ai->checkFairystones(e->tileX, e->tileY);  			if (index >= 0) {  				int	sx, sy;  				g_hdb->_ai->getFairystonesSrc(index, &sx, &sy); -				hit = g_hdb->_ai->findEntity(sx, sy); +				AIEntity *hit = g_hdb->_ai->findEntity(sx, sy);  				if (hit && (hit != g_hdb->_ai->getPlayer())) {  					hit->tileX = e->tileX;  					hit->tileY = e->tileY; @@ -2488,7 +2485,7 @@ void aiGoodFairyAction(AIEntity *e) {  			// (1) we're gonna hit a solid wall; ok to move over water/slime  			// (2) ok to move thru white gems  			// (3) cannot move thru SPECIAL flagged tiles (fg_hdb->_ai->y blockers) -			hit = g_hdb->_ai->legalMoveOverWater(e->tileX + e->value1, e->tileY + e->value2, e->level, &result); +			AIEntity *hit = g_hdb->_ai->legalMoveOverWater(e->tileX + e->value1, e->tileY + e->value2, e->level, &result);  			uint32 bg_flags = g_hdb->_map->getMapBGTileFlags(e->tileX + e->value1, e->tileY + e->value2);  			if (!result || (hit && hit->type != ITEM_GEM_WHITE && hit->type != AI_GUY) || (bg_flags & kFlagSpecial)) {  				g_hdb->_ai->stopEntity(e); @@ -2499,9 +2496,10 @@ void aiGoodFairyAction(AIEntity *e) {  			}  		}  		g_hdb->_ai->animateEntity(e); -	} else +	} else {  		// if not, start looking around!  		e->sequence = 20; +	}  }  //------------------------------------------------------------------- @@ -2872,7 +2870,8 @@ void aiIcePuffInit(AIEntity *e) {  }  void aiIcePuffInit2(AIEntity *e) { -	e->draw = e->blinkGfx[3];	// empty frame +	// empty frame +	e->draw = e->blinkGfx[3];  }  void aiIcePuffAction(AIEntity *e) { @@ -2882,16 +2881,28 @@ void aiIcePuffAction(AIEntity *e) {  	case STATE_ICEP_PEEK:  		e->sequence--;  		switch (e->sequence) { -		case 20: e->draw = e->blinkGfx[0]; break;	// underground -		case 16: e->draw = e->blinkGfx[1]; break;	// peek - looking -		case 12: e->draw = e->blinkGfx[2]; break;	// peek - blinking -		case  8: e->draw = e->blinkGfx[1]; break;	// peek - looking -		case  4: e->draw = e->blinkGfx[0]; break;	// peek - looking -		case  3: +		case 20: // underground +			e->draw = e->blinkGfx[0]; +			break; +		case 16: // peek - looking +			e->draw = e->blinkGfx[1]; +			break; +		case 12: // peek - blinking +			e->draw = e->blinkGfx[2]; +			break; +		case 8: // peek - looking +			e->draw = e->blinkGfx[1]; +			break; +		case 4: // peek - looking +			e->draw = e->blinkGfx[0]; +			break; +		case 3:  			if (e->onScreen && !g_hdb->_rnd->getRandomNumber(5))  				g_hdb->_sound->playSound(SND_ICEPUFF_WARNING);  			break; -		case  0: e->draw = e->blinkGfx[3];			// underground +		case 0: +			// underground +			e->draw = e->blinkGfx[3];  			e->sequence = 30;  			break;  		} @@ -2954,8 +2965,10 @@ void aiIcePuffAction(AIEntity *e) {  		e->animFrame++;  		if (e->animFrame == e->standdownFrames && e->state != STATE_ICEP_DISAPPEAR) { -			e->dir2 = e->dir;				// dir2 = direction snowball is moving -			aiIcePuffSnowballInit(e);	// throw it! +			// dir2 = direction snowball is moving +			e->dir2 = e->dir; +			// throw it! +			aiIcePuffSnowballInit(e);  			e->animFrame = 0;  			e->state = STATE_ICEP_DISAPPEAR;  		} else if (e->animFrame == e->special1Frames) { @@ -2975,8 +2988,10 @@ void aiIcePuffAction(AIEntity *e) {  		e->animFrame++;  		if (e->animFrame == e->standdownFrames && e->state != STATE_ICEP_DISAPPEAR) { -			e->dir2 = e->dir;				// dir2 = direction snowball is moving -			aiIcePuffSnowballInit(e);	// throw it! +			// dir2 = direction snowball is moving +			e->dir2 = e->dir; +			// throw it! +			aiIcePuffSnowballInit(e);  			e->animFrame = 0;  			e->state = STATE_ICEP_DISAPPEAR;  		} else if (e->animFrame == e->special1Frames) { @@ -2996,8 +3011,10 @@ void aiIcePuffAction(AIEntity *e) {  		e->animFrame++;  		if (e->animFrame == e->standdownFrames && e->state != STATE_ICEP_DISAPPEAR) { -			e->dir2 = e->dir;				// dir2 = direction snowball is moving -			aiIcePuffSnowballInit(e);	// throw it! +			// dir2 = direction snowball is moving +			e->dir2 = e->dir; +			// throw it! +			aiIcePuffSnowballInit(e);  			e->animFrame = 0;  			e->state = STATE_ICEP_DISAPPEAR;  		} else if (e->animFrame == e->special1Frames) { @@ -3030,8 +3047,7 @@ void aiBuzzflyInit(AIEntity *e) {  void aiBuzzflyInit2(AIEntity *e) {  	e->draw = g_hdb->_ai->getStandFrameDir(e); -	for (int i = 0; i < e->movedownFrames; i++) -	{ +	for (int i = 0; i < e->movedownFrames; i++) {  		e->standdownGfx[i] = e->movedownGfx[i];  		e->standupGfx[i] = e->moveupGfx[i];  		e->standleftGfx[i] = e->moveleftGfx[i]; @@ -3092,7 +3108,7 @@ void aiDragonInit(AIEntity *e) {  	e->sequence = 0;	// 0 = sleeping  	e->aiAction = aiDragonAction;  	e->aiDraw = aiDragonDraw; -	e->animCycle = 10;		// time between flaps +	e->animCycle = 10;	// time between flaps  	// need to save the dragon's coords and type in the blocking entity for gem-hit-blocking detection  	AIEntity *block = spawnBlocking(e->tileX - 1, e->tileY, e->level); @@ -3128,7 +3144,8 @@ void aiDragonInit2(AIEntity *e) {  }  void aiDragonWake(AIEntity *e) { -	e->sequence = 1;	// woke up, start flapping and breathing! +	// woke up, start flapping and breathing! +	e->sequence = 1;  	e->animFrame = 0;  	e->animDelay = e->animCycle;  } @@ -3141,7 +3158,7 @@ void aiDragonAction(AIEntity *e) {  	AIEntity *p = g_hdb->_ai->getPlayer();  	switch (e->sequence) { -		// Sleeping, waiting for the player to wake him up +	// Sleeping, waiting for the player to wake him up  	case 0:  		if (e->onScreen &&  			p->tileX >= e->tileX - 1 && @@ -3157,7 +3174,7 @@ void aiDragonAction(AIEntity *e) {  		}  		break; -		// Woke up - flapping wings 3 times! +	// Woke up - flapping wings 3 times!  	case 1:  		e->animDelay--; @@ -3174,7 +3191,7 @@ void aiDragonAction(AIEntity *e) {  		}  		break; -		// Start breathing fire! +	// Start breathing fire!  	case 2:  		e->animDelay--; @@ -3192,7 +3209,7 @@ void aiDragonAction(AIEntity *e) {  		break; -		// Breathing fire! +	// Breathing fire!  	case 3:  		{  			if (hitPlayer(e->x, e->y + 32)) { @@ -3260,23 +3277,23 @@ void aiDragonAction(AIEntity *e) {  void aiDragonDraw(AIEntity *e, int mx, int my) {  	switch (e->sequence) { -		// sleeping +	// sleeping  	case 0:  		g_hdb->_ai->_gfxDragonAsleep->drawMasked(e->x - 32 - mx, e->y - 96 - my);  		break; -		// flapping 3 times +	// flapping 3 times  	case 1:  		g_hdb->_ai->_gfxDragonFlap[e->animFrame & 1]->drawMasked(e->x - 32 - mx, e->y - 96 - my);  		break; -		// start breathing (very short) +	// start breathing (very short)  	case 2:  		g_hdb->_ai->_gfxDragonBreathe[0]->drawMasked(e->x - 32 - mx, e->y - 96 - my);  		break; -		// breathing +	// breathing  	case 3:  		g_hdb->_ai->_gfxDragonBreathe[(e->animFrame & 1) + 1]->drawMasked(e->x - 32 - mx, e->y - 96 - my);  		break; -		// flapping 3 times +	// flapping 3 times  	case 4:  		g_hdb->_ai->_gfxDragonBreathe[e->animFrame & 1]->drawMasked(e->x - 32 - mx, e->y - 96 - my);  		break;  | 
