示例#1
0
CCScene* MapScene::scene(char type,  std::string hostip)
{
    CCScene * scene = NULL;
    do
    {
        // 'scene' is an autorelease object
        scene = CCScene::node();
        CC_BREAK_IF(! scene);

        // 'layer' is an autorelease object
        MapScene *layer = MapScene::node();
        CC_BREAK_IF(! layer);
        if (type == 'S')
        {
            layer->startServer();
        }
        if (type == 'C')
        {
            layer->startClient(hostip);
        }
        if (type == 'P')
        {
            layer->startPractice();
        }
        // add layer as a child to scene
        scene->addChild(layer);
    } while (0);
    CCDirector::sharedDirector()->setDeviceOrientation(CCDeviceOrientationPortrait);
    // return the scene
    return scene;
}
void GameScene::RemoveSprite(SpriteFactory::TSpriteNode* sprite)
{
	MapScene* myRender = reinterpret_cast<MapScene*>(GetRender());

	if (myRender)
		myRender->RemoveSprite(sprite->m_sprite);
}
示例#3
0
void MapView::dropEvent(QDropEvent *event)
{
    qdbg << "dropEvent: text=" << event->mimeData()->formats().first() << endl;
    if (!event->mimeData()->hasFormat(levelObjectNameMimeType))
        return;
    event->acceptProposedAction();

    QPoint dragOffset;
    QByteArray nameData;

    QByteArray encodedData = event->mimeData()->data(levelObjectNameMimeType);
    QDataStream dataStream(&encodedData, QIODevice::ReadOnly);
    dataStream >> nameData >> dragOffset;
    QString name = QString::fromUtf8(nameData);
    LevelObject *obj = LevelObjectsModel::sharedInstance()->levelObjectByName(name);
    if (!obj)
        return;

    QSizeF objSize = obj->size();
    QPoint dragOffsetShifted(dragOffset.x() - objSize.width() / 2,
                             dragOffset.y() - objSize.height() / 2);

    QPoint viewportTargetPos(event->pos() - dragOffsetShifted);

    LevelObject *newObject = obj->clone();
    newObject->setPosition(mapToScene(viewportTargetPos));
    connect(newObject, SIGNAL(modified()),
            mapScene(), SLOT(setModified()));
    MapItem *item = new MapItem(newObject);
    MapScene *scene = mapScene();
    //scene->addItem(item);
    scene->setModified(true);
    NewItemCommand *command = new NewItemCommand(scene, item);
    scene->undoStack()->push(command);
}
/**
 * @copydoc Editor::select_all
 */
void MapEditor::select_all() {

  MapScene* scene = ui.map_view->get_scene();
  if (scene != nullptr) {
    scene->select_all();
  }
}
MapView* SampleLapViewer::createLapView(int refRace, int refLap)
{
    QVector<QPointF> positions;
    QSqlQuery posQuery;
    posQuery.prepare("select longitude, latitude from POSITION where ref_lap_race = ? and ref_lap_num = ?");
    posQuery.addBindValue(refRace);
    posQuery.addBindValue(refLap);

    if (posQuery.exec())
    {
        while (posQuery.next())
        {
            GeoCoordinate tmp;
            tmp.setLongitude(posQuery.value(0).toFloat());
            tmp.setLatitude(posQuery.value(1).toFloat());

            positions << tmp.projection();
        }
    }

    MapScene* sc = new MapScene(50 * 1000, this);
    sc->addTrack(positions);

    MapView* view = new MapView(this);
    view->setDragMode(QGraphicsView::ScrollHandDrag);
    view->setScene(sc);
    connect(view, SIGNAL(zoomedAround(int,QPointF)), this, SLOT(zoomView(int)));

    return view;
}
MapScene* MapScene::create()
{
	MapScene *menu = new MapScene();
	if (menu && menu->init()) {
		menu->autorelease();
		return menu;
	}
	CC_SAFE_DELETE(menu);
	return nullptr;
}
示例#7
0
    MapScene* defaultScene(MapDocument* document)
    {
        MapScene* scene = new MapScene(document);

        SceneCamera* c = new SceneCamera(scene->root());
        c->setObjectName("camera");
        c->setPosition(QVector3D(128, 128, 80));
        c->lookAt(QVector3D(0,0,0));

        return scene;
    }
