Procházet zdrojové kódy

reset stamina, hp, hunger and thirst for players with gamemode 1 in each tick

Kolja Strohm před 1 týdnem
rodič
revize
018fb1eca4

+ 0 - 5
FactoryCraft/Constants.h

@@ -9,11 +9,6 @@
 #define MAX_AIR_LEVEL            450
 #define NUM_TICK_WORKERS         4
 #define ITEM_CACHE_SIZE          256
-#ifdef _DEBUG
-#    define DEFAULT_VIEW_DISTANCE 2
-#else
-#    define DEFAULT_VIEW_DISTANCE 32
-#endif
 #define MAX_SURFACE_HEIGHT    50
 #define VARIABLE_SURFACE_PART 0.5f
 #define MAX_TICKS_PER_SECOND  20

+ 1 - 1
FactoryCraft/Entity.cpp

@@ -995,7 +995,7 @@ void Entity::tick(const Dimension* zDimension, double seconds)
         if (stamina < staminaCost)
         {
             staminaCost = stamina;
-            moveDir *= stamina / staminaCost;
+            moveDir *= staminaCost > 0 ? stamina / staminaCost : 0;
         }
     }
     if (!(movementFlags & MovementFlags::FLYING)

+ 0 - 1
FactoryCraft/GameClient.cpp

@@ -13,7 +13,6 @@ GameClient::GameClient(Player* zPlayer, FCKlient* client)
     : Thread(),
       zPlayer(zPlayer),
       client(client),
-      viewDistance(DEFAULT_VIEW_DISTANCE),
       first(1),
       online(1),
       backgroundFinished(0),

+ 0 - 1
FactoryCraft/GameClient.h

@@ -25,7 +25,6 @@ private:
     Framework::Critical queueCs;
     Framework::Synchronizer emptyForegroundQueueSync;
     Framework::Synchronizer emptyBackgroundQueueSync;
-    int viewDistance;
     bool first;
     bool online;
     bool backgroundFinished;

+ 31 - 23
FactoryCraft/Player.cpp

@@ -198,6 +198,13 @@ const char* Player::getName() const
 
 void Player::tick(const Dimension* zDimension, double seconds)
 {
+    if (gameMode)
+    {
+        setStamina(maxStamina);
+        setHP(0, 0, 0, maxHP);
+        setThirst(maxThirst);
+        setHunger(maxHunger);
+    }
     if ((keyState | Key::LEFT_HAND_ACTION) == keyState)
         useItemSlot(itemBar.get(leftHandPosition), true);
     if ((keyState | Key::RIGHT_HAND_ACTION) == keyState)
@@ -410,38 +417,39 @@ void Player::playerApi(
             break;
         }
     case 11: // give Items
-    {
-        if (gameMode)
         {
-            int type;
-            zRequest->read((char*)&type, 4);
-            bool fullStack = 0;
-            zRequest->read((char*)&fullStack, 1);
-            Item *item = Game::INSTANCE->zItemType(type)->createItem();
-            if (item)
+            if (gameMode)
             {
-                ItemStack* stack = new ItemStack(
-                    item, fullStack ? item->getMaxStackSize() : 1);
-                unsaveAddItem(stack, NO_DIRECTION, 0);
-                if (stack->getSize() > 0)
+                int type;
+                zRequest->read((char*)&type, 4);
+                bool fullStack = 0;
+                zRequest->read((char*)&fullStack, 1);
+                Item* item = Game::INSTANCE->zItemType(type)->createItem();
+                if (item)
+                {
+                    ItemStack* stack = new ItemStack(
+                        item, fullStack ? item->getMaxStackSize() : 1);
+                    unsaveAddItem(stack, NO_DIRECTION, 0);
+                    if (stack->getSize() > 0)
+                    {
+                        Game::INSTANCE->zChat()->sendMessageTo(
+                            "Der Stack konnte nicht vollständig hinzugefügt "
+                            "werden. Eventuell ist das Inventar voll.",
+                            this,
+                            Chat::CHANNEL_ERROR);
+                    }
+                    stack->release();
+                }
+                else
                 {
                     Game::INSTANCE->zChat()->sendMessageTo(
-                        "Der Stack konnte nicht vollständig hinzugefügt werden. Eventuell ist das Inventar voll.",
+                        "Ein Item dieses Typs kann nicht erstellt werden.",
                         this,
                         Chat::CHANNEL_ERROR);
                 }
-                stack->release();
-            }
-            else
-            {
-                Game::INSTANCE->zChat()->sendMessageTo(
-                    "Ein Item dieses Typs kann nicht erstellt werden.",
-                    this,
-                    Chat::CHANNEL_ERROR);
             }
+            break;
         }
-        break;
-    }
     }
 }