void CALifeMonsterMovementManager::update					()
{
	switch (path_type()) {
		case MovementManager::ePathTypeGamePath : {
			detail().update	();
			break;
		};
		case MovementManager::ePathTypePatrolPath : {
			patrol().update	();

			detail().target	(
				patrol().target_game_vertex_id(),
				patrol().target_level_vertex_id(),
				patrol().target_position()
			);

			detail().update	();

			break;
		};
		case MovementManager::ePathTypeNoPath : {
			break;
		};
		default : NODEFAULT;
	};
}
Example #2
0
// siehe Character Klasse
void Speedy::arrivedAtField()
{
	if (state == STATE_PURSUIT)
		// zu Feld bewegen, das sich 4 Felder vor PacMan befindet
		goTo(world->getPacMan().getPosition() + getDirectionVector(world->getPacMan().getDirection()) * 4);
	else if (state == STATE_PATROL)
		patrol();
}
Example #3
0
//--------- Begin of function FirmMonsterFortress::detect_camp_info ---------//
//
void FirmMonsterFortress::detect_camp_info()
{
	if( is_own() )
	{
		//----------- detect patrol -----------//

		if( button_transform_grokken.detect() )
		{
			// ##### patch begin Gilbert 7/8 #####//
			se_ctrl.immediate_sound("TURN_ON");
			sell_firm(COMMAND_PLAYER);
			return;
			// ##### patch end Gilbert 7/8 #####//
		}
		
		if( button_patrol.detect() )
		{
			if(remote.is_enable())
			{
				// packet structure : <firm recno> <patrol_state>
				short *shortPtr=(short *)remote.new_send_queue_msg(MSG_F_CAMP_PATROL, 2 * sizeof(short));
				shortPtr[0] = firm_recno;
				shortPtr[1] = 0;
			}
			else
			{
				patrol();
			}
		//	se_ctrl.immediate_sound("SORTIE");
			if( archer_count > 0 )
			{
				Unit *unitPtr = unit_array[archer_unit_recno[0]];
				se_res.sound( center_x, center_y, 1, 'S', unitPtr->sprite_id, "ACK");
			}
		}

		//----------- detect reward -----------//

		if( selected_archer_id > 0 && selected_archer_id <= archer_count  
			&& button_reward.detect() )
		{
			if( !remote.is_enable() )
			{
				unit_array[archer_unit_recno[selected_archer_id-1]]->reward(nation_array.player_recno);
			}
			else
			{
				// packet structure : <rewarding nation> <unit count> <unit recno> ...
				short *shortPtr = (short *)remote.new_send_queue_msg(MSG_UNIT_REWARD, 3*sizeof(short));
				// reserve two short more in case selected_recno is slightly smalled then the actual selected
				shortPtr[0] = nation_array.player_recno;
				shortPtr[1] = 1;
				shortPtr[2] = archer_unit_recno[selected_archer_id-1];
			}
			se_ctrl.immediate_sound("TURN_ON");
		}
	}
}
void center_defense()
{
	CW180();
	sleep(0.5);
	claw_down();
	sleep(0.5);
	turnStraight(200, 100);
	forwardT(100, 1);
	CCW();
	patrol();
}
Example #5
0
void trxVehicle::isCaughtAt(ofVec3f _target){
    // generate path
    
    maxSpeed = 4.0f;
    wanderDistance = 0.5f;
    if (onWay){
        maxSpeed = 8.0f;
    }
    //tooCloseDist = 1.0f;
    
    

        int pathCircleNumber = 8;
        if (pathIndex >= paths.size() - 1 || circlePaths.size()==0){
            circlePaths.clear();
            for (int i=0; i<pathCircleNumber; i++) {
                ofVec3f pathPoint;
                float x = sin(TWO_PI/pathCircleNumber*i)*(pathRadius-pathThreshold)*ofRandom(0.3,1.0);
                float y = cos(TWO_PI/pathCircleNumber*i)*(pathRadius-pathThreshold)*ofRandom(0.3,1.0);
                pathPoint = ofVec3f(x,y,0);
                circlePaths.push_back(pathPoint);
                
            }
        }
        paths.clear();
        for (int i=0; i<circlePaths.size(); i++) {
            ofVec3f pathPoint = ofVec3f(_target.x+circlePaths[i].x,_target.y+circlePaths[i].y,_target.z);
            paths.push_back(pathPoint);
        }
        

    patrol(paths);
    //arrive(* _target);
    
    float dist = position.distance(_target);
    if (dist <= pathRadius){
        maxSpeed = 2.0f;
        wanderDistance = 0.0f;
        if (onWay) {
            dead=true;
        }
        
    }
    
}
void biofuel_block()
{
	CW();
	sleep(0.5);
	forwardT(500, 3.2);
	sleep(0.5);
	claw_down();
	sleep(0.5);	
	turnStraight(500, 250);
	sleep(0.1);
	claw_up();
	forwardT(100, 2);
	sleep(1);
	CCW();
	forwardT(300, 2.5);
	sleep(0.1);
	patrol();
}
Example #7
0
//--------- Begin of function FirmCamp::detect_camp_info ---------//
//
void FirmCamp::detect_camp_info()
{
	int rc;
	if( is_own() )
	{
		//----------- detect patrol -----------//

		if( (rc = button_patrol.detect(0, 0, 1)) )
		{
			if (rc == 2)
			{
				patrol_state = (++patrol_state) % 3;
			}
			else
			if(remote.is_enable())
			{
				// packet structure : <firm recno> <patrol_state>
				short *shortPtr=(short *)remote.new_send_queue_msg(MSG_F_CAMP_PATROL, 2 * sizeof(short));
				shortPtr[0] = firm_recno;
				shortPtr[1] = patrol_state;
			}
			else
			{
				patrol(patrol_state);
			}
		//	se_ctrl.immediate_sound("SORTIE");
			if( overseer_recno )
			{
				Unit *overseer = unit_array[overseer_recno];
				se_res.sound( center_x, center_y, 1, 'S', overseer->sprite_id, "ACK");
			}
			else
			if( soldier_count > 0 )
			{
				Soldier *soldierPtr = &soldier_array[0];
				int unitId = soldierPtr->unit_id;
				UnitInfo *unitInfo = unit_res[unitId];
				se_res.sound( center_x, center_y, 1, 'S', unitInfo->sprite_id, "ACK");
			}				
		}

		//----------- detect reward -----------//

		if( button_reward.detect() )
		{
			reward(selected_soldier_id, COMMAND_PLAYER);
			se_ctrl.immediate_sound("TURN_ON");
		}

		if( firm_id==FIRM_CAMP && button_camp_upgrade.detect() )
		{
			if (!upgrading_firm_id)
			{
				se_ctrl.immediate_sound("TURN_ON");
				start_upgrade(FIRM_FORT, COMMAND_PLAYER);	
			}
		}

		//----- detect defense mode button -------//

		if( button_defense.detect() )
		{
			se_ctrl.immediate_sound( !defense_flag?"TURN_ON":"TURN_OFF");

			if( !remote.is_enable() )
			{
				// update RemoteMsg::toggle_camp_patrol()
				defense_flag = !defense_flag;
			}
			else
			{
				// packet structure : <firm recno> <defense_flag>
				short *shortPtr=(short *)remote.new_send_queue_msg(MSG_F_CAMP_TOGGLE_PATROL, 2*sizeof(short));
				shortPtr[0] = firm_recno;
				shortPtr[1] = !defense_flag;
			}

//			button_defense.update_bitmap( defense_flag ? "DEFENSE1" : "DEFENSE0" );
		}

		if( button_promote.detect() )
		{
			promote_soldier( selected_soldier_id, COMMAND_PLAYER );
			se_ctrl.immediate_sound("PROMOTE");
		}
	}
}
Example #8
0
//--------- Begin of function FirmCamp::detect_info ---------//
//
void FirmCamp::detect_info()
{
	if( detect_basic_info() )
		return;

	if( !should_show_info() )
		return;

	//------ detect the overseer button -----//

	int rc = mouse.single_click(INFO_X1+6, INFO_Y1+58,
				INFO_X1+5+UNIT_LARGE_ICON_WIDTH, INFO_Y1+57+UNIT_LARGE_ICON_HEIGHT, 2 );

	if( rc==1 )		// display this overseer's info
	{
		selected_worker_id = 0;
		disp_camp_info(INFO_Y1+54, INFO_UPDATE);
		disp_worker_list(INFO_Y1+104, INFO_UPDATE);
		disp_worker_info(INFO_Y1+168, INFO_UPDATE);
	}

	//--------- detect soldier info ---------//

	if( detect_worker_list() )
	{
		disp_camp_info(INFO_Y1+54, INFO_UPDATE);
		disp_worker_list(INFO_Y1+104, INFO_UPDATE);
		disp_worker_info(INFO_Y1+168, INFO_UPDATE);
	}

	//---------- detect spy button ----------//

	detect_spy_button();

	if( !own_firm() )
		return;

	//------ detect the overseer button -----//

	if( rc==2 )
	{
		if(remote.is_enable())
		{
			// packet structure : <firm recno>
			short *shortPtr=(short *)remote.new_send_queue_msg(MSG_FIRM_MOBL_OVERSEER, sizeof(short));
			shortPtr[0] = firm_recno;
		}
		else
		{
			assign_overseer(0);		// the overseer quits the camp
		}
	}

	//----------- detect patrol -----------//

	if( button_patrol.detect() )
	{
		if(remote.is_enable())
		{
			// packet structure : <firm recno>
			short *shortPtr=(short *)remote.new_send_queue_msg(MSG_F_CAMP_PATROL, sizeof(short));
			shortPtr[0] = firm_recno;
		}
		else
		{
			patrol();
		}
	}

	//----------- detect reward -----------//

	if( button_reward.detect() )
	{
		reward(selected_worker_id, COMMAND_PLAYER);
		// ##### begin Gilbert 25/9 ######//
		se_ctrl.immediate_sound("TURN_ON");
		// ##### end Gilbert 25/9 ######//
	}

	//----- detect defense mode button -------//

	if( button_defense.detect() )
	{
		// ##### begin Gilbert 25/9 ######//
		se_ctrl.immediate_sound( !defense_flag?(char*)"TURN_ON":(char*)"TURN_OFF");
		// ##### end Gilbert 25/9 ######//

		if( !remote.is_enable() )
		{
			// update RemoteMsg::toggle_camp_patrol()
			defense_flag = !defense_flag;
		}
		else
		{
			// packet structure : <firm recno> <defense_flag>
			short *shortPtr=(short *)remote.new_send_queue_msg(MSG_F_CAMP_TOGGLE_PATROL, 2*sizeof(short));
			shortPtr[0] = firm_recno;
			shortPtr[1] = !defense_flag;
		}

		button_defense.update_bitmap( defense_flag ? (char*)"DEFENSE1" : (char*)"DEFENSE0" );
	}
}