コード例 #1
0
        public override void Initialize(UserGameInfo game, GameProfile profile)
        {
            base.Initialize(game, profile);

            gamepadTimer.Enabled = true;
            UpdatePlayers();
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        public HandlerContext(GameProfile prof, PlayerInfo info)
        {
            profile    = prof;
            PlayerInfo = info;

            Options = prof.Options;
        }
コード例 #4
0
        public HandlerContext(GameProfile prof, PlayerInfo info, bool hasKeyboard)
        {
            profile    = prof;
            PlayerInfo = info;

            Options            = prof.Options;
            bHasKeyboardPlayer = hasKeyboard;
        }
コード例 #5
0
        /// <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);
        }
コード例 #6
0
ファイル: HandlerData.cs プロジェクト: mitcheesta/nucleuscoop
        /// <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);
        }
コード例 #7
0
        //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
        }
コード例 #8
0
        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);
        }
コード例 #9
0
 public virtual void Initialize(UserGameInfo game, GameProfile profile)
 {
     //this.handlerData = handlerData;
     this.profile = profile;
     this.game    = game;
 }
コード例 #10
0
 public HandlerContext(GameProfile prof, PlayerInfo info)
 {
     profile = prof;
     pInfo   = info;
 }
コード例 #11
0
 public virtual void Initialize(UserGameInfo game, GameProfile profile)
 {
     this.profile = profile;
     this.game    = game;
 }
コード例 #12
0
ファイル: HandlerModule.cs プロジェクト: molekm/nucleuscoop
 public abstract bool Initialize(GameHandler handler, HandlerData handlerData, UserGameInfo game, GameProfile profile);