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; }
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; }
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"); }