Repository: CaffeineCoderz/Fungorium
Pull request #236: ThreadView kiszervezése
Author: login: CsomosAron
Created: 2025-05-03T23:00:17Z | Merged: 2025-05-04T10:07:39Z

ThreadView kiszervezése, egy dolgot nem tudok, hogy a fonalak rajzolása az jó-e (optimális szomszédok között kellene nőni vagy az még nem a logika része) most vagy valamit elrontottam, de majd megnézi valaki.

GameModel osztállyal szenvedtem egy jó darabig, de nem tudom megéri-e mivel egyáltalán nem akarja, jól letenni az elemeket (Gombatest, Spóra, Fonál, Tektonok még határeset), lehet marad így még ma megbeszéljük nappal.


Diff:
diff --git a/compile.sh b/compile.sh
index 739b00d..02680c8 100644
--- a/compile.sh
+++ b/compile.sh
@@ -1,3 +1,3 @@
 mkdir -p out
-javac -d out src/main.java src/utils/*.java src/model/fungus/*.java src/model/interfaces/*.java src/model/sporeTypes/*.java src/model/tektonTypes/*.java src/model/insect/*.java src/logic/*.java src/commands/*.java src/GUI/*.java
+javac -d out src/main.java src/utils/*.java src/model/fungus/*.java src/model/interfaces/*.java src/model/sporeTypes/*.java src/model/tektonTypes/*.java src/model/insect/*.java src/logic/*.java src/commands/*.java src/GUI/*.java src/GUI/Views/*.java src/GUI/Model/*.java
 echo "Fordítás kész az új!"
\ No newline at end of file
diff --git a/runcompile.sh b/runcompile.sh
index ae17018..6f04f14 100644
--- a/runcompile.sh
+++ b/runcompile.sh
@@ -1,5 +1,5 @@
 mkdir -p out
-javac -d out src/main.java src/utils/*.java src/model/fungus/*.java src/model/interfaces/*.java src/model/sporeTypes/*.java src/model/tektonTypes/*.java src/model/insect/*.java src/logic/*.java src/commands/*.java src/GUI/*.java src/GUI/Views/*.java
+javac -d out src/main.java src/utils/*.java src/model/fungus/*.java src/model/interfaces/*.java src/model/sporeTypes/*.java src/model/tektonTypes/*.java src/model/insect/*.java src/logic/*.java src/commands/*.java src/GUI/*.java src/GUI/Views/*.java src/GUI/Model/*.java 
 echo "Fordítás kész az új!"
 
 #!/bin/bash
diff --git a/src/GUI/FungoriumGamePanel.java b/src/GUI/FungoriumGamePanel.java
index 61b8bd9..025011c 100644
--- a/src/GUI/FungoriumGamePanel.java
+++ b/src/GUI/FungoriumGamePanel.java
@@ -4,14 +4,12 @@
 import javax.swing.*;
 
 import java.awt.event.MouseEvent;
-import java.awt.event.MouseMotionAdapter;
 import java.awt.event.MouseAdapter;
 
 import commands.CommandProcessor;
 import fungus.FungusBody;
 import fungus.FungusThread;
 import insect.Insect;
-import insect.InsectEffects;
 import sporeTypes.Spore;
 import tektonTypes.Tekton;
 import GUI.Views.*;
@@ -55,13 +53,13 @@ public class FungoriumGamePanel extends JPanel {
     // Background image
     private Image backgroundImage;
     private Boolean initialPaint = true; // Flag to indicate if it's the first paint
-    // Tekton images
-    private Image defTektonBg;
-    private Image decomposingTektonBg;
-    private Image decreasingTektonBg;
-    private Image feedThreadTektonBg;
-    private Image oneThreadTektonBg;
-    private Image onlyThreadTektonBg;
+    // // Tekton images
+    // private Image defTektonBg;
+    // private Image decomposingTektonBg;
+    // private Image decreasingTektonBg;
+    // private Image feedThreadTektonBg;
+    // private Image oneThreadTektonBg;
+    // private Image onlyThreadTektonBg;
     // Circular tekton images
     private Image defTektonBgCircular;
     private Image decomposingTektonBgCircular;
@@ -190,13 +188,13 @@ private String getObjectAtPoint(Point point) {
      */
     private void loadResources() {
         try {
-            // * Load SQUARE tekton images
-            defTektonBg = ImageIO.read(new File("src/resources/tektons/defaultTekton1.jpg"));
-            decomposingTektonBg = ImageIO.read(new File("src/resources/tektons/decomposingTekton1.jpg"));
-            decreasingTektonBg = ImageIO.read(new File("src/resources/tektons/decreasingTekton1.jpg"));
-            feedThreadTektonBg = ImageIO.read(new File("src/resources/tektons/feedThreadTekton1.jpg"));
-            oneThreadTektonBg = ImageIO.read(new File("src/resources/tektons/oneThreadTekton1.jpg"));
-            onlyThreadTektonBg = ImageIO.read(new File("src/resources/tektons/onlyThreadTekton1.jpg"));
+            // // * Load SQUARE tekton images
+            // defTektonBg = ImageIO.read(new File("src/resources/tektons/defaultTekton1.jpg"));
+            // decomposingTektonBg = ImageIO.read(new File("src/resources/tektons/decomposingTekton1.jpg"));
+            // decreasingTektonBg = ImageIO.read(new File("src/resources/tektons/decreasingTekton1.jpg"));
+            // feedThreadTektonBg = ImageIO.read(new File("src/resources/tektons/feedThreadTekton1.jpg"));
+            // oneThreadTektonBg = ImageIO.read(new File("src/resources/tektons/oneThreadTekton1.jpg"));
+            // onlyThreadTektonBg = ImageIO.read(new File("src/resources/tektons/onlyThreadTekton1.jpg"));
 
             // * Load CIRCULAR tekton images
             defTektonBgCircular = createCircularImage(
@@ -303,7 +301,7 @@ protected void paintComponent(Graphics g) {
         sporeImages = new Image[]{defaultSporeImg, fastSporeImg, slowSporeImg, stunSporeImg,
                 disableCutSporeImg, multiplyInsectSporeImg};
         sporeView.drawSpores(g2d, objectPositions, commandProcessor.getCreatedObjects(), sporeImages);
-        drawThreads(g2d);
+        threadView.drawThreads(g2d, objectPositions, commandProcessor.getCreatedObjects(), tektonCardinalPoints, commandProcessor);
         insectView.drawInsects(g2d, objectPositions, commandProcessor.getCreatedObjects(), insectImg);
         bodyView.drawBodies(g2d, objectPositions, commandProcessor.getCreatedObjects(), fungusBodyImg);
         
@@ -806,154 +804,6 @@ private Point getTektonPosition(Tekton tekton) {
     }
 
 
-    /**
-     * Draws all FungusThreads in the game world, including connections to other
-     * threads and their associated Tekton(s). This method is called by the
-     * paintComponent method.
-     * @param g2d the Graphics2D object to draw the threads on
-     */
-    private void drawThreads(Graphics2D g2d) {
-        for (Map.Entry<String, Object> entry : commandProcessor.getCreatedObjects().entrySet()) {
-            if (entry.getValue() instanceof FungusThread) {
-                FungusThread thread = (FungusThread) entry.getValue();
-
-                try {
-                    if (thread.isBridge()) {
-                        // Bridge threads
-                        List<Tekton> tektons = thread.getTektons();
-                        if (tektons.size() >= 2) {
-                            Tekton firstTekton = tektons.get(0);
-                            Tekton secondTekton = tektons.get(1);
-
-                            String firstTektonName = commandProcessor.findByObject(firstTekton);
-                            String secondTektonName = commandProcessor.findByObject(secondTekton);
-
-                            if (firstTektonName != null && secondTektonName != null) {
-                                Point secondTektonCenter = getTektonCenter(secondTekton);
-                                Point firstControlPoint = findClosestCardinalPoint(firstTektonName, secondTektonCenter);
-                                Point secondControlPoint = findClosestCardinalPoint(secondTektonName,
-                                        getTektonCenter(firstTekton));
-
-                                if (firstControlPoint != null && secondControlPoint != null) {
-                                    g2d.setColor(new Color(150, 75, 0));
-                                    g2d.setStroke(new BasicStroke(THREAD_WIDTH));
-                                    g2d.draw(new Line2D.Double(firstControlPoint.x, firstControlPoint.y,
-                                            secondControlPoint.x, secondControlPoint.y));
-                                }
-                            }
-                        }
-                    } else if(thread.getNext() != null){
-                        // Draw connection to next thread if exists
-                        String nextThreadName = commandProcessor.findByObject(thread.getNext());
-                        if (nextThreadName != null && objectPositions.containsKey(nextThreadName)) {
-                            Point nextThreadPos = objectPositions.get(nextThreadName);
-                            Point threadPos = objectPositions.getOrDefault(entry.getKey(), nextThreadPos);
-
-                            g2d.setColor(new Color(150, 75, 0));
-                            g2d.setStroke(new BasicStroke(THREAD_WIDTH));
-                            g2d.draw(new Line2D.Double(
-                                    threadPos.x, threadPos.y,
-                                    nextThreadPos.x, nextThreadPos.y));
-                        }
-                    } else {
-                        // Draw non-bridge threads
-                        Tekton tekton = thread.getTektons().isEmpty() ? null : thread.getTektons().get(0);
-                        if (tekton != null) {
-                            String tektonName = commandProcessor.findByObject(tekton);
-                            if (tektonName != null) {
-                                Point controlPoint = getCardinalPoint(tektonName, "n");
-                                Point bodyPoint = null;
-
-                                if (thread.getMyBody() != null) {
-                                    String bodyName = commandProcessor.findByObject(thread.getMyBody());
-                                    if (bodyName != null) {
-                                        bodyPoint = objectPositions.get(bodyName);
-                                    }
-                                }
-
-                                if (controlPoint != null && bodyPoint != null) {
-                                    g2d.setColor(new Color(150, 75, 0));
-                                    g2d.setStroke(new BasicStroke(THREAD_WIDTH));
-                                    g2d.draw(new Line2D.Double(controlPoint.x, controlPoint.y, bodyPoint.x, bodyPoint.y));
-                                } else if (controlPoint != null) {
-                                    Point anotherControlPoint = getCardinalPoint(tektonName, "s");
-                                    if (anotherControlPoint != null) {
-                                        g2d.setColor(new Color(150, 75, 0));
-                                        g2d.setStroke(new BasicStroke(THREAD_WIDTH));
-                                        g2d.draw(new Line2D.Double(controlPoint.x, controlPoint.y, anotherControlPoint.x,
-                                                anotherControlPoint.y));
-                                    }
-                                }
-                            }
-                        }
-                    }
-        
-                    // Draw connections threads
-                    drawThreadConnections(g2d, thread, entry.getKey());
-
-                    // Draw thread name
-                    Point pos = objectPositions.get(entry.getKey());
-                    if (pos != null) {
-                        g2d.setColor(Color.WHITE);
-                        g2d.drawString(entry.getKey(), pos.x, pos.y);
-                    }
-                } catch (Exception e) {
-                    System.err.println("Error drawing thread: " + entry.getKey() + " - " + e.getMessage());
-                }
-            }
-        }
-    }
-
-    /**
-     * Finds the closest cardinal point to the given targetPoint for the given tektonName.
-     * If no cardinal points are found, returns null.
-     *
-     * @param tektonName the name of the tekton
-     * @param targetPoint the target point to find the closest cardinal point to
-     * @return the closest cardinal point, or null if none are found
-     */
-    private Point findClosestCardinalPoint(String tektonName, Point targetPoint) {
-        List<Point> cardinalPoints = tektonCardinalPoints.get(tektonName);
-        if (cardinalPoints == null || cardinalPoints.isEmpty()) {
-            return null;
-        }
-
-        Point closestPoint = null;
-        double minDistance = Double.MAX_VALUE;
-        
-        for (Point cardinalPoint : cardinalPoints) {
-            double distance = cardinalPoint.distance(targetPoint);
-            if (distance < minDistance) {
-                minDistance = distance;
-                closestPoint = cardinalPoint;
-            }
-        }
-
-        return closestPoint;
-    }
-    
-    /**
-     * Draws a connection between a FungusThread and its next thread.
-     * If the next thread is not found, nothing is drawn.
-     * @param g2d the Graphics2D object to draw on
-     * @param thread the FungusThread to draw the connection for
-     * @param threadKey the name of the current thread, used to get its position
-     */
-    private void drawThreadConnections(Graphics2D g2d, FungusThread thread, String threadKey) {
-        // Draw connection to next thread
-        if (thread.getNext() != null) {
-            String nextThreadName = commandProcessor.findByObject(thread.getNext());
-            if (nextThreadName != null && objectPositions.containsKey(nextThreadName)) {
-                Point nextThreadPos = objectPositions.get(nextThreadName);
-                Point threadPos = objectPositions.getOrDefault(threadKey, nextThreadPos);
-    
-                g2d.setColor(new Color(150, 75, 0));
-                g2d.setStroke(new BasicStroke(THREAD_WIDTH));
-                g2d.draw(new Line2D.Double(threadPos.x, threadPos.y, nextThreadPos.x, nextThreadPos.y));
-            }
-        }
-    }
-
     /**
      * Updates the game state by clearing the current object positions and
      * occupied cells and setting a flag to recalculate the positions of all
diff --git a/src/GUI/Views/ThreadView.java b/src/GUI/Views/ThreadView.java
index 05a3027..70d4720 100644
--- a/src/GUI/Views/ThreadView.java
+++ b/src/GUI/Views/ThreadView.java
@@ -1,5 +1,113 @@
 package GUI.Views;
 
+import fungus.FungusThread;
+import tektonTypes.Tekton;
+
+import java.awt.*;
+import java.awt.geom.Line2D;
+import java.util.List;
+import java.util.Map;
+
+import commands.CommandProcessor;
+
 public class ThreadView {
+    private static final int THREAD_WIDTH = 3;
+    private static final Color THREAD_COLOR = new Color(150, 75, 0);
+
+    /**
+     * Draws all FungusThreads in the game world.
+     *
+     * @param g2d                 the Graphics2D object to draw the threads on
+     * @param objectPositions     a map of object names to their positions
+     * @param createdObjects      a map of object names to their instances
+     * @param tektonCardinalPoints a map of Tekton names to their cardinal points
+     * @param commandProcessor    the CommandProcessor to resolve object names
+     */
+    public void drawThreads(Graphics2D g2d, Map<String, Point> objectPositions,
+                            Map<String, Object> createdObjects,
+                            Map<String, List<Point>> tektonCardinalPoints,
+                            CommandProcessor commandProcessor) {
+        for (Map.Entry<String, Object> entry : createdObjects.entrySet()) {
+            if (entry.getValue() instanceof FungusThread) {
+                FungusThread thread = (FungusThread) entry.getValue();
+                String threadName = entry.getKey();
+
+                try {
+                    if (thread.isBridge()) {
+                        drawBridgeThread(g2d, thread, objectPositions, tektonCardinalPoints, commandProcessor);
+                    } else if (thread.getNext() != null) {
+                        drawConnectionToNextThread(g2d, thread, threadName, objectPositions, commandProcessor);
+                    } else {
+                        drawNonBridgeThread(g2d, thread, threadName, objectPositions, tektonCardinalPoints, commandProcessor);
+                    }
+
+                    // Draw thread name
+                    Point pos = objectPositions.get(threadName);
+                    if (pos != null) {
+                        g2d.setColor(Color.WHITE);
+                        g2d.drawString(threadName, pos.x, pos.y);
+                    }
+                } catch (Exception e) {
+                    System.err.println("Error drawing thread: " + threadName + " - " + e.getMessage());
+                }
+            }
+        }
+    }
+
+    private void drawBridgeThread(Graphics2D g2d, FungusThread thread, Map<String, Point> objectPositions,
+                                  Map<String, List<Point>> tektonCardinalPoints, CommandProcessor commandProcessor) {
+        List<Tekton> tektons = thread.getTektons();
+        if (tektons.size() >= 2) {
+            Point firstControlPoint = findClosestCardinalPoint(
+                tektons.get(0), tektonCardinalPoints, objectPositions.get(commandProcessor.findByObject(tektons.get(1))), commandProcessor
+            );
+            Point secondControlPoint = findClosestCardinalPoint(
+                tektons.get(1), tektonCardinalPoints, objectPositions.get(commandProcessor.findByObject(tektons.get(0))), commandProcessor
+            );
+            drawLine(g2d, firstControlPoint, secondControlPoint);
+        }
+    }
+
+    private void drawConnectionToNextThread(Graphics2D g2d, FungusThread thread, String threadName,
+                                            Map<String, Point> objectPositions, CommandProcessor commandProcessor) {
+        String nextThreadName = commandProcessor.findByObject(thread.getNext());
+        if (nextThreadName != null && objectPositions.containsKey(nextThreadName)) {
+            Point threadPos = objectPositions.getOrDefault(threadName, objectPositions.get(nextThreadName));
+            Point nextThreadPos = objectPositions.get(nextThreadName);
+            drawLine(g2d, threadPos, nextThreadPos);
+        }
+    }
+
+    private void drawNonBridgeThread(Graphics2D g2d, FungusThread thread, String threadName,
+                                     Map<String, Point> objectPositions,
+                                     Map<String, List<Point>> tektonCardinalPoints, CommandProcessor commandProcessor) {
+        Tekton tekton = thread.getTektons().isEmpty() ? null : thread.getTektons().get(0);
+        if (tekton != null) {
+            Point controlPoint = findClosestCardinalPoint(
+                tekton, tektonCardinalPoints, objectPositions.get(threadName), commandProcessor
+            );
+            Point bodyPoint = objectPositions.get(commandProcessor.findByObject(thread.getMyBody()));
+            drawLine(g2d, controlPoint, bodyPoint);
+        }
+    }
+
+    private Point findClosestCardinalPoint(Tekton tekton, Map<String, List<Point>> tektonCardinalPoints,
+                                           Point targetPoint, CommandProcessor commandProcessor) {
+        List<Point> cardinalPoints = tektonCardinalPoints.get(commandProcessor.findByObject(tekton));
+        if (cardinalPoints == null || cardinalPoints.isEmpty()) {
+            return null;
+        }
+
+        return cardinalPoints.stream()
+                .min((p1, p2) -> Double.compare(p1.distance(targetPoint), p2.distance(targetPoint)))
+                .orElse(null);
+    }
 
-}
+    private void drawLine(Graphics2D g2d, Point start, Point end) {
+        if (start != null && end != null) {
+            g2d.setColor(THREAD_COLOR);
+            g2d.setStroke(new BasicStroke(THREAD_WIDTH));
+            g2d.draw(new Line2D.Double(start.x, start.y, end.x, end.y));
+        }
+    }
+}
\ No newline at end of file


Reviews:
user: login: copilot-pull-request-reviewer[bot]
body: ## Pull Request Overview

This PR refactors the drawing logic for fungus threads by moving the thread rendering code into its own ThreadView class and removing the legacy drawing method from FungoriumGamePanel.  
- Extracts thread drawing logic into ThreadView with dedicated methods for bridge, connection, and non-bridge threads.  
- Updates FungoriumGamePanel to delegate thread rendering to ThreadView and removes redundant legacy code.

### Reviewed Changes

Copilot reviewed 2 out of 4 changed files in this pull request and generated 2 comments.

| File                                | Description                                                         |
| ----------------------------------- | ------------------------------------------------------------------- |
| src/GUI/Views/ThreadView.java       | New class for drawing fungus threads with refactored methods.       |
| src/GUI/FungoriumGamePanel.java     | Removed legacy thread drawing method and commented-out resource code.|

<details>
<summary>Files not reviewed (2)</summary>

* **compile.sh**: Language not supported
* **runcompile.sh**: Language not supported
</details>



state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-03T23:00:52Z
user: login: AndorkaDominik
body: Jó észrevétel a drawLine metódus
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-05-04T10:03:33Z

Review comments:
diff_hunk: @@ -1,5 +1,113 @@
 package GUI.Views;
 
+import fungus.FungusThread;
+import tektonTypes.Tekton;
+
+import java.awt.*;
+import java.awt.geom.Line2D;
+import java.util.List;
+import java.util.Map;
+
+import commands.CommandProcessor;
+
 public class ThreadView {
+    private static final int THREAD_WIDTH = 3;
+    private static final Color THREAD_COLOR = new Color(150, 75, 0);
+
+    /**
+     * Draws all FungusThreads in the game world.
+     *
+     * @param g2d                 the Graphics2D object to draw the threads on
+     * @param objectPositions     a map of object names to their positions
+     * @param createdObjects      a map of object names to their instances
+     * @param tektonCardinalPoints a map of Tekton names to their cardinal points
+     * @param commandProcessor    the CommandProcessor to resolve object names
+     */
+    public void drawThreads(Graphics2D g2d, Map<String, Point> objectPositions,
+                            Map<String, Object> createdObjects,
+                            Map<String, List<Point>> tektonCardinalPoints,
+                            CommandProcessor commandProcessor) {
+        for (Map.Entry<String, Object> entry : createdObjects.entrySet()) {
+            if (entry.getValue() instanceof FungusThread) {
+                FungusThread thread = (FungusThread) entry.getValue();
+                String threadName = entry.getKey();
+
+                try {
+                    if (thread.isBridge()) {
+                        drawBridgeThread(g2d, thread, objectPositions, tektonCardinalPoints, commandProcessor);
+                    } else if (thread.getNext() != null) {
+                        drawConnectionToNextThread(g2d, thread, threadName, objectPositions, commandProcessor);
+                    } else {
+                        drawNonBridgeThread(g2d, thread, threadName, objectPositions, tektonCardinalPoints, commandProcessor);
+                    }
+
+                    // Draw thread name
+                    Point pos = objectPositions.get(threadName);
+                    if (pos != null) {
+                        g2d.setColor(Color.WHITE);
+                        g2d.drawString(threadName, pos.x, pos.y);
+                    }
+                } catch (Exception e) {
+                    System.err.println("Error drawing thread: " + threadName + " - " + e.getMessage());
path: src/GUI/Views/ThreadView.java
user: login: Copilot
body: Catching a generic Exception may mask specific errors; consider catching more specific exceptions where possible.
```suggestion
                } catch (NullPointerException e) {
                    System.err.println("NullPointerException while drawing thread: " + threadName + " - " + e.getMessage());
                } catch (IllegalArgumentException e) {
                    System.err.println("IllegalArgumentException while drawing thread: " + threadName + " - " + e.getMessage());
                } catch (Exception e) {
                    System.err.println("Unexpected error while drawing thread: " + threadName + " - " + e.getMessage());
```
created_at: 2025-05-03T23:00:52Z
author_association: CONTRIBUTOR
diff_hunk: @@ -190,13 +188,13 @@ private String getObjectAtPoint(Point point) {
      */
     private void loadResources() {
         try {
-            // * Load SQUARE tekton images
-            defTektonBg = ImageIO.read(new File("src/resources/tektons/defaultTekton1.jpg"));
-            decomposingTektonBg = ImageIO.read(new File("src/resources/tektons/decomposingTekton1.jpg"));
-            decreasingTektonBg = ImageIO.read(new File("src/resources/tektons/decreasingTekton1.jpg"));
-            feedThreadTektonBg = ImageIO.read(new File("src/resources/tektons/feedThreadTekton1.jpg"));
-            oneThreadTektonBg = ImageIO.read(new File("src/resources/tektons/oneThreadTekton1.jpg"));
-            onlyThreadTektonBg = ImageIO.read(new File("src/resources/tektons/onlyThreadTekton1.jpg"));
+            // // * Load SQUARE tekton images
+            // defTektonBg = ImageIO.read(new File("src/resources/tektons/defaultTekton1.jpg"));
+            // decomposingTektonBg = ImageIO.read(new File("src/resources/tektons/decomposingTekton1.jpg"));
+            // decreasingTektonBg = ImageIO.read(new File("src/resources/tektons/decreasingTekton1.jpg"));
+            // feedThreadTektonBg = ImageIO.read(new File("src/resources/tektons/feedThreadTekton1.jpg"));
+            // oneThreadTektonBg = ImageIO.read(new File("src/resources/tektons/oneThreadTekton1.jpg"));
+            // onlyThreadTektonBg = ImageIO.read(new File("src/resources/tektons/onlyThreadTekton1.jpg"));
path: src/GUI/FungoriumGamePanel.java
user: login: Copilot
body: Consider removing the commented-out SQUARE tekton images loading code if it's no longer needed to improve code clarity.
```suggestion
// Removed commented-out code for loading SQUARE tekton images to improve code clarity.
```
created_at: 2025-05-03T23:00:52Z
author_association: CONTRIBUTOR

PR comments:
user: login: Daivakai
created_at: 2025-05-04T09:24:17Z
body: Szerintem a Threadek jól rajzólódnak ki! A tektonok lehelyezésével lehet gond, de azzal @AndorkaDominik  foglalkozott tegnap.
Ahogy látom a GameModel nem lett megvalósítva. Gondolom sok debugolási probléma miatt nem tetted bele.
Már az hogy a Viewokat kiszervesztem azzal jobban átlátható lesz nekünk és a Konzulens számára is a játék. 
author_association: COLLABORATOR
user: login: Daivakai
created_at: 2025-05-04T09:27:24Z
body: Hogy legyen GameModel, ne legyen GameModel. Azt már délután döntsük el, hogy a szekvenciákat betudjam fejezni és maradjon a zhimra idő készülni.
author_association: COLLABORATOR
user: login: CsomosAron
created_at: 2025-05-04T09:27:48Z
body: Igen jól látod a GameModel-lel sehogy sem akarta a kirajzolást jól megvalósítani, szóval azt majd a kövi fázisban csináljuk meg max, amennyiben szükség van rá, hogy így ki legyen szervezve
author_association: COLLABORATOR
user: login: AndorkaDominik
created_at: 2025-05-04T09:36:40Z
body: Én branchemen jó a tekton:
t1-t2-t3 szomszédos és egymás mellett
![image](https://github.com/user-attachments/assets/84d9a14b-1778-49d6-ab80-88130e706d50)

Ezen a branchen:
valami bekavar
![image](https://github.com/user-attachments/assets/8ad1a1d8-24f2-459f-92c4-6d3e66789c8c)

author_association: CONTRIBUTOR
user: login: CsomosAron
created_at: 2025-05-04T09:41:02Z
body: Akkor mindjárt ránézek hol csúszik el annyi biztos hogy a branch-ed a Main-re már mergeltem, szóval ott is úgy kell működnie mint a tiéden
author_association: COLLABORATOR
user: login: AndorkaDominik
created_at: 2025-05-04T09:42:34Z
body: Nézem már én is, elösszőr is a setconfig fájlban, töröld ki a sorokat:
amiben removeneighbour van
Ez nem tudom nálad miért maradt bent, mert ha jól rémlik ez is benne volt a pull req-emben xd
Ezután próbáld a debugot
author_association: CONTRIBUTOR
user: login: AndorkaDominik
created_at: 2025-05-04T09:54:33Z
body: Mainen sem működik, érdekes
author_association: CONTRIBUTOR
user: login: CsomosAron
created_at: 2025-05-04T09:58:29Z
body: A setconfigban nincs removeneighbour sor szóval a merge elvileg jó volt, hogy pontosan mi okozza a hibát azt nem tudom, de erős a gyanúm, hogy a függvények átszervezésével van valami

author_association: COLLABORATOR
user: login: AndorkaDominik
created_at: 2025-05-04T09:59:59Z
body: Mostmár nálam is jó a Main

author_association: CONTRIBUTOR
user: login: AndorkaDominik
created_at: 2025-05-04T10:01:06Z
body: de am nekem a te brancheden is jó csak nem pulloltam :DDD, vagy neked mi az ami nem tetszik? látsz valami bugot?
author_association: CONTRIBUTOR
user: login: CsomosAron
created_at: 2025-05-04T10:01:09Z
body: Most nekem a saját branchem is jó:

![kép](https://github.com/user-attachments/assets/aa911bc3-9f43-4bc9-bfda-c17a547e2e77)


author_association: COLLABORATOR
user: login: AndorkaDominik
created_at: 2025-05-04T10:01:24Z
body: nálam is
author_association: CONTRIBUTOR
user: login: CsomosAron
created_at: 2025-05-04T10:02:18Z
body: Amúgy szerintem az előző fordításból bent maradtak a fájlok, kéne erre is egy sh majd hogy lehessen törölni őket
author_association: COLLABORATOR
user: login: AndorkaDominik
created_at: 2025-05-04T10:05:31Z
body: > Amúgy szerintem az előző fordításból bent maradtak a fájlok, kéne erre is egy sh majd hogy lehessen törölni őket

az sh fájl mindent felül ír, vagy mit nem törölt? :D

author_association: CONTRIBUTOR