예제 #1
0
        public void InitializeDefault(GameInfo game)
        {
            if (playerData == null)
            {
                playerData = new List<PlayerInfo>();
            }

            if (screens == null)
            {
                screens = new List<UserScreen>();
            }

            if (options == null)
            {
                options = new Dictionary<string, object>();

                foreach (var opt in game.Options)
                {
                    options.Add(opt.Key, opt.Value.Value);
                }
            }
        }
예제 #2
0
        private void list_Games_SelectedChanged(object arg1, Control arg2)
        {
            currentControl = (GameControl)arg1;
            currentGameInfo = currentControl.Game;
            if (currentGameInfo == null)
            {
                return;
            }

            if (!setSize)
            {
                this.Size = defaultSize;
                setSize = true;
            }

            panelGameName.Visible = true;
            label_StepTitle.Visible = true;
            StepPanel.Visible = true;
            btnBack.Visible = true;
            btnNext.Visible = true;

            currentGame = currentGameInfo.Game;

            btn_Play.Enabled = false;

            if (currentGame.Steps == null ||
                currentStepIndex == currentGame.Steps.Length)
            {
                // can play
                btn_Play.Enabled = true;

                // remove the current step if there's one
                KillCurrentStep();

                btnBack.Visible = false;
                btnNext.Visible = false;
            }

            currentProfile = new GameProfile();
            currentProfile.InitializeDefault(currentGame);

            this.label_GameTitle.Text = currentGame.GameName;
            this.pic_Game.Image = currentGameInfo.Icon;

            Type[] steps = currentGame.Steps;
            if (steps != null && steps.Length > 0)
            {
                GoToStep(0);
            }
        }
예제 #3
0
 private void gameBox_SelectedIndexChanged(object sender, EventArgs e)
 {
     SelectedGame = (GameInfo)combo_Games.SelectedItem;
     groupBox2.Enabled = SelectedGame != null;
 }
예제 #4
0
        public UserGameInfo AddGame(GameInfo game, string exePath)
        {
            UserGameInfo gInfo = new UserGameInfo();
            gInfo.InitializeDefault(game, exePath);
            user.Games.Add(gInfo);

            SaveUserProfile();

            return gInfo;
        }
예제 #5
0
        public void ExecuteBackup(GameInfo game)
        {
            string appData = GetAppDataPath();
            string gamePath = Path.Combine(appData, game.GUID);

            for (int i = 0; i < backupFiles.Count; i++)
            {
                BackupFile bkp = backupFiles[i];
                if (File.Exists(bkp.BackupPath))
                {
                    File.Delete(bkp.Source);
                    File.Move(bkp.BackupPath, bkp.Source);
                }
            }
        }
예제 #6
0
        public BackupFile BackupFile(GameInfo game, string path)
        {
            string appData = GetAppDataPath();
            string gamePath = Path.Combine(appData, game.GUID);
            string destination = Path.Combine(gamePath, Path.GetFileName(path));

            if (!File.Exists(path) && File.Exists(destination))
            {
                // we f****d up and the backup exists
                File.Copy(destination, path);
            }
            else
            {
                if (File.Exists(destination))
                {
                    File.Delete(destination);
                }
                File.Copy(path, destination);
            }

            BackupFile bkp = new BackupFile(path, destination);
            backupFiles.Add(bkp);

            return bkp;
        }
예제 #7
0
 public string GetBackupFolder(GameInfo game)
 {
     string appData = GetAppDataPath();
     return Path.Combine(appData, game.GUID);
 }
예제 #8
0
 public IGameHandler MakeHandler(GameInfo game)
 {
     return (IGameHandler)Activator.CreateInstance(game.HandlerType);
 }
예제 #9
0
        public void StartBackup(GameInfo game)
        {
            string appData = GetAppDataPath();
            string gamePath = Path.Combine(appData, game.GUID);
            Directory.CreateDirectory(gamePath);

            backupFiles = new List<BackupFile>();
        }
예제 #10
0
        public void UpdatePlayerCount(int player, GameInfo info, UserGameInfo userGame)
        {
            this.info = info;
            this.userGameInfo = userGame;
            if (info == null)
            {
                return;
            }

            if (player != playerCount || reset)
            {
                // Clean players!
                playerCount = player;
                players.Clear();
                for (int i = 0; i < loaded_screens.Count; i++)
                {
                    var mscreen = loaded_screens[i];
                    for (int j = 0; j < mscreen.Controls.Count; j++)
                    {
                        Control con = mscreen.Controls[j];

                        if (con is PlayerControl)
                        {
                            mscreen.Controls.Remove(con);
                            j--;
                        }
                    }
                }

                // remake monitors
                MakeContextStrip();
                MakeMonitors();
            }

            for (int i = 0; i < screenStrip.Items.Count; i++)
            {
                var item = screenStrip.Items[i];
                item.Enabled = i < player;
            }

            if (reset)
            {
                if (info.NeedPositioning)
                {
                    if (posLabel != null && panel1.Controls.Contains(posLabel))
                    {
                        panel1.Controls.Remove(posLabel);
                    }
                }
                else
                {
                    panel1.Controls.Clear();

                    posLabel = new Label();
                    posLabel.Text = "The selected game does not support positioning";
                    posLabel.Width = 500;
                    posLabel.Font = this.Font;

                    panel1.Controls.Add(posLabel);
                }
            }
            reset = false;
        }
 public void UpdateSelectedGame(int players, GameInfo info, UserGameInfo uInfo)
 {
 }
