#region Copyright & License Information /* * Copyright 2007-2011 The OpenRA Developers (see AUTHORS) * This file is part of OpenRA, which is free software. It is made * available to you under the terms of the GNU General Public License * as published by the Free Software Foundation. For more information, * see COPYING. */ #endregion using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Text; using System.Threading; using OpenRA.FileFormats; using OpenRA.Graphics; using OpenRA.Mods.RA.Widgets.Delegates; using OpenRA.Server; using OpenRA.Widgets; namespace OpenRA.Mods.Cnc.Widgets { public class CncModBrowserLogic : IWidgetDelegate { Mod currentMod; [ObjectCreator.UseCtor] public CncModBrowserLogic([ObjectCreator.Param] Widget widget, [ObjectCreator.Param] Action onSwitch, [ObjectCreator.Param] Action onExit) { var panel = widget.GetWidget("MODS_PANEL"); var modList = panel.GetWidget("MOD_LIST"); var loadButton = panel.GetWidget("LOAD_BUTTON"); loadButton.OnClick = () => { // TODO: This is crap var mods = new List() { currentMod.Id }; var m = currentMod; while (!string.IsNullOrEmpty(m.Requires)) { m = Mod.AllMods[currentMod.Requires]; mods.Add(m.Id); } Game.RunAfterTick(() => { Widget.CloseWindow(); onSwitch(); Game.InitializeWithMods(mods.ToArray()); }); }; loadButton.IsDisabled = () => currentMod.Id == Game.CurrentMods.Keys.First(); panel.GetWidget("BACK_BUTTON").OnClick = onExit; currentMod = Mod.AllMods[Game.modData.Manifest.Mods[0]]; // Mod list var modTemplate = modList.GetWidget("MOD_TEMPLATE"); foreach (var m in Mod.AllMods) { var mod = m.Value; var template = modTemplate.Clone() as ContainerWidget; template.GetBackground = () => (template.RenderBounds.Contains(Viewport.LastMousePos) ? "button-hover" : (currentMod == mod) ? "button-pressed" : null); template.OnMouseDown = mi => { if (mi.Button != MouseButton.Left) return false; currentMod = mod; return true; }; template.IsVisible = () => true; template.GetWidget("TITLE").GetText = () => mod.Title; template.GetWidget("VERSION").GetText = () => mod.Version; template.GetWidget("AUTHOR").GetText = () => mod.Author; modList.AddChild(template); } /* // Server info var infoPanel = panel.GetWidget("SERVER_INFO"); infoPanel.IsVisible = () => currentServer != null; infoPanel.GetWidget("SERVER_IP").GetText = () => currentServer.Address; infoPanel.GetWidget("SERVER_MODS").GetText = () => ServerBrowserDelegate.GenerateModsLabel(currentServer); infoPanel.GetWidget("MAP_TITLE").GetText = () => (CurrentMap() != null) ? CurrentMap().Title : "Unknown"; infoPanel.GetWidget("MAP_PLAYERS").GetText = () => GetPlayersLabel(currentServer); */ } } }