void RemoveSkillPoint(DFCareer.Skills skill, LeftRightSpinner spinner)
        {
            // Working skill value cannot fall below rolled skill value
            int workingValue = workingSkills.GetSkillValue(skill);

            if (workingValue == startingSkills.GetSkillValue(skill))
            {
                return;
            }

            // Remove a point from skill and assign to pool
            spinner.Value += 1;
            workingSkills.SetSkillValue(skill, (short)(workingValue - 1));
            UpdateSkillValueLabels();
        }
        void AddSkillPoint(DFCareer.Skills skill, LeftRightSpinner spinner)
        {
            // Bonus point pool cannot fall below zero
            int workingValue = workingSkills.GetSkillValue(skill);

            if (spinner.Value == 0)
            {
                return;
            }

            // Remove a point from pool and assign to skill
            spinner.Value -= 1;
            workingSkills.SetSkillValue(skill, (short)(workingValue + 1));
            UpdateSkillValueLabels();
        }
        void SetupControls()
        {
            // Add primary skill labels
            Vector2 skillLabelPos         = new Vector2(68, 32);
            Vector2 skillValueLabelPos    = new Vector2(187, 32);
            Vector2 skillSelectButtonSize = new Vector2(106, 7);

            for (int i = 0; i < DaggerfallSkills.PrimarySkillsCount; i++)
            {
                primarySkillLabels[i]             = DaggerfallUI.AddTextLabel(font, skillLabelPos, string.Empty, this);
                primarySkillLabels[i].Tag         = i;
                primarySkillLabels[i].ShadowColor = DaggerfallUI.DaggerfallAlternateShadowColor1;
                Button button = DaggerfallUI.AddButton(skillLabelPos, skillSelectButtonSize, this);
                button.Tag           = i;
                button.OnMouseClick += PrimarySkills_OnMouseClick;

                primarySkillValueLabels[i]             = DaggerfallUI.AddTextLabel(font, skillValueLabelPos, string.Empty, this);
                primarySkillValueLabels[i].ShadowColor = DaggerfallUI.DaggerfallAlternateShadowColor1;

                skillLabelPos.y      += 10;
                skillValueLabelPos.y += 10;
            }

            // Add major skill labels
            skillLabelPos      = new Vector2(68, 81);
            skillValueLabelPos = new Vector2(187, 81);
            for (int i = 0; i < DaggerfallSkills.MajorSkillsCount; i++)
            {
                majorSkillLabels[i]             = DaggerfallUI.AddTextLabel(font, skillLabelPos, string.Empty, this);
                majorSkillLabels[i].Tag         = i;
                majorSkillLabels[i].ShadowColor = DaggerfallUI.DaggerfallAlternateShadowColor1;
                Button button = DaggerfallUI.AddButton(skillLabelPos, skillSelectButtonSize, this);
                button.Tag           = i;
                button.OnMouseClick += MajorSkills_OnMouseClick;

                majorSkillValueLabels[i]             = DaggerfallUI.AddTextLabel(font, skillValueLabelPos, string.Empty, this);
                majorSkillValueLabels[i].ShadowColor = DaggerfallUI.DaggerfallAlternateShadowColor1;

                skillLabelPos.y      += 10;
                skillValueLabelPos.y += 10;
            }

            // Add minor skill labels
            skillLabelPos      = new Vector2(68, 130);
            skillValueLabelPos = new Vector2(187, 130);
            for (int i = 0; i < DaggerfallSkills.MinorSkillsCount; i++)
            {
                minorSkillLabels[i]             = DaggerfallUI.AddTextLabel(font, skillLabelPos, string.Empty, this);
                minorSkillLabels[i].Tag         = i;
                minorSkillLabels[i].ShadowColor = DaggerfallUI.DaggerfallAlternateShadowColor1;
                Button button = DaggerfallUI.AddButton(skillLabelPos, skillSelectButtonSize, this);
                button.Tag           = i;
                button.OnMouseClick += MinorSkills_OnMouseClick;

                minorSkillValueLabels[i]             = DaggerfallUI.AddTextLabel(font, skillValueLabelPos, string.Empty, this);
                minorSkillValueLabels[i].ShadowColor = DaggerfallUI.DaggerfallAlternateShadowColor1;

                skillLabelPos.y      += 10;
                skillValueLabelPos.y += 10;
            }

            // Add primary skill spinner
            primarySkillSpinner = new LeftRightSpinner();
            this.Components.Add(primarySkillSpinner);
            primarySkillSpinner.OnLeftButtonClicked  += PrimarySkillSpinner_OnLeftButtonClicked;
            primarySkillSpinner.OnRightButtonClicked += PrimarySkillSpinner_OnRightButtonClicked;
            primarySkillSpinner.Value = bonusPoolPerSkillGroup;
            SelectPrimarySkill(0);

            // Add major skill spinner
            majorSkillSpinner = new LeftRightSpinner();
            this.Components.Add(majorSkillSpinner);
            majorSkillSpinner.OnLeftButtonClicked  += MajorSkillSpinner_OnLeftButtonClicked;
            majorSkillSpinner.OnRightButtonClicked += MajorSkillSpinner_OnRightButtonClicked;
            majorSkillSpinner.Value = bonusPoolPerSkillGroup;
            SelectMajorSkill(0);

            // Add minor skill spinner
            minorSkillSpinner = new LeftRightSpinner();
            this.Components.Add(minorSkillSpinner);
            minorSkillSpinner.OnLeftButtonClicked  += MinorSkillSpinner_OnLeftButtonClicked;
            minorSkillSpinner.OnRightButtonClicked += MinorSkillSpinner_OnRightButtonClicked;
            minorSkillSpinner.Value = bonusPoolPerSkillGroup;
            SelectMinorSkill(0);
        }
        void SetupControls()
        {
            // Add primary skill labels
            Vector2 skillLabelPos = new Vector2(68, 32);
            Vector2 skillValueLabelPos = new Vector2(187, 32);
            Vector2 skillSelectButtonSize = new Vector2(106, 7);
            for (int i = 0; i < DaggerfallSkills.PrimarySkillsCount; i++)
            {
                primarySkillLabels[i] = DaggerfallUI.AddTextLabel(font, skillLabelPos, string.Empty, this);
                primarySkillLabels[i].Tag = i;
                primarySkillLabels[i].ShadowColor = DaggerfallUI.DaggerfallAlternateShadowColor1;
                Button button = DaggerfallUI.AddButton(skillLabelPos, skillSelectButtonSize, this);
                button.Tag = i;
                button.OnMouseClick += PrimarySkills_OnMouseClick;

                primarySkillValueLabels[i] = DaggerfallUI.AddTextLabel(font, skillValueLabelPos, string.Empty, this);
                primarySkillValueLabels[i].ShadowColor = DaggerfallUI.DaggerfallAlternateShadowColor1;

                skillLabelPos.y += 10;
                skillValueLabelPos.y += 10;
            }

            // Add major skill labels
            skillLabelPos = new Vector2(68, 81);
            skillValueLabelPos = new Vector2(187, 81);
            for (int i = 0; i < DaggerfallSkills.MajorSkillsCount; i++)
            {
                majorSkillLabels[i] = DaggerfallUI.AddTextLabel(font, skillLabelPos, string.Empty, this);
                majorSkillLabels[i].Tag = i;
                majorSkillLabels[i].ShadowColor = DaggerfallUI.DaggerfallAlternateShadowColor1;
                Button button = DaggerfallUI.AddButton(skillLabelPos, skillSelectButtonSize, this);
                button.Tag = i;
                button.OnMouseClick += MajorSkills_OnMouseClick;

                majorSkillValueLabels[i] = DaggerfallUI.AddTextLabel(font, skillValueLabelPos, string.Empty, this);
                majorSkillValueLabels[i].ShadowColor = DaggerfallUI.DaggerfallAlternateShadowColor1;

                skillLabelPos.y += 10;
                skillValueLabelPos.y += 10;
            }

            // Add minor skill labels
            skillLabelPos = new Vector2(68, 130);
            skillValueLabelPos = new Vector2(187, 130);
            for (int i = 0; i < DaggerfallSkills.MinorSkillsCount; i++)
            {
                minorSkillLabels[i] = DaggerfallUI.AddTextLabel(font, skillLabelPos, string.Empty, this);
                minorSkillLabels[i].Tag = i;
                minorSkillLabels[i].ShadowColor = DaggerfallUI.DaggerfallAlternateShadowColor1;
                Button button = DaggerfallUI.AddButton(skillLabelPos, skillSelectButtonSize, this);
                button.Tag = i;
                button.OnMouseClick += MinorSkills_OnMouseClick;

                minorSkillValueLabels[i] = DaggerfallUI.AddTextLabel(font, skillValueLabelPos, string.Empty, this);
                minorSkillValueLabels[i].ShadowColor = DaggerfallUI.DaggerfallAlternateShadowColor1;

                skillLabelPos.y += 10;
                skillValueLabelPos.y += 10;
            }

            // Add primary skill spinner
            primarySkillSpinner = new LeftRightSpinner();
            this.Components.Add(primarySkillSpinner);
            primarySkillSpinner.OnLeftButtonClicked += PrimarySkillSpinner_OnLeftButtonClicked;
            primarySkillSpinner.OnRightButtonClicked += PrimarySkillSpinner_OnRightButtonClicked;
            primarySkillSpinner.Value = bonusPoolPerSkillGroup;
            SelectPrimarySkill(0);

            // Add major skill spinner
            majorSkillSpinner = new LeftRightSpinner();
            this.Components.Add(majorSkillSpinner);
            majorSkillSpinner.OnLeftButtonClicked += MajorSkillSpinner_OnLeftButtonClicked;
            majorSkillSpinner.OnRightButtonClicked += MajorSkillSpinner_OnRightButtonClicked;
            majorSkillSpinner.Value = bonusPoolPerSkillGroup;
            SelectMajorSkill(0);

            // Add minor skill spinner
            minorSkillSpinner = new LeftRightSpinner();
            this.Components.Add(minorSkillSpinner);
            minorSkillSpinner.OnLeftButtonClicked += MinorSkillSpinner_OnLeftButtonClicked;
            minorSkillSpinner.OnRightButtonClicked += MinorSkillSpinner_OnRightButtonClicked;
            minorSkillSpinner.Value = bonusPoolPerSkillGroup;
            SelectMinorSkill(0);
        }
        void RemoveSkillPoint(DFCareer.Skills skill, LeftRightSpinner spinner)
        {
            // Working skill value cannot fall below rolled skill value
            int workingValue = workingSkills.GetSkillValue(skill);
            if (workingValue == startingSkills.GetSkillValue(skill))
                return;

            // Remove a point from skill and assign to pool
            spinner.Value += 1;
            workingSkills.SetSkillValue(skill, (short)(workingValue - 1));
            UpdateSkillValueLabels();
        }
        void AddSkillPoint(DFCareer.Skills skill, LeftRightSpinner spinner)
        {
            // Bonus point pool cannot fall below zero
            int workingValue = workingSkills.GetSkillValue(skill);
            if (spinner.Value == 0)
                return;

            // Remove a point from pool and assign to skill
            spinner.Value -= 1;
            workingSkills.SetSkillValue(skill, (short)(workingValue + 1));
            UpdateSkillValueLabels();
        }