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; } }
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); }
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); }