本文整理汇总了C#中VRage.Game.Entity.MyInventoryBase.ApplyChanges方法的典型用法代码示例。如果您正苦于以下问题:C# MyInventoryBase.ApplyChanges方法的具体用法?C# MyInventoryBase.ApplyChanges怎么用?C# MyInventoryBase.ApplyChanges使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类VRage.Game.Entity.MyInventoryBase
的用法示例。
在下文中一共展示了MyInventoryBase.ApplyChanges方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: RemoveItemsCombined
public void RemoveItemsCombined(MyInventoryBase inventory, DictionaryReader<MyDefinitionId, int> toRemove)
{
Clear();
foreach (var material in toRemove) // rename material to component
{
int groupAmount = 0;
MyComponentGroupDefinition group = MyDefinitionManager.Static.GetGroupForComponent(material.Key, out groupAmount);
// The component does not belong to any component group => we are looking exactly for the given component
if (group == null)
{
if (MySessionComponentEquivalency.Static != null && MySessionComponentEquivalency.Static.HasEquivalents(material.Key))
{
var eqGroup = MySessionComponentEquivalency.Static.GetEquivalents(material.Key);
if (eqGroup != null)
{
int amountToRemove = material.Value;
foreach (var element in eqGroup)
{
if (amountToRemove > 0)
{
var removed = inventory.RemoveItemsOfType(amountToRemove, element);
amountToRemove -= (int)removed;
}
else
{
break;
}
}
}
}
else
{
inventory.RemoveItemsOfType(material.Value, material.Key);
continue;
}
//MyComponentSubstitutionDefinition substitutionDefinition = null;
//if (MyDefinitionManager.Static.TryGetComponentSubstitutionDefinition(material.Key, out substitutionDefinition))
//{
// int amountToRemove = material.Value;
// foreach (var entry in substitutionDefinition.ProvidingComponents)
// {
// if (amountToRemove > 0)
// {
// var removed = inventory.RemoveItemsOfType(amountToRemove * entry.Value, entry.Key);
// amountToRemove -= (int)removed;
// }
// else
// {
// break;
// }
// }
// if (amountToRemove > 0)
// {
// var removed = inventory.RemoveItemsOfType(amountToRemove, material.Key);
// amountToRemove -= (int)removed;
// }
//}
//else
//{
// inventory.RemoveItemsOfType(material.Value, material.Key);
// continue;
//}
}
else
{
AddItem(group.Id, groupAmount, material.Value);
}
}
inventory.CountItems(m_componentCounts);
bool success = Solve(m_componentCounts);
Debug.Assert(success, "Could not combine required items!");
inventory.ApplyChanges(m_solution);
/*CheckUpdate();
m_remainder.Clear();
foreach (var material in toRemove)
{
m_remainder.Add(material.Key, material.Value);
}
bool success = true;
m_cuttingSolver.Clear();
foreach (var material in m_remainder)
{
int groupAmount = 0;
MyComponentGroupDefinition group = MyDefinitionManager.Static.GetGroupForComponent(material.Key, out groupAmount);
// The component does not belong to any component group => we are looking exactly for the given component
if (group == null)
{
success &= RemoveItemsOfTypeInternal(material.Key, material.Value);
Debug.Assert(success, "Could not find the required component although we were permitted to build!");
//.........这里部分代码省略.........