Ejemplo n.º 1
0
int  Parse_Scene_Statement ( Sentence& mSentence, string* mh )
{
    int     retval  = -1;
    string  regexpression;
    mSentence.restore_reduced();

    regexpression = "(new scene|erase (scene|everything)|start over)";
    if (mSentence.m_sentence.regex_find(regexpression))
    {
        theWorld.erase_scene();
    }

    regexpression = "(load scene)";
    if (mSentence.m_sentence.regex_find(regexpression))
    {
        int scene_id = get_scene_id( mSentence );
        theScene.load( scene_id );
    }

    regexpression = "(save scene)";
    if (mSentence.m_sentence.regex_find(regexpression))
    {
        int scene_id = get_scene_id( mSentence );
        theScene.save( scene_id );
    }

    if (retval>-1)  printf( "Parse_Scene_Statement done\n" );
    return retval;
}
Ejemplo n.º 2
0
bool VersusScene::setup_scene( const unsigned int id  , const std::string& name )
{
	bool	return_value = false;
	
	
	if ( SoloScene::setup_scene(id,name) )
	{
		TEXEngine::Asset::Scene* scene = TEXEngine::Core::SceneManager::get().scene(get_scene_id());
		if (scene){
			scene->attach(24);
			scene->attach(23);

			TEXEngine::Core::PhysicsManager::get().register_listener(24,&m_bots[0]);

			return_value = true;
		}
	}


	return return_value;
}
Ejemplo n.º 3
0
bool	VersusScene::init( const std::vector<string>& params , const std::vector<unsigned int>& scene_keys, const std::vector<std::vector<unsigned int> >& player_keys )
{
	bool	return_value = false;



	if ( SoloScene::init(params,scene_keys,player_keys) ) // consider having predetermined aiPack identities and do a loop for this
	{
		TEXEngine::Asset::Scene* scene = TEXEngine::Core::SceneManager::get().scene(get_scene_id());
		if(scene)
		{
			if ( m_player  &&  m_player->m_entity )
			{
				m_player->max_laps(3);

				// setting player position to startpoint slightly to the side
				PhysicsObj* sledPO = m_player->m_entity->physics_obj();

				if(sledPO)
				{
					Vector3f v = sledPO->get_pos();
					v.z -= 5.0f;
					sledPO->set_pos(v);
					sledPO->reset_velocities();
					m_player->m_resetTransform = sledPO->get_transform_matrix();
				}
			}

			std::vector<std::string> AnimalNames(4,params[8]);
			std::stringstream	buffer;
			for ( unsigned int i = 0;  i < m_number_of_bots;  ++i)
			{
				
				std::string	name("");	

				if(!params[3].compare(SPECIES_PROPERTY_DOG))
				{
					scene->attach(20 + i*5);
					m_bots[i].set_entityPack(20 + i*5);
				}
				else if(!params[3].compare(SPECIES_PROPERTY_MOUSE))
				{
					scene->attach(21 + i*5);
					m_bots[i].set_entityPack(21 + i*5);
				}
				else if(!params[3].compare(SPECIES_PROPERTY_DINO))
				{
					scene->attach(22 + i*5);
					m_bots[i].set_entityPack(22 + i*5);
				}
				else TEXEngine::Core::LogManager::get().log_error("can't add a pack entity: unrecognized species");


				buffer.clear();
				buffer << "Bot" << (i+1);
				buffer >> name;
				m_bots[i].set_entity(24 + i*5);
				m_bots[i].set_entitySled(23 + i*5);
				m_bots[i].init(3,5,name,AnimalNames,params[3],i+2,false);
				if(!params[8].compare(DIFFICULTY_PROPERTY_EASY))
					m_bots[i].set_easy(true);
				else if(!params[8].compare(DIFFICULTY_PROPERTY_HARD))
					m_bots[i].set_easy(false);


				// setting bot position to startpoint slightly to the side
				if ( m_bots[i].m_entity )
				{
					PhysicsObj* aiSledPO = m_bots[i].m_entity->physics_obj();

					if ( m_player &&  m_player->m_entity )
					{
						PhysicsObj* playerSled = m_player->m_entity->physics_obj();
						if(aiSledPO && playerSled)
						{
							Matrix4x4f	tranfs(playerSled->get_transform_matrix());
							Vector3f v(playerSled->get_pos());

							
							v.z += 10.0f;

							aiSledPO->set_transform_matrix(tranfs);
							aiSledPO->set_pos(v);
							aiSledPO->reset_velocities();
							m_bots[i].m_resetTransform = aiSledPO->get_transform_matrix();
						}
					}
				}

				m_bots[i].m_pack.reset_pack();
				m_bots[i].set_state(StateEnum_READY);
			}

			m_finished_racer_count = 0;
			for ( unsigned int i = 0;  i < m_number_of_bots;  ++i)
			{
				m_finished_racers[i] = NULL;
				m_finished_vector_lock[i] = false;
			}

			TEXEngine::Core::SceneManager::get().activate(get_scene_id());

			// PLAY AUDIO CLIP "READY?"
			start_go_timer();
			state(SceneStateEnum_RUNNING);
			TEXEngine::Core::LogManager::get().log_message("Game Log:\tScene setup finished.");
			return_value = true;
		}
		else TEXEngine::Core::LogManager::get().log_error(" scene not found");
	}