Revert "DevEnableTech now displays from all factions"
This reverts commit 5d5f302d07.
This commit is contained in:
@@ -18,43 +18,42 @@ using OpenRA.Widgets;
|
||||
|
||||
namespace OpenRA.Mods.RA.Widgets
|
||||
{
|
||||
public class ProductionTab
|
||||
{
|
||||
public string Name;
|
||||
public ProductionQueue Queue;
|
||||
}
|
||||
|
||||
public class ProductionTabGroup
|
||||
{
|
||||
public List<ProductionQueue> Tabs = new List<ProductionQueue>();
|
||||
public List<ProductionTab> Tabs = new List<ProductionTab>();
|
||||
public string Group;
|
||||
public bool Alert { get { return Tabs.Any(t => t.CurrentDone); } }
|
||||
public int NextQueueName = 1;
|
||||
public bool Alert { get { return Tabs.Any(t => t.Queue.CurrentDone); } }
|
||||
|
||||
public void Update(IEnumerable<ProductionQueue> allQueues)
|
||||
{
|
||||
var queues = allQueues.Where(q => q.Info.Group == Group).ToList();
|
||||
var names = new Queue<int>(Enumerable.Range(1, queues.Count).Except(queues.Select(q => q.Name)));
|
||||
var tabs = new List<ProductionTab>();
|
||||
|
||||
// Assign names based on available numbers
|
||||
foreach (var queue in queues.Where(q => q.Name == 0))
|
||||
// Remove stale queues
|
||||
foreach (var t in Tabs)
|
||||
{
|
||||
foreach (var q in queues.Where(q => q.Name > 0))
|
||||
if (queue.Actor == q.Actor)
|
||||
queue.Name = q.Name;
|
||||
|
||||
if (queue.Name == 0)
|
||||
queue.Name = names.Dequeue();
|
||||
if (!queues.Contains(t.Queue))
|
||||
continue;
|
||||
|
||||
tabs.Add(t);
|
||||
queues.Remove(t.Queue);
|
||||
}
|
||||
|
||||
Tabs = queues.OrderBy(q => q.Name).ToList();
|
||||
|
||||
// distinction between tabs of the same actor
|
||||
foreach (var group in queues.GroupBy(q => q.Actor))
|
||||
{
|
||||
if (group.Count() > 1)
|
||||
// Add new queues
|
||||
foreach (var queue in queues)
|
||||
tabs.Add(new ProductionTab()
|
||||
{
|
||||
var n = 'a';
|
||||
foreach (var queue in group)
|
||||
queue.DisplayName = queue.Name + (n++).ToString();
|
||||
}
|
||||
else
|
||||
group.First().DisplayName = group.First().Name.ToString();
|
||||
|
||||
}
|
||||
Name = (NextQueueName++).ToString(),
|
||||
Queue = queue
|
||||
});
|
||||
Tabs = tabs;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -99,7 +98,7 @@ namespace OpenRA.Mods.RA.Widgets
|
||||
return true;
|
||||
|
||||
// Prioritize alerted queues
|
||||
var queues = Groups[queueGroup].Tabs.Select(t => t)
|
||||
var queues = Groups[queueGroup].Tabs.Select(t => t.Queue)
|
||||
.OrderByDescending(q => q.CurrentDone ? 1 : 0)
|
||||
.ToList();
|
||||
|
||||
@@ -172,13 +171,13 @@ namespace OpenRA.Mods.RA.Widgets
|
||||
{
|
||||
var rect = new Rectangle(origin.X + contentWidth, origin.Y, TabWidth, rb.Height);
|
||||
var hover = !leftHover && !rightHover && Ui.MouseOverWidget == this && rect.Contains(Viewport.LastMousePos);
|
||||
var baseName = tab == CurrentQueue ? "button-highlighted" : "button";
|
||||
var baseName = tab.Queue == CurrentQueue ? "button-highlighted" : "button";
|
||||
ButtonWidget.DrawBackground(baseName, rect, false, false, hover, false);
|
||||
contentWidth += TabWidth - 1;
|
||||
|
||||
var textSize = font.Measure(tab.DisplayName);
|
||||
var textSize = font.Measure(tab.Name);
|
||||
var position = new int2(rect.X + (rect.Width - textSize.X) / 2, rect.Y + (rect.Height - textSize.Y) / 2);
|
||||
font.DrawTextWithContrast(tab.DisplayName, position, tab.CurrentDone ? Color.Gold : Color.White, Color.Black, 1);
|
||||
font.DrawTextWithContrast(tab.Name, position, tab.Queue.CurrentDone ? Color.Gold : Color.White, Color.Black, 1);
|
||||
}
|
||||
|
||||
Game.Renderer.DisableScissor();
|
||||
@@ -211,7 +210,7 @@ namespace OpenRA.Mods.RA.Widgets
|
||||
.Select(g => g.Key).FirstOrDefault();
|
||||
|
||||
// Queue destroyed, others of same type: switch to another tab
|
||||
else if (!Groups[queueGroup].Tabs.Contains(CurrentQueue))
|
||||
else if (!Groups[queueGroup].Tabs.Select(t => t.Queue).Contains(CurrentQueue))
|
||||
SelectNextTab(false);
|
||||
}
|
||||
}
|
||||
@@ -265,7 +264,7 @@ namespace OpenRA.Mods.RA.Widgets
|
||||
var offsetloc = mi.Location - new int2(leftButtonRect.Right - 1 + (int)listOffset, leftButtonRect.Y);
|
||||
if (offsetloc.X > 0 && offsetloc.X < contentWidth)
|
||||
{
|
||||
CurrentQueue = Groups[queueGroup].Tabs[offsetloc.X / (TabWidth - 1)];
|
||||
CurrentQueue = Groups[queueGroup].Tabs[offsetloc.X / (TabWidth - 1)].Queue;
|
||||
Sound.PlayNotification(world.Map.Rules, null, "Sounds", "ClickSound", null);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user