Ejemplo n.º 1
0
void CCEngine::updateLoop()
{	
#if defined PROFILEON
    CCProfiler profile( "CCEngine::updateGame()" );
#endif
    
    // Remove any redundant scenes
    for( int i=0; i<scenes.length; ++i )
	{
		CCSceneBase *scene = scenes.list[i];
        if( scene->shouldDelete() )
		{
            removeScene( scene );
			i--;
		}
	}
    
    CCNativeThreadLock();
    for( int i=0; i<cameras.length; ++i )
    {
        CCCameraBase *camera = cameras.list[i];
        camera->updateControls();
    }
	controls->update( time );
    CCNativeThreadUnlock();
    
    // Allow scene to handle the controls first
	for( int i=0; i<scenes.length; ++i )
    {
        if( scenes.list[i]->updateControls( time ) )
        {
            // If we're not releasing our touch
            if( controls->getScreenTouches()[0].usingTouch != NULL )
            {
                break;
            }
        }
	}

    // Run through our controllers first
    for( int i=0; i<updaters.length; ++i )
    {
        // Delete on finish update
        CCUpdater *updater = updaters.list[i];
        if( updater->update( time.delta ) == false )
        {
            updaters.remove( updater );
            DELETE_OBJECT( updater );
        }
    }
	
    // Update scene logic
	for( int i=0; i<scenes.length; ++i )
    {
        CCSceneBase *scene = scenes.list[i];
        scene->update( time );
	}
}
Ejemplo n.º 2
0
void CCEngine::restart()
{
    urlManager->flushPendingRequests();
    for( int i=scenes.length-1; i>=0; --i )
    {
        removeScene( scenes.list[i] );
    }
    
    start();
}
Ejemplo n.º 3
0
StudySceneEditor::StudySceneEditor(Study *study, QSqlDatabase *database, QWidget *parent) :
    QDialog(parent)
{
    m_ui.setupUi(this);
    m_ui.removeSceneButton->setEnabled(false);

    m_model = new StudySceneModel(this, *database);
    m_delegate = new StudySceneDelegate(this);
    m_study = study;
    m_studyIndex = -1;

    QString title = windowTitle();
    setWindowTitle(m_study->name() + " - " + title);

    QSqlQuery query(*database);
    query.prepare("select id from studies where name = ?");
    query.addBindValue(m_study->name());

    // if there is already a study with that name, show the scenes for it
    if (query.exec() && query.next()) {
         m_studyIndex = query.value(0).toInt();
    }

    m_model->setTable("scenes");
    //m_model->setEditStrategy(QSqlTableModel::OnFieldChange);
    QString filter = QString("study = %1").arg(m_studyIndex);
    m_model->setFilter(filter);
    m_model->setHeaderData(1, Qt::Horizontal, "Name", Qt::DisplayRole);
    m_model->setHeaderData(2, Qt::Horizontal, "Length \n (in seconds)", Qt::DisplayRole);
    m_model->setHeaderData(3, Qt::Horizontal, "Type", Qt::DisplayRole);
    m_model->select();

    // Set up the view
    m_ui.sceneView->setModel(m_model);
    m_ui.sceneView->setColumnHidden(0, true);
    m_ui.sceneView->setColumnHidden(4, true);
    m_ui.sceneView->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
    m_ui.sceneView->setItemDelegate(m_delegate);
    m_ui.sceneView->update();

    m_signalMapper = new QSignalMapper(this);
    connect(m_ui.addSceneButton, SIGNAL(clicked()), m_signalMapper, SLOT(map()));
    m_signalMapper->setMapping(m_ui.addSceneButton, m_ui.addSceneButton->text());
    connect(m_ui.addBreakSceneButton, SIGNAL(clicked()), m_signalMapper, SLOT(map()));
    m_signalMapper->setMapping(m_ui.addBreakSceneButton, m_ui.addBreakSceneButton->text());
    connect(m_signalMapper, SIGNAL(mapped(QString)), this, SIGNAL(clicked(const QString &)));
    connect(this, SIGNAL(clicked(QString)), this, SLOT(addNewScene(QString)));


    connect(m_ui.closeButton, SIGNAL(clicked()), this, SLOT(submitAndClose()));
    connect(m_ui.removeSceneButton, SIGNAL(clicked()), this, SLOT(removeScene()));
    connect(m_ui.sceneView, SIGNAL(clicked(QModelIndex)), this, SLOT(changeRemoveButtonState(QModelIndex)));
    connect(m_model, SIGNAL(primeInsert(int, QSqlRecord&)),
            this, SLOT(populateNewRowValues(int, QSqlRecord&)));
}
Ejemplo n.º 4
0
void TupTimeLine::sceneResponse(TupSceneResponse *response)
{
    Q_UNUSED(response);

    #ifdef K_DEBUG
        #ifdef Q_OS_WIN32
            qDebug() << "[TupTimeLine::sceneResponse()]";
        #else
            T_FUNCINFO;
        #endif
    #endif

    switch (response->action()) {
            case TupProjectRequest::Add:
            {
                 insertScene(response->sceneIndex(), response->arg().toString());
            }
            break;
            case TupProjectRequest::Remove:
            {
                 removeScene(response->sceneIndex());
            }
            break;
            case TupProjectRequest::Move:
            {
            
            }
            break;
            case TupProjectRequest::Lock:
            {
            
            }
            break;
            case TupProjectRequest::Rename:
            {
            
            }
            break;
            case TupProjectRequest::Select:
            {
                 k->container->setCurrentIndex(response->sceneIndex());
            }
            break;
            default:
                 #ifdef K_DEBUG
                     QString msg = "TupTimeLine::sceneResponse : Unknown action :/";
                     #ifdef Q_OS_WIN32
                         qDebug() << msg;
                     #else
                         tFatal() << msg;
                     #endif
                 #endif
            break;
    }
}
Ejemplo n.º 5
0
void GrimEngine::setScene(Scene *scene) {
	Scene *lastScene = _currScene;

	_currScene = scene;
	_currScene->setSoundParameters(20, 127);
	// should delete the old scene after setting the new one
	if (lastScene && !lastScene->_locked) {
		removeScene(lastScene);
		delete lastScene;
	}
}
Ejemplo n.º 6
0
void SceneManager::Update(){
	if (Game->MANAGER.load){
		if (Game->MANAGER.scene){
			addScene(Game->MANAGER.loadName, Game->MANAGER.scene);
		}
		Game->MANAGER.load = false;
	}
	if (Game->MANAGER.unload){
		removeScene(Game->MANAGER.unloadName);
		Game->MANAGER.unload = false;
	}
	if (Game->MANAGER.change){
		changeScene(Game->MANAGER.changeName);
		Game->MANAGER.change = false;
	}
}
Ejemplo n.º 7
0
void GrimEngine::setScene(const char *name) {
	Scene *scene = findScene(name);
	Scene *lastScene = _currScene;

	// If the scene already exists then use the existing data
	if (scene) {
		setScene(scene);
		return;
	}
	Block *b = g_resourceloader->getFileBlock(name);
	if (!b)
		warning("Could not find scene file %s", name);
	_currScene = new Scene(name, b->data(), b->len());
	registerScene(_currScene);
	_currScene->setSoundParameters(20, 127);
	// should delete the old scene after creating the new one
	if (lastScene && !lastScene->_locked) {
		removeScene(lastScene);
		delete lastScene;
	}
	delete b;
}