예제 #12
0
        public void UpdateItems(GameInfo prof)
        {
            this.Controls.Clear();

            var options = prof.Options;
            foreach (var opt in options.Values)
            {
                CoolListControl cool = new CoolListControl();
                cool.Text = opt.Name;
                cool.Description = opt.Description;
                cool.Width = this.Width;

                this.Controls.Add(cool);

                // Check the value type and add a control for it
                if (opt.Value is bool)
                {
                    SizeableCheckbox box = new SizeableCheckbox();
                    int border = 10;

                    box.Checked = (bool)opt.Value;
                    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.AddControl(box, false);

                    box.Tag = opt;
                    box.CheckedChanged += box_CheckedChanged;
                }
                else if (opt.Value is int)
                {
                    NumericUpDown num = new NumericUpDown();
                    int border = 10;

                    num.Value = (int)opt.Value;

                    num.Width = 150;
                    num.Height = 40;
                    num.Left = cool.Width - num.Width - border;
                    num.Top = (cool.Height / 2) - (num.Height / 2);
                    num.Anchor = AnchorStyles.Right;
                    cool.AddControl(num, false);

                    num.Tag = opt;
                    num.ValueChanged += num_ValueChanged;
                }
                else if (opt.Value is Enum)
                {
                    ComboBox box = new ComboBox();
                    int border = 10;

                    Array values = Enum.GetValues(opt.Value.GetType());
                    for (int i = 0; i < values.Length; i++)
                    {
                        box.Items.Add(((IList)values)[i]);
                    }
                    box.SelectedIndex = values.Length - 1;

                    box.Width = 150;
                    box.Height = 40;
                    box.Left = cool.Width - box.Width - border;
                    box.Top = (cool.Height / 2) - (box.Height / 2);
                    box.Anchor = AnchorStyles.Right;
                    cool.AddControl(box, false);

                    box.Tag = opt;
                    box.SelectedValueChanged += box_SelectedValueChanged;
                }
            }
        }
예제 #13
0
 public void InitializeDefault(GameInfo game, string exePath)
 {
     this.game = game;
     this.exePath = exePath;
     this.profiles = new List<GameProfile>();
 }
예제 #14
0
        /// <summary>
        /// Handles updating the game's image and info when the user selects a different game
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void list_Games_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (!(list_Games.SelectedItem is UserGameInfo))
            {
                return;
            }

            ResetSteps();
            step = 0;
            UpdateStep();

            info = (UserGameInfo)list_Games.SelectedItem;
            gameInfo = gameManager.Games[info.GameGuid];

            // Remove game from library if not found
            if (!File.Exists(info.ExecutablePath))
            {
                MessageBox.Show("Game Executable not Found. Deleting game from your library. TO-DO: User might have game on a disconnected hard-drive. Handle that.");

                gameManager.User.Games.Remove(info);
                gameManager.UpdateUserProfile();

                info = null;
                gameInfo = null;

                list_Games.DataSource = null;
                list_Games.SelectedIndex = -1;
                list_Games.DataSource = gameManager.User.Games;

                if (list_Games.Items.Count > 0)
                {
                    list_Games.SelectedIndex = 0;
                }
                return;
            }

            label_GameName.Text = info.GameName;
            playerCount1.MaxPlayers = gameInfo.MaxPlayers;
            label_maxPlayas.Text = gameInfo.MaxPlayers.ToString();
            if (gameInfo.SupportsKeyboard)
            {
                pic_Keyboard.Image = Resources.keyboard;
            }
            else
            {
                pic_Keyboard.Image = Resources.no_keyboard;
            }


            monitorControl1.UpdatePlayerCount(playerCount1.Players, gameInfo, info);
            playerOptions1.UpdateItems(gameInfo);

            addSteps.Clear();
            if (gameInfo.Steps != null)
            {
                // Add custom steps the game might need
                int count = steps.Count;
                for (int i = 0; i < gameInfo.Steps.Length; i++)
                {
                    Control s = (Control)Activator.CreateInstance(gameInfo.Steps[i]);
                    s.Location = this.monitorControl1.Location;
                    s.Size = this.monitorControl1.Size;
                    s.Anchor = this.monitorControl1.Anchor;
                    borderPanel1.Controls.Add(s);
                    steps.Add(count + i, s);

                    addSteps.Add(s);
                }
            }
            else
            {
                // Delete any old files
                if (steps.Count > DefaultSteps)
                {
                    int count = steps.Count;
                    for (int i = DefaultSteps; i < count; i++)
                    {
                        borderPanel1.Controls.Remove(steps[i]);
                        steps.Remove(i);
                    }
                }
            }

            // Extract icon from game executable
            if (this.game_Box.Image != null)
            {
                this.game_Box.Image.Dispose();
            }
            using (Icon sysicon = Icon.ExtractAssociatedIcon(info.ExecutablePath))
            {
                using (MemoryStream str = new MemoryStream())
                {
                    sysicon.Save(str);
                    str.Position = 0;
                    game_Box.Image = Image.FromStream(str);
                }
            }
        }