Пример #1
0
void GeomScreen::s_add_geom(int src, int type, Stringc name)
{
	Geom* addGeom = 0;
	lastSelectedGeom = NULL;

	if ( type == POD_GEOM_TYPE )
	{
		addGeom = aircraftPtr->createGeom(POD_GEOM_TYPE);
	}
	else if ( type == WING_GEOM_TYPE )
	{
		addGeom = aircraftPtr->createGeom(WING_GEOM_TYPE);
	}
	else if ( type == FUSE_GEOM_TYPE )
	{
		addGeom = aircraftPtr->createGeom(FUSE_GEOM_TYPE);
	}
	else if ( type == HAVOC_GEOM_TYPE )
	{
		addGeom = aircraftPtr->createGeom(HAVOC_GEOM_TYPE);
	}
	else if ( type == EXT_GEOM_TYPE )
	{
		addGeom = aircraftPtr->createGeom(EXT_GEOM_TYPE);
	}
	else if ( type == MS_WING_GEOM_TYPE )
	{
		addGeom = aircraftPtr->createGeom(MS_WING_GEOM_TYPE);
	}
	else if ( type == BLANK_GEOM_TYPE )
	{
		addGeom = aircraftPtr->createGeom(BLANK_GEOM_TYPE);
	}
	else if ( type == DUCT_GEOM_TYPE )
	{
		addGeom = aircraftPtr->createGeom(DUCT_GEOM_TYPE);
	}
	else if ( type == PROP_GEOM_TYPE )
	{
		addGeom = aircraftPtr->createGeom(PROP_GEOM_TYPE);
	}
	else if ( type == ENGINE_GEOM_TYPE )
	{
		addGeom = aircraftPtr->createGeom(ENGINE_GEOM_TYPE);
	}
	else if ( type == HWB_GEOM_TYPE )
	{
		addGeom = aircraftPtr->createGeom(HWB_GEOM_TYPE);
	}
	else if ( type == FUSELAGE_GEOM_TYPE )
	{
		addGeom = aircraftPtr->createGeom(FUSELAGE_GEOM_TYPE);
	}
	else if ( type == CABIN_LAYOUT_GEOM_TYPE )
	{
		addGeom = aircraftPtr->createGeom(CABIN_LAYOUT_GEOM_TYPE);
	}

	if (addGeom && name.get_length() > 0)
	{
		addGeom->setName(name);
	}

	if (src != ScriptMgr::SCRIPT)
	{
		loadGeomBrowser();
		deselectGeomBrowser();

		if ( addGeom )
			selectGeomBrowser(addGeom);

		loadActiveGeomOutput();
		screenMgrPtr->updateGeomScreens();
		aircraftPtr->flagActiveGeom();
		loadGeomBrowser();

		if ( addGeom )
		{
			if (src == ScriptMgr::GUI) scriptMgr->addLine("add", addGeom->getTypeStr(), addGeom->getName());
		}
	}
}
Пример #2
0
void GeomScreen::screenCB( Fl_Widget* w )
{

	if ( w == geomUI->addGeomButton )
	{
		int type = geomUI->geomTypeChoice->value();

		if ( type >= WING_GEOM_TYPE )			// Compensate for removing Wing Type
			type += 1;

		s_add_geom(ScriptMgr::GUI, type, Stringc(""));
	}
	else if ( w == geomUI->geomBrowser)
	{
		s_select_gui();
	}
	else if ( w == geomUI->noshowGeomButton )
	{
		vector<Geom*> selVec = getSelectedGeomVec();

		for ( int i = 0 ; i < (int)selVec.size() ; i++ )
		{
			selVec[i]->setNoShowFlag( 1 );
		}
		aircraftPtr->triggerDraw();
		loadGeomBrowser();
	}
	else if ( w == geomUI->showGeomButton )
	{
		vector<Geom*> selVec = getSelectedGeomVec();

		for ( int i = 0 ; i < (int)selVec.size() ; i++ )
		{
			selVec[i]->setNoShowFlag( 0 );
		}
		aircraftPtr->triggerDraw();
		loadGeomBrowser();

	}
	else if ( w == geomUI->selectAllGeomButton )
	{
		s_select_all(ScriptMgr::GUI);
	}
	else if ( w == geomUI->activeGeomInput )
	{
		Geom* activeGeom = aircraftPtr->getActiveGeom();
		if ( activeGeom )
		{
			Stringc name = geomUI->activeGeomInput->value();
			activeGeom->setName( name );
			loadGeomBrowser();

			name.quote('\"');
			scriptMgr->addLine("gen", "name", name);		}
		else
		{
			aircraftPtr->setName( geomUI->activeGeomInput->value() );
			loadGeomBrowser();
		}

		vector<Geom*> selVec = getSelectedGeomVec();

		if ( selVec.size() == 1 )
			aircraftPtr->modifyGeom( selVec[0] );
	}
	else if ( w == geomUI->cutGeomButton )
	{
		s_cut(ScriptMgr::GUI, deque< Stringc >());
	}
	else if ( w == geomUI->copyGeomButton )
	{
		s_copy(ScriptMgr::GUI, deque< Stringc >());
	}
	else if ( w == geomUI->pasteGeomButton )
	{
		s_paste(ScriptMgr::GUI);
	}
	else if ( w == geomUI->wireGeomButton )
	{
		setGeomDisplayFlag( GEOM_WIRE_FLAG );
	}
	else if ( w == geomUI->hiddenGeomButton )
	{
		setGeomDisplayFlag( GEOM_HIDDEN_FLAG );
	}
	else if ( w == geomUI->shadeGeomButton )
	{
		setGeomDisplayFlag( GEOM_SHADE_FLAG );
	}
	else if ( w == geomUI->textureGeomButton )
	{
		setGeomDisplayFlag( GEOM_TEXTURE_FLAG );
	}
	else if ( w == geomUI->moveUpButton )
	{
		aircraftPtr->reorderGeom( Aircraft::MOVE_UP );
		deselectGeomBrowser();
			
		Geom * activeGeom = aircraftPtr->getActiveGeom();
		if ( activeGeom )
			selectGeomBrowser(activeGeom);
		loadGeomBrowser();
	}
	else if ( w == geomUI->moveDownButton )
	{
		aircraftPtr->reorderGeom( Aircraft::MOVE_DOWN );
		deselectGeomBrowser();

		Geom * activeGeom = aircraftPtr->getActiveGeom();
		if ( activeGeom )
			selectGeomBrowser(activeGeom);
		loadGeomBrowser();
	}
	else if ( w == geomUI->moveTopButton )
	{
		aircraftPtr->reorderGeom( Aircraft::MOVE_TOP );
		deselectGeomBrowser();
			
		Geom * activeGeom = aircraftPtr->getActiveGeom();
		if ( activeGeom )
			selectGeomBrowser(activeGeom);
		loadGeomBrowser();
	}
	else if ( w == geomUI->moveBotButton )
	{
		aircraftPtr->reorderGeom( Aircraft::MOVE_BOT );
		deselectGeomBrowser();
			
		Geom * activeGeom = aircraftPtr->getActiveGeom();
		if ( activeGeom )
			selectGeomBrowser(activeGeom);
		loadGeomBrowser();
	}
	else if ( w == geomUI->defaultAircraftTypeChoice )
	{
		int id = geomUI->defaultAircraftTypeChoice->value();
		VspPreferences::Instance()->setDefaultCompFileID( id );
		aircraftPtr->setDefaultCompGroupID(id);
	}

}