public override void OnPoll(int value, int x, int y, int z, int pollPass)
 {
     if (m_isRotEnabled)
     {
         int   num       = Terrain.ExtractContents(value);
         Block block     = BlocksManager.Blocks[num];
         int   rotPeriod = block.GetRotPeriod(value);
         if (rotPeriod > 0 && pollPass % rotPeriod == 0)
         {
             int num2 = block.GetDamage(value) + 1;
             value = ((num2 > 1) ? block.GetDamageDestructionValue(value) : block.SetDamage(value, num2));
             base.SubsystemTerrain.ChangeCell(x, y, z, value);
         }
     }
 }
        public void ItemsScanned(ReadOnlyList <ScannedItemData> items)
        {
            int num = (int)((m_subsystemGameInfo.TotalElapsedGameTime - m_lastRotTime) / 60.0);

            if (num > 0)
            {
                if (m_isRotEnabled)
                {
                    foreach (ScannedItemData item in items)
                    {
                        int   num2      = Terrain.ExtractContents(item.Value);
                        Block block     = BlocksManager.Blocks[num2];
                        int   rotPeriod = block.GetRotPeriod(item.Value);
                        if (rotPeriod > 0)
                        {
                            int num3 = block.GetDamage(item.Value);
                            for (int i = 0; i < num; i++)
                            {
                                if (num3 > 1)
                                {
                                    break;
                                }
                                if ((i + m_rotStep) % rotPeriod == 0)
                                {
                                    num3++;
                                }
                            }
                            if (num3 <= 1)
                            {
                                m_subsystemItemsScanner.TryModifyItem(item, block.SetDamage(item.Value, num3));
                            }
                            else
                            {
                                m_subsystemItemsScanner.TryModifyItem(item, block.GetDamageDestructionValue(item.Value));
                            }
                        }
                    }
                }
                m_rotStep     += num;
                m_lastRotTime += (float)num * 60f;
            }
        }
Esempio n. 3
0
 public override void MeasureOverride(Vector2 parentAvailableSize)
 {
     if (m_inventory != null)
     {
         bool flag = m_inventory is ComponentCreativeInventory || m_inventory is ComponentFurnitureInventory;
         int  num  = m_inventory.GetSlotCount(m_slotIndex);
         if (!flag && m_dragMode.HasValue)
         {
             num = ((m_dragMode.Value != 0) ? MathUtils.Max(num - 1, 0) : 0);
         }
         m_rectangleWidget.IsVisible = true;
         if (num > 0)
         {
             int   slotValue = m_inventory.GetSlotValue(m_slotIndex);
             int   num2      = Terrain.ExtractContents(slotValue);
             Block block     = BlocksManager.Blocks[num2];
             bool  flag2     = block.GetRotPeriod(slotValue) > 0 && block.GetDamage(slotValue) > 0;
             m_blockIconWidget.Value     = Terrain.ReplaceLight(slotValue, 15);
             m_blockIconWidget.IsVisible = !HideBlockIcon;
             if (num != m_lastCount)
             {
                 m_countWidget.Text = num.ToString();
                 m_lastCount        = num;
             }
             m_countWidget.IsVisible              = (num > 1 && !flag);
             m_editOverlayWidget.IsVisible        = (!HideEditOverlay && block.IsEditable);
             m_interactiveOverlayWidget.IsVisible = (!HideInteractiveOverlay && ((m_subsystemTerrain != null) ? block.IsInteractive(m_subsystemTerrain, slotValue) : block.DefaultIsInteractive));
             m_foodOverlayWidget.IsVisible        = (!HideFoodOverlay && block.GetRotPeriod(slotValue) > 0);
             m_foodOverlayWidget.FillColor        = (flag2 ? new Color(128, 64, 0) : new Color(160, 160, 160));
             if (!flag && !HideHealthBar && block.Durability >= 0)
             {
                 int damage = block.GetDamage(slotValue);
                 m_healthBarWidget.IsVisible = true;
                 m_healthBarWidget.Value     = (float)(block.Durability - damage) / (float)block.Durability;
             }
             else
             {
                 m_healthBarWidget.IsVisible = false;
             }
         }
         else
         {
             m_blockIconWidget.IsVisible          = false;
             m_countWidget.IsVisible              = false;
             m_healthBarWidget.IsVisible          = false;
             m_editOverlayWidget.IsVisible        = false;
             m_interactiveOverlayWidget.IsVisible = false;
             m_foodOverlayWidget.IsVisible        = false;
         }
         m_highlightWidget.IsVisible    = !HideHighlightRectangle;
         m_highlightWidget.OutlineColor = Color.Transparent;
         m_highlightWidget.FillColor    = Color.Transparent;
         m_splitLabelWidget.IsVisible   = false;
         if (m_slotIndex == m_inventory.ActiveSlotIndex)
         {
             m_highlightWidget.OutlineColor = new Color(0, 0, 0);
             m_highlightWidget.FillColor    = new Color(0, 0, 0, 80);
         }
         if (IsSplitMode())
         {
             m_highlightWidget.OutlineColor = new Color(255, 64, 0);
             m_splitLabelWidget.IsVisible   = true;
         }
     }
     else
     {
         m_rectangleWidget.IsVisible          = false;
         m_highlightWidget.IsVisible          = false;
         m_blockIconWidget.IsVisible          = false;
         m_countWidget.IsVisible              = false;
         m_healthBarWidget.IsVisible          = false;
         m_editOverlayWidget.IsVisible        = false;
         m_interactiveOverlayWidget.IsVisible = false;
         m_foodOverlayWidget.IsVisible        = false;
         m_splitLabelWidget.IsVisible         = false;
     }
     base.IsDrawRequired = (m_inventoryDragData != null);
     base.MeasureOverride(parentAvailableSize);
 }