示例#8
0
    MapScene* debugScene(MapDocument *document)
    {
        MapScene* scene = new MapScene(document);

        SceneCamera* c = new SceneCamera(scene->root());
        c->setObjectName("camera");
        c->setPosition(QVector3D(128, 128, 80));
        c->lookAt(QVector3D(0,0,0));

        // For the purposes of debugging, serialise our geometry data.
        // This is pretty damn verbose but it means we can load it back in easily.

        SceneObject* camModel = new SceneObject(scene->root());
        camModel->setObjectName("camModel");
        camModel->setGeometry(GeometryFactory::fromObjFile(":/models/editor/camera.obj", 32));
        camModel->setPosition(QVector3D(0,128,0));
        camModel->setShouldSerialiseGeometry(true);

        SceneObject* block = new SceneObject(scene->root());
        block->setObjectName("block");
        block->setGeometry(GeometryFactory::cube(32.0f));
        block->geometry()->setTexture(0, "/textures/test");
        block->setPosition(QVector3D(64,0,0));
        block->setShouldSerialiseGeometry(true);

        SceneObject* blockChild = block->clone();
        blockChild->setObjectName("blockChild");
        blockChild->setParent(block);
        blockChild->setGeometry(GeometryFactory::cube(8.0f));
        blockChild->geometry()->setTexture(0, "/textures/test");
        blockChild->setPosition(QVector3D(0,0,40));
        blockChild->setShouldSerialiseGeometry(true);

        SceneObject* block2 = block->clone();
        block2->setObjectName("block2");
        block2->geometry()->setTexture(0, "/textures/debug_translucent");
        block2->setPosition(QVector3D(128,0,0));
        block2->setRenderFlags(SceneObject::Translucent);
        block2->setShouldSerialiseGeometry(true);

        SceneObject* testBlock = new SceneObject(scene->root());
        testBlock->setObjectName("testBlock");
        testBlock->setGeometry(GeometryFactory::cubeSolidColor(96.0f, QColor::fromRgba(0x80ff8800)));
        testBlock->setPosition(QVector3D(0,-256,0));
        testBlock->setRenderFlags(SceneObject::Translucent);
        testBlock->setShouldSerialiseGeometry(true);

        SceneObject* testBlock2 = testBlock->clone();
        testBlock2->setObjectName("testBlock2");
        testBlock2->setPosition(QVector3D(0, -512, 0));
        testBlock->setShouldSerialiseGeometry(true);

        return scene;
    }
示例#9
0
void MainWindow::on_actionAddObstacleRect_triggered(bool checked)
{
    MapScene *scene = _mapScene;

    if (checked)
    {
        scene->setMode(MapScene::ModeAddObstacle);
    }
    else
    {
        scene->setMode(MapScene::ModeView);
    }
}
示例#10
0
void MainWindow::on_actionDeleteMapObject_triggered(bool checked)
{
    MapScene *scene = _mapScene;

    if (checked)
    {
        scene->setMode(MapScene::ModeDelete);
    }
    else
    {
        scene->setMode(MapScene::ModeView);
    }
}
bool GameScene::AddSprite(SpriteFactory::TSpriteNode* sprite)
{
	bool isValid = false;
	MapScene* myRender = reinterpret_cast<MapScene*>(GetRender());

	if (myRender)
	{
		myRender->AddSprite(sprite->m_sprite, sprite->m_layer);
		isValid = true;
	}

	return isValid;
}
示例#12
0
MapScene* MapScene::create()
{
	MapScene * mapScene = new MapScene();
	if (mapScene && mapScene->init())
	{
		mapScene->autorelease();
		return mapScene;
	}
	else
	{
		CC_SAFE_DELETE(mapScene);
		return NULL;
	}
}
/**
 * @copydoc Editor::reload_settings
 */
