actually populate the replay browser; fix listbox ContentHeight not being reset.
This commit is contained in:
@@ -8,6 +8,8 @@
|
|||||||
*/
|
*/
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
using System.IO;
|
||||||
|
using System.Drawing;
|
||||||
namespace OpenRA.Widgets.Delegates
|
namespace OpenRA.Widgets.Delegates
|
||||||
{
|
{
|
||||||
public class ReplayBrowserDelegate : IWidgetDelegate
|
public class ReplayBrowserDelegate : IWidgetDelegate
|
||||||
@@ -22,6 +24,40 @@ namespace OpenRA.Widgets.Delegates
|
|||||||
Widget.CloseWindow();
|
Widget.CloseWindow();
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* find some replays? */
|
||||||
|
var rl = widget.GetWidget<ListBoxWidget>("REPLAY_LIST");
|
||||||
|
var replayDir = Path.Combine(Game.SupportDir, "Replays");
|
||||||
|
|
||||||
|
var template = widget.GetWidget<LabelWidget>("REPLAY_TEMPLATE");
|
||||||
|
currentReplay = null;
|
||||||
|
|
||||||
|
rl.Children.Clear();
|
||||||
|
rl.ContentHeight = 0;
|
||||||
|
var offset = template.Bounds.Y;
|
||||||
|
foreach (var replayFile in Directory.GetFiles(replayDir, "*.rep"))
|
||||||
|
AddReplay(rl, replayFile, template, ref offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
string currentReplay = null;
|
||||||
|
|
||||||
|
void AddReplay(ListBoxWidget list, string filename, LabelWidget template, ref int offset)
|
||||||
|
{
|
||||||
|
var entry = template.Clone() as LabelWidget;
|
||||||
|
entry.Id = "REPLAY_";
|
||||||
|
entry.GetText = () => " {0}".F(Path.GetFileName(filename));
|
||||||
|
entry.GetBackground = () => (currentReplay == filename) ? "dialog2" : null;
|
||||||
|
entry.OnMouseDown = mi => { currentReplay = filename; return true; };
|
||||||
|
entry.Parent = list;
|
||||||
|
entry.Bounds = new Rectangle(entry.Bounds.X, offset, template.Bounds.Width, template.Bounds.Height);
|
||||||
|
entry.IsVisible = () => true;
|
||||||
|
list.AddChild(entry);
|
||||||
|
|
||||||
|
if (offset == template.Bounds.Y)
|
||||||
|
currentReplay = filename;
|
||||||
|
|
||||||
|
offset += template.Bounds.Height;
|
||||||
|
list.ContentHeight += template.Bounds.Height;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -158,6 +158,7 @@ namespace OpenRA.Mods.RA.Widgets.Delegates
|
|||||||
|
|
||||||
r.GetWidget("JOINSERVER_PROGRESS_TITLE").Visible = false;
|
r.GetWidget("JOINSERVER_PROGRESS_TITLE").Visible = false;
|
||||||
|
|
||||||
|
sl.ContentHeight = 0;
|
||||||
int offset = ServerTemplate.Bounds.Y;
|
int offset = ServerTemplate.Bounds.Y;
|
||||||
int i = 0;
|
int i = 0;
|
||||||
foreach (var loop in games.Where(g => g.State == 1)) /* only "waiting for players" */
|
foreach (var loop in games.Where(g => g.State == 1)) /* only "waiting for players" */
|
||||||
|
|||||||
Reference in New Issue
Block a user