Esempio n. 4
0
        public Dictionary <string, string> GetBlockProperties(int value)
        {
            Dictionary <string, string> dictionary = new Dictionary <string, string>();
            int   num   = Terrain.ExtractContents(value);
            Block block = BlocksManager.Blocks[num];

            if (block.DefaultEmittedLightAmount > 0)
            {
                dictionary.Add(LanguageControl.Get(fName, 1), block.DefaultEmittedLightAmount.ToString());
            }
            if (block.FuelFireDuration > 0f)
            {
                dictionary.Add(LanguageControl.Get(fName, 2), block.FuelFireDuration.ToString());
            }
            dictionary.Add(LanguageControl.Get(fName, 3), (block.MaxStacking > 1) ? string.Format(LanguageControl.Get(fName, 4), block.MaxStacking.ToString()) : LanguageControl.Get("Usual", "no"));
            dictionary.Add(LanguageControl.Get(fName, 5), (block.FireDuration > 0f) ? LanguageControl.Get("Usual", "yes") : LanguageControl.Get("Usual", "no"));
            if (block.GetNutritionalValue(value) > 0f)
            {
                dictionary.Add(LanguageControl.Get(fName, 6), block.GetNutritionalValue(value).ToString());
            }
            if (block.GetRotPeriod(value) > 0)
            {
                dictionary.Add(LanguageControl.Get(fName, 7), string.Format(LanguageControl.Get(fName, 25), $"{(2 * block.GetRotPeriod(value) * 60f / 1200f):0.0}"));
            }
            if (block.DigMethod != 0)
            {
                dictionary.Add(LanguageControl.Get(fName, 8), LanguageControl.Get("DigMethod", block.DigMethod.ToString()));
                dictionary.Add(LanguageControl.Get(fName, 9), block.DigResilience.ToString());
            }
            if (block.ExplosionResilience > 0f)
            {
                dictionary.Add(LanguageControl.Get(fName, 10), block.ExplosionResilience.ToString());
            }
            if (block.GetExplosionPressure(value) > 0f)
            {
                dictionary.Add(LanguageControl.Get(fName, 11), block.GetExplosionPressure(value).ToString());
            }
            bool flag = false;

            if (block.GetMeleePower(value) > 1f)
            {
                dictionary.Add(LanguageControl.Get(fName, 12), block.GetMeleePower(value).ToString());
                flag = true;
            }
            if (block.GetMeleePower(value) > 1f)
            {
                dictionary.Add(LanguageControl.Get(fName, 13), $"{100f * block.GetMeleeHitProbability(value):0}%");
                flag = true;
            }
            if (block.GetProjectilePower(value) > 1f)
            {
                dictionary.Add(LanguageControl.Get(fName, 14), block.GetProjectilePower(value).ToString());
                flag = true;
            }
            if (block.ShovelPower > 1f)
            {
                dictionary.Add(LanguageControl.Get(fName, 15), block.ShovelPower.ToString());
                flag = true;
            }
            if (block.HackPower > 1f)
            {
                dictionary.Add(LanguageControl.Get(fName, 16), block.HackPower.ToString());
                flag = true;
            }
            if (block.QuarryPower > 1f)
            {
                dictionary.Add(LanguageControl.Get(fName, 17), block.QuarryPower.ToString());
                flag = true;
            }
            if (flag && block.Durability > 0)
            {
                dictionary.Add(LanguageControl.Get(fName, 18), block.Durability.ToString());
            }
            if (block.DefaultExperienceCount > 0f)
            {
                dictionary.Add(LanguageControl.Get(fName, 19), block.DefaultExperienceCount.ToString());
            }
            if (block is ClothingBlock)
            {
                ClothingData clothingData = ClothingBlock.GetClothingData(Terrain.ExtractData(value));
                dictionary.Add(LanguageControl.Get(fName, 20), clothingData.CanBeDyed ? LanguageControl.Get("Usual", "yes") : LanguageControl.Get("Usual", "no"));
                dictionary.Add(LanguageControl.Get(fName, 21), $"{(int)(clothingData.ArmorProtection * 100f)}%");
                dictionary.Add(LanguageControl.Get(fName, 22), clothingData.Sturdiness.ToString());
                dictionary.Add(LanguageControl.Get(fName, 23), $"{clothingData.Insulation:0.0} clo");
                dictionary.Add(LanguageControl.Get(fName, 24), $"{clothingData.MovementSpeedFactor * 100f:0}%");
            }
            return(dictionary);
        }