Фильтр логиста: группа «Стройматериалы» - древесина, булыжник, цемент, бетонная смесь; «Руда и камень» - только добыча (#18)

Новая группа у старых урн берёт выбор «Материалов»; значок «Материалов» - ткань. Сталь - в «Слитках».

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
AlexCube
2026-10-23 22:35:01 +03:00
co-authored by Claude Opus 5.5
parent 54cafab4f1
commit 61a7e35bad
4 changed files with 27 additions and 11 deletions
+1
View File
@@ -66,6 +66,7 @@ necroGroup21,UI,Tooltip,,,,Other,,Sonstiges,Otros,Divers,Altro,その他,기타,
necroGroup22,UI,Tooltip,,,,Chicken feed,,Hühnerfutter,Pienso para gallinas,Nourriture pour poules,Mangime per galline,鶏の餌,닭 모이,Karma dla kur,Ração para galinhas,Корм для кур,Tavuk yemi,鸡饲料,雞飼料
necroGroup23,UI,Tooltip,,,,Livestock,,Nutztiere,Animales de granja,Animaux de ferme,Animali da cortile,家畜,가축,Zwierzęta hodowlane,Criação,Живность,Çiftlik hayvanları,家畜,家畜
necroGroup24,UI,Tooltip,,,,Vehicles,,Fahrzeuge,Vehículos,Véhicules,Veicoli,乗り物,탈것,Pojazdy,Veículos,Транспорт,Araçlar,载具,載具
necroGroup25,UI,Tooltip,,,,Building materials,,Baumaterial,Materiales de construcción,Matériaux de construction,Materiali da costruzione,建材,건축 자재,Materiały budowlane,Materiais de construção,Стройматериалы,Yapı malzemeleri,建筑材料,建築材料
necroGroupOn,UI,Tooltip,,,,carried,,wird getragen,se transporta,transporté,si trasporta,運ぶ,옮김,przenoszone,transportado,носит,taşınır,搬运,搬運
necroGroupOff,UI,Tooltip,,,,not carried,,wird nicht getragen,no se transporta,pas transporté,non si trasporta,運ばない,옮기지 않음,nieprzenoszone,não transportado,не носит,taşınmaz,不搬运,不搬運
necroUrnFilterTitle,UI,Tooltip,,,,What to carry,,Was tragen,Qué llevar,Quoi porter,Cosa portare,運ぶもの,옮길 것,Co nosić,O que levar,Что носить,Ne taşınsın,搬运什么,搬運什麼
1 Key File Type UsedInMainMenu NoTranslate KeepLoaded english Context / Alternate Text german spanish french italian japanese koreana polish brazilian russian turkish schinese tchinese
66 necroGroup22 UI Tooltip Chicken feed Hühnerfutter Pienso para gallinas Nourriture pour poules Mangime per galline 鶏の餌 닭 모이 Karma dla kur Ração para galinhas Корм для кур Tavuk yemi 鸡饲料 雞飼料
67 necroGroup23 UI Tooltip Livestock Nutztiere Animales de granja Animaux de ferme Animali da cortile 家畜 가축 Zwierzęta hodowlane Criação Живность Çiftlik hayvanları 家畜 家畜
68 necroGroup24 UI Tooltip Vehicles Fahrzeuge Vehículos Véhicules Veicoli 乗り物 탈것 Pojazdy Veículos Транспорт Araçlar 载具 載具
69 necroGroup25 UI Tooltip Building materials Baumaterial Materiales de construcción Matériaux de construction Materiali da costruzione 建材 건축 자재 Materiały budowlane Materiais de construção Стройматериалы Yapı malzemeleri 建筑材料 建築材料
70 necroGroupOn UI Tooltip carried wird getragen se transporta transporté si trasporta 運ぶ 옮김 przenoszone transportado носит taşınır 搬运 搬運
71 necroGroupOff UI Tooltip not carried wird nicht getragen no se transporta pas transporté non si trasporta 運ばない 옮기지 않음 nieprzenoszone não transportado не носит taşınmaz 不搬运 不搬運
72 necroUrnFilterTitle UI Tooltip What to carry Was tragen Qué llevar Quoi porter Cosa portare 運ぶもの 옮길 것 Co nosić O que levar Что носить Ne taşınsın 搬运什么 搬運什麼
+3 -1
View File
@@ -210,7 +210,7 @@
</append>
<!-- Фильтр урны-логиста (16.10.2026, HarmonySrc/CinerariumFilterWindow.cs, CinerariumGroups.cs): значки групп предметов
в окне «Содержимое» рядом с ячейкой черепа. Окно в группе bagStorage (xui.xml) - контроллер прячет его, если окно
открыто не урной-логистом (сумки транспорта и волка). f0..f24 - рамки, g0..g24 - значки (иконки ставит контроллер). -->
открыто не урной-логистом (сумки транспорта и волка). f0..f25 - рамки, g0..g25 - значки (иконки ставит контроллер). -->
<append xpath="/windows">
<window name="necroUrnFilter" width="348" height="335" depth="5" panel="Left" backgroundcolor="[black]" cursor_area="true" controller="NecromancerTome.NecroUrnFilter, NecromancerHarmony">
<rect name="header" height="43" depth="0">
@@ -268,6 +268,8 @@
<sprite depth="3" name="g23" pos="288,-219" width="48" height="48" atlas="ItemIconAtlas" sprite="oldCash" on_press="true" sound="[paging_click]" foregroundlayer="true" />
<sprite depth="2" name="f24" pos="6,-273" width="52" height="52" sprite="menu_empty2px" type="sliced" fillcenter="false" />
<sprite depth="3" name="g24" pos="8,-275" width="48" height="48" atlas="ItemIconAtlas" sprite="oldCash" on_press="true" sound="[paging_click]" foregroundlayer="true" />
<sprite depth="2" name="f25" pos="62,-273" width="52" height="52" sprite="menu_empty2px" type="sliced" fillcenter="false" />
<sprite depth="3" name="g25" pos="64,-275" width="48" height="48" atlas="ItemIconAtlas" sprite="oldCash" on_press="true" sound="[paging_click]" foregroundlayer="true" />
</window>
</append>
<!-- Лимит урн (#65, 23.10.2026; HarmonySrc/CinerariumLimitPanel.cs): блок справа от ячеек урны в «Содержимом» - всего,
+3 -2
View File
@@ -356,11 +356,12 @@ namespace NecromancerTome
}
}
// Группы, которых урна ещё не знала, берут выбор группы, где их предметы лежали раньше: корм кур - «Сырое»,
// живность и транспорт (23.10) - «Прочее»; остальные новые - включены.
// живность и транспорт (23.10) - «Прочее», стройматериалы (23.10) - «Материалы»; остальные новые - включены.
for (int g = known; g < CinerariumGroups.Count; g++)
{
int from = g == CinerariumGroups.ChickenFeed ? CinerariumGroups.Raw :
g == CinerariumGroups.Livestock || g == CinerariumGroups.Vehicles ? CinerariumGroups.Other : -1;
g == CinerariumGroups.Livestock || g == CinerariumGroups.Vehicles ? CinerariumGroups.Other :
g == CinerariumGroups.Building ? CinerariumGroups.Materials : -1;
bool on = from < 0 || (GroupMask & (1u << from)) != 0;
GroupMask = on ? GroupMask | (1u << g) : GroupMask & ~(1u << g);
}
+20 -8
View File
@@ -21,8 +21,11 @@ namespace NecromancerTome
// 17.10: «Корм для кур вынеси в отдельную группу» (был в «Сыром»).
ChickenFeed = 22,
// 23.10 (проверка всех предметов: куры и сложенный транспорт падали в «Прочее»; «Можно и добавить группы»).
Livestock = 23, Vehicles = 24;
public const int Count = 25;
Livestock = 23, Vehicles = 24,
// 23.10: «Заведи группу стройматериалов. Руда и камень отдельно. Сортировка должна быть удобной и с учётом
// производства» - то, чем игра улучшает блоки и что для этого производят: булыжник, цемент, бетонная смесь.
Building = 25;
public const int Count = 26;
public const uint All = (1u << Count) - 1;
/// <summary>Значок группы - иконка типичного предмета (ItemIconAtlas).</summary>
@@ -30,12 +33,12 @@ namespace NecromancerTome
{
"foodMeatStew", "foodCanChili", "foodRawMeat", "foodCropCorn", "plantedChrysanthemum3Harvest", "plantedCorn1",
"drinkJarBoiledWater", "medicalFirstAidKit", "resourceRockSmall", "resourceForgedSteel", "resourceMechanicalParts",
"resourceWood", "resourceGunPowder", "meleeToolPickT1IronPickaxe", "gunHandgunT1Pistol", "ammo9mmBulletBall",
"resourceCloth", "resourceGunPowder", "meleeToolPickT1IronPickaxe", "gunHandgunT1Pistol", "ammo9mmBulletBall",
"armorMinerHelmet", "modGunLaserSight", "bookArtOfMiningLuckyStrike", "cobblestoneMaster", "necroSkull", "oldCash",
"resourceChickenFeed", "domesticatedChicken", "vehicleMinibikePlaceable"
"resourceChickenFeed", "domesticatedChicken", "vehicleMinibikePlaceable", "resourceConcreteMix"
};
/// <summary>Ключ названия группы в Localization.csv: necroGroup0..necroGroup24.</summary>
/// <summary>Ключ названия группы в Localization.csv: necroGroup0..necroGroup25.</summary>
public static string NameKey(int _g) => "necroGroup" + _g;
static readonly HashSet<string> OreNames = new HashSet<string>
@@ -43,9 +46,14 @@ namespace NecromancerTome
"resourceRockSmall", "resourceRockSmallBundle", "resourceScrapIron", "resourceScrapIronBundle", "resourceScrapLead",
"resourceLeadBundle", "resourceCoal", "resourceCoalBundle", "resourcePotassiumNitratePowder",
"resourcePotassiumNitratePowderBundle", "resourceOilShale", "resourceOilShaleBundle", "resourceClayLump",
"resourceCrushedSand", "resourceCobblestones", "resourceGoldNugget", "resourceSilverNugget", "resourceRawDiamond",
"resourceCrushedSand", "resourceGoldNugget", "resourceSilverNugget", "resourceRawDiamond",
"resourceSnowBall"
};
/// <summary>Стройматериалы (23.10): древесина, булыжник, цемент, бетонная смесь - чем строят и улучшают блоки; сталь - в «Слитках».</summary>
static readonly HashSet<string> BuildingNames = new HashSet<string>
{
"resourceCobblestones", "resourceCement", "resourceConcreteMix", "resourceWood", "resourceWoodBundle" // древесина - 23.10, пользователь
};
static readonly HashSet<string> IngotNames = new HashSet<string> { "resourceForgedIron", "resourceForgedSteel" };
static readonly HashSet<string> ChemNames = new HashSet<string>
{
@@ -54,8 +62,8 @@ namespace NecromancerTome
};
static readonly HashSet<string> MaterialNames = new HashSet<string>
{
"resourceWood", "resourceWoodBundle", "resourceCloth", "resourceLeather", "resourceBone", "resourceFeather",
"resourceYuccaFibers", "resourcePaper", "resourceCement", "resourceConcreteMix", "resourceBeeswax", "resourceCandleStick",
"resourceCloth", "resourceLeather", "resourceBone", "resourceFeather",
"resourceYuccaFibers", "resourcePaper", "resourceBeeswax", "resourceCandleStick",
"resourceAnimalFat"
};
/// <summary>Детали, которые теги отнесли бы не туда (гвозди - патроны гвоздомёта).</summary>
@@ -170,6 +178,10 @@ namespace NecromancerTome
{
return Books;
}
if (BuildingNames.Contains(n))
{
return Building;
}
if (OreNames.Contains(n))
{
return Ore;