void MapEditor::reload_settings() {

  Settings settings;

  MapScene* scene = ui.map_view->get_scene();
  if (scene != nullptr) {
    QBrush brush(settings.get_value_color(Settings::map_background));
    scene->setBackgroundBrush(brush);
  }

  get_view_settings().set_grid_style(static_cast<GridStyle>(
    settings.get_value_int(Settings::map_grid_style)));
  get_view_settings().set_grid_color(
    settings.get_value_color(Settings::map_grid_color));
}
示例#14
0
void MapView::switchScenes()
{
    //使用列表保存创建的所有场景,数据库也要设计合理!
    int newFloor = QInputDialog::getInt(this, tr("Enter New Floor Number"), tr("Floor:"),6);

    if(this->sceneMap.contains(newFloor))
    {
        MapScene * scene = this->sceneMap.value(newFloor);
        this->setScene(scene);
        this->setCurrentScene(scene);
    }
    else
    {
        MapScene *scene = new MapScene;
        scene->setFloor(newFloor,false);
        this->addScene(newFloor,scene);
        this->setScene(scene);
        this->setCurrentScene(scene);
    }
}
void GameScene::Update(const float elapsed)
{
	//BaseScene::Update(elapsed);
	// Update of graphic scene.
	MapScene* myRender = reinterpret_cast<MapScene*>(GetRender());
	if (myRender)
	{
		myRender->Update(elapsed);
		Camera& camera = myRender->GetCamera();
		GetSource()->SetPosition(
			static_cast<float>(camera.GetX()), static_cast<float>(camera.GetY()), 0);
	}

	// Camera update.
	Camera& myCamera = GetRender()->GetCamera();
	myCamera.SetPosition(myCamera.GetX() + MOVE_CAMERA, myCamera.GetY());

	// Update of logic entities.
	for (unsigned int i = 0; i < m_entities.Size(); i++)
		m_entities[i]->Update(elapsed);
}
示例#16
0
void DocumentManager::addDocument(MapDocument *mapDocument)
{
    Q_ASSERT(mapDocument);
    Q_ASSERT(!mDocuments.contains(mapDocument));

    mDocuments.append(mapDocument);
    mUndoGroup->addStack(mapDocument->undoStack());

    MapView *view = new MapView(mTabWidget);
    MapScene *scene = new MapScene(view); // scene is owned by the view

    scene->setMapDocument(mapDocument);
    view->setScene(scene);

    const int documentIndex = mDocuments.size() - 1;

    mTabWidget->addTab(view, mapDocument->displayName());
    mTabWidget->setTabToolTip(documentIndex, mapDocument->fileName());
    connect(mapDocument, SIGNAL(fileNameChanged()), SLOT(updateDocumentTab()));
    connect(mapDocument, SIGNAL(modifiedChanged()), SLOT(updateDocumentTab()));

    switchToDocument(documentIndex);
    centerViewOn(0, 0);
}
bool GameScene::Init()
{
	bool isValid = BaseScene::Init();

	if (isValid)
	{
		rapidjson::Document* myDoc = GetDoc();

		// Load map.
		m_map = NEW(Map, ((*myDoc)["map"].GetString()));
		MapScene* myRender = 0;
		if (m_map)
		{
			SetRender(NEW(MapScene, (m_map)));
			myRender = reinterpret_cast<MapScene*>(GetRender());
		}
//		MapScene* myRender = reinterpret_cast<MapScene*>(GetRender());
		if (myRender)
		{
			const char* dirImage = (*myDoc)["background"].GetString();
			SpriteFactory::TSpriteNode* myImage = SpriteFactory::Instance().CreateImageNode(dirImage);
			myRender->SetBackgroundImage(myImage->m_image);
			myRender->GetCamera().SetBounds(0, 0, myRender->GetMap()->GetWidth(), myRender->GetMap()->GetHeight());
			double cameraX = (*myDoc)["camera"]["x"].GetDouble();
			double cameraY = (*myDoc)["camera"]["y"].GetDouble();
			myRender->GetCamera().SetPosition(cameraX, cameraY);

			// Load entities types.
			const rapidjson::Value& myInfo = (*myDoc)["typesEntities"];
			unsigned int numInfo = myInfo.Size();
			for (unsigned int i = 0; i < numInfo; i++)
				EntityFactory::Instance().LoadInfo(myInfo[i]);

			// Load entities.
			const rapidjson::Value& entities = (*myDoc)["entities"];
			unsigned int numEntities = entities.Size();
			isValid = true;
			for (unsigned int i = 0; i < numEntities && isValid; i++)
			{
				BaseEntity* myEntity = EntityFactory::Instance().CreateEntity(entities[i]);
				if (myEntity)
				{
					myEntity->AddToScene(this);
					if (myEntity->GetSprite())
					{
						Sprite* mySprite = myEntity->GetSprite()->m_sprite;
						mySprite->SetMap(m_map);
						mySprite->SetCollisionPixelData(NEW(CollisionPixelData, ("./data/sprites/dwarf_col.png")));
						mySprite->SetCollision(Sprite::COLLISION_PIXEL);
					}
					m_entities.Add(myEntity);
					isValid = m_entities.Last()->Init();
				}
				else
					isValid = false;
			}
		}
	}

	return isValid;
}