Răsfoiți Sursa

support target uiml for entities

Kolja Strohm 1 lună în urmă
părinte
comite
00e9a51fea
1 a modificat fișierele cu 25 adăugiri și 16 ștergeri
  1. 25 16
      FactoryCraft/World.cpp

+ 25 - 16
FactoryCraft/World.cpp

@@ -114,23 +114,32 @@ void World::update(bool background)
                             ->setTargetUIML("");
                         break;
                     case 1:
-                        setTarget(zEntity(*(int*)(data + 2)));
-                        ((Game*)(Menu*)menuRegister->get("game"))
-                            ->setTargetUIML("");
-                        break;
+                        {
+                            setTarget(zEntity(*(int*)(data + 2)));
+                            short len = *(short*)(data + 6);
+                            char* uiml = new char[len + 8];
+                            memcpy(uiml, data + 8, len);
+                            uiml[len] = 0;
+                            ((Game*)(Menu*)menuRegister->get("game"))
+                                ->setTargetUIML(uiml);
+                            delete[] uiml;
+                            break;
+                        }
                     case 2:
-                        setTarget(zBlockAt(Vec3<int>(*(int*)(data + 2),
-                            *(int*)(data + 6),
-                            *(int*)(data + 10))));
-                        int side = *(int*)(data + 14);
-                        short len = *(short*)(data + 18);
-                        char* uiml = new char[len + 1];
-                        memcpy(uiml, data + 20, len);
-                        uiml[len] = 0;
-                        ((Game*)(Menu*)menuRegister->get("game"))
-                            ->setTargetUIML(uiml);
-                        delete[] uiml;
-                        break;
+                        {
+                            setTarget(zBlockAt(Vec3<int>(*(int*)(data + 2),
+                                *(int*)(data + 6),
+                                *(int*)(data + 10))));
+                            int side = *(int*)(data + 14);
+                            short len = *(short*)(data + 18);
+                            char* uiml = new char[len + 1];
+                            memcpy(uiml, data + 20, len);
+                            uiml[len] = 0;
+                            ((Game*)(Menu*)menuRegister->get("game"))
+                                ->setTargetUIML(uiml);
+                            delete[] uiml;
+                            break;
+                        }
                     }
                     break;
                 }