feat: fix socket connections

This commit is contained in:
parker
2025-07-05 20:20:56 +01:00
parent 18f85d6e76
commit 58ac608f84
3 changed files with 54 additions and 4 deletions

View File

@@ -1,7 +1,9 @@
#pragma once
#include <QWidget>
#include <iterator>
#include <memory>
#include <qgraphicsitem.h>
#include <qpoint.h>
#include <typeinfo>
#include "Engine/Network/NetworkManager.h"
#include "Engine/Types.h"
@@ -82,6 +84,39 @@ private:
return nullptr;
}
template<typename T>
QGraphicsItem* closestItemOfType(QList<QGraphicsItem*> items, QPointF centerPos)
{
std::vector <QGraphicsItem*> filteredItems;
for(QGraphicsItem* item : items)
{
if(item && typeid(*item)==typeid(T))
{
filteredItems.push_back(item);
}
}
if(filteredItems.size()==0) return nullptr;
if(filteredItems.size()==1) return filteredItems.at(0);
QGraphicsItem* closestItem=filteredItems.at(0);
float closestDist=QLineF(closestItem->scenePos(), centerPos).length();
for(size_t i=1; i<filteredItems.size(); ++i)
{
QGraphicsItem* item = filteredItems.at(i);
auto currentDist = QLineF(item->scenePos(), centerPos).length();
if(currentDist < closestDist)
{
closestItem = item;
closestDist = currentDist;
}
}
return closestItem;
}
protected:
void resizeEvent(QResizeEvent *event) override;
void mouseReleaseEvent(QMouseEvent *event) override;