public override void Initialize(UserGameInfo game, GameProfile profile) { base.Initialize(game, profile); gamepadTimer.Enabled = true; UpdatePlayers(); }
public static GameProfile CleanClone(GameProfile profile) { GameProfile nprof = new GameProfile(); nprof.playerData = new List <PlayerInfo>(); nprof.screens = profile.screens.ToList(); List <PlayerInfo> source = profile.playerData; for (int i = 0; i < source.Count; i++) { PlayerInfo player = source[i]; if (player.ScreenIndex != -1) { // only add valid players to the clean version nprof.playerData.Add(player); } } Dictionary <string, object> noptions = new Dictionary <string, object>(); foreach (var opt in profile.Options) { noptions.Add(opt.Key, opt.Value); } nprof.options = noptions; return(nprof); }
public HandlerContext(GameProfile prof, PlayerInfo info) { profile = prof; PlayerInfo = info; Options = prof.Options; }
public HandlerContext(GameProfile prof, PlayerInfo info, bool hasKeyboard) { profile = prof; PlayerInfo = info; Options = prof.Options; bHasKeyboardPlayer = hasKeyboard; }
/// <summary> /// Clones this Game Info into a new Generic Context /// </summary> /// <returns></returns> public virtual HandlerContext CreateContext(GameProfile profile, PlayerInfo info) { HandlerContext context = new HandlerContext(profile, info); ObjectUtil.DeepCopy(this, context); return(context); }
/// <summary> /// Clones this Game Info into a new Generic Context /// </summary> /// <returns></returns> public HandlerContext CreateContext(GameProfile profile, PlayerInfo info) { HandlerContext context = new HandlerContext(profile, info); Type t = GetType(); PropertyInfo[] props = t.GetProperties(); FieldInfo[] fields = t.GetFields(); Type c = context.GetType(); PropertyInfo[] cprops = c.GetProperties(); FieldInfo[] cfields = c.GetFields(); for (int i = 0; i < props.Length; i++) { PropertyInfo source = props[i]; PropertyInfo dest = cprops.FirstOrDefault(k => k.Name == source.Name); if (dest != null && source.PropertyType == dest.PropertyType && dest.CanWrite) { // TODO: this is dangerous for lists/dictionaries if the handler changes the size of anything object value = source.GetValue(this, null); dest.SetValue(context, value, null); } else { FieldInfo fdest = cfields.FirstOrDefault(k => k.Name == source.Name); if (fdest != null && source.PropertyType == fdest.FieldType) { object value = source.GetValue(this, null); fdest.SetValue(context, value); } } } for (int i = 0; i < fields.Length; i++) { FieldInfo source = fields[i]; FieldInfo dest = cfields.FirstOrDefault(k => k.Name == source.Name); if (dest == null || source.FieldType != dest.FieldType) { continue; } object value = source.GetValue(this); dest.SetValue(context, value); } return(context); }
//public override void Initialize(HandlerData handlerData, UserGameInfo game, GameProfile profile) { public override void Initialize(UserGameInfo game, GameProfile profile) { base.Initialize(game, profile); this.Controls.Clear(); canProceed = false; #if false int maxPlayers = handlerData.MaxPlayers; int half = (int)Math.Round(maxPlayers / 2.0); int width = Size.Width / half; int height = Size.Height / 2; int player = 2; top = new List <Button>(); bot = new List <Button>(); int left = Math.Max(half - 1, 1); width = Size.Width / left; for (int i = 0; i < left; i++) { Button btn = MkButton(); btn.Text = player.ToString(); player++; btn.SetBounds(i * width, 0, width, height); top.Add(btn); this.Controls.Add(btn); } half = maxPlayers - half; width = Size.Width / half; for (int i = 0; i < half; i++) { Button btn = MkButton(); btn.Text = player.ToString(); player++; btn.SetBounds(i * width, height, width, height); bot.Add(btn); this.Controls.Add(btn); } #endif }
public override void Initialize(HandlerData handlerData, UserGameInfo game, GameProfile profile) { base.Initialize(handlerData, game, profile); this.Controls.Clear(); int wid = 200; list = new ControlListBox(); list.Size = this.Size; List <GameOption> options = handlerData.Options; Dictionary <string, object> vals = profile.Options; for (int j = 0; j < options.Count; j++) { GameOption opt = options[j]; if (opt.Hidden) { continue; } object val; if (!vals.TryGetValue(opt.Key, out val)) { continue; } CoolListControl cool = new CoolListControl(false); cool.Title = opt.Name; cool.Details = opt.Description; cool.Width = list.Width; cool.TitleFont = nameFont; cool.DetailsFont = detailsFont; list.Controls.Add(cool); // Check the value type and add a control for it if (opt.Value is Enum || opt.IsCollection()) { ComboBox box = new ComboBox(); int border = 10; object value; object defaultValue; IList values; if (opt.Value is Enum) { value = (Enum)val; values = Enum.GetValues(value.GetType()); defaultValue = opt.DefaultValue; } else { values = opt.GetCollection(); value = values[0]; defaultValue = opt.DefaultValue; } for (int i = 0; i < values.Count; i++) { box.Items.Add(values[i]); } if (defaultValue != null) { box.SelectedIndex = box.Items.IndexOf(defaultValue); if (box.SelectedIndex == -1) { box.SelectedIndex = box.Items.IndexOf(value); } } else { box.SelectedIndex = box.Items.IndexOf(value); } box.Width = wid; box.Height = 40; box.Left = cool.Width - box.Width - border; box.Top = (cool.Height / 2) - (box.Height / 2); box.Anchor = AnchorStyles.Right; box.DropDownStyle = ComboBoxStyle.DropDownList; cool.Controls.Add(box); box.Tag = opt; box.SelectedValueChanged += box_SelectedValueChanged; ChangeOption(box.Tag, box.SelectedItem); } else if (opt.Value is bool) { SizeableCheckbox box = new SizeableCheckbox(); int border = 10; box.Checked = (bool)val; box.Width = 40; box.Height = 40; box.Left = cool.Width - box.Width - border; box.Top = (cool.Height / 2) - (box.Height / 2); box.Anchor = AnchorStyles.Right; cool.Controls.Add(box); box.Tag = opt; box.CheckedChanged += box_CheckedChanged; ChangeOption(box.Tag, box.Checked); } else if (opt.Value is int || opt.Value is double) { NumericUpDown num = new NumericUpDown(); int border = 10; int value = (int)(double)val; if (value < num.Minimum) { num.Minimum = value; } num.Value = value; num.Width = wid; num.Height = 40; num.Left = cool.Width - num.Width - border; num.Top = (cool.Height / 2) - (num.Height / 2); num.Anchor = AnchorStyles.Right; cool.Controls.Add(num); num.Tag = opt; num.ValueChanged += num_ValueChanged; ChangeOption(num.Tag, num.Value); } else if (opt.Value is GameOptionValue) { ComboBox box = new ComboBox(); int border = 10; GameOptionValue value = (GameOptionValue)val; PropertyInfo[] props = value.GetType().GetProperties(BindingFlags.Public | BindingFlags.Static); for (int i = 0; i < props.Length; i++) { PropertyInfo prop = props[i]; box.Items.Add(prop.GetValue(null, null)); } box.SelectedIndex = box.Items.IndexOf(value); box.Width = wid; box.Height = 40; box.Left = cool.Width - box.Width - border; box.Top = (cool.Height / 2) - (box.Height / 2); box.Anchor = AnchorStyles.Right; //box.DropDownStyle = ComboBoxStyle.DropDownList; cool.Controls.Add(box); box.Tag = opt; box.SelectedValueChanged += box_SelectedValueChanged; ChangeOption(box.Tag, box.SelectedItem); } } this.Controls.Add(list); list.UpdateSizes(); CanPlayUpdated(true, false); }
public virtual void Initialize(UserGameInfo game, GameProfile profile) { //this.handlerData = handlerData; this.profile = profile; this.game = game; }
public HandlerContext(GameProfile prof, PlayerInfo info) { profile = prof; pInfo = info; }
public virtual void Initialize(UserGameInfo game, GameProfile profile) { this.profile = profile; this.game = game; }
public abstract bool Initialize(GameHandler handler, HandlerData handlerData, UserGameInfo game, GameProfile profile);