コード例 #1
0
void MainWindow::enterLocation() {
	auto player = world()->player();
	if (!player) {
		qDebug("No player. Will not enter any location");
		return;
	}
	auto global_pos = player->scenePos();
	qDebug() << "Player global position:" << global_pos.x() << global_pos.y();
	auto global_cell = world()->globalField()->cell(global_pos);
	auto local_pos = global_pos * global_cell->sceneMatrix().inverted();
	qDebug() << "Player local position:" << local_pos.x() << local_pos.y();
	if (global_cell) {
		//world()->globalField()->removeItem(player);
		auto v = global_cell->localField();
		connect(v, SIGNAL(toggleInventory(Character*)), ui->m_inventory, SLOT(toggle(Character*)));
		ui->m_render_view->setScene(v);
		//auto s = GLOBAL_FIELD_SIZE / (float)GLOBAL_FIELD_CELL_REAL_SIZE;
		ui->m_render_view->resetTransform();		
		auto local_cell = v->cell(local_pos);
		local_pos = global_pos * local_cell->sceneMatrix().inverted();
		//local_pos = local_pos * cell->sceneMatrix().inverted();
		qDebug() << "Player local local position:" << local_pos.x() << local_pos.y();
		world()->player()->setParentItem(local_cell);
		world()->player()->setPos(local_pos);	
		world()->setLocalField(v);
		if (player)
			ui->m_render_view->centerOn(player);
	}
}
コード例 #2
0
ファイル: tcontrolnode.cpp プロジェクト: nanox/tupi
void TControlNode::paintLinesToChildNodes(QPainter *painter)
{
    QMatrix inverted = sceneMatrix().inverted();
    painter->save();
    
    painter->setPen(QPen(QColor(Qt::gray)));
    painter->setRenderHint(QPainter::Antialiasing, true);

    if (k->rightNode) {
        if (k->rightNode->isVisible())
            painter->drawLine(inverted.map(pos()), inverted.map(k->rightNode->pos()));
    }

    if (k->leftNode) {
        if (k->leftNode->isVisible())
            painter->drawLine(inverted.map(pos()), inverted.map(k->leftNode->pos()));
    }
    
    painter->restore();
}