protected override void InitRankSelection()
		{
			SetTopText("Select the spell Rank");
			DnDCharacter character = (DnDCharacter)AppStorage.Instance.CurrentCharacter;
			if (mSelectedClass > character.Classes.Count)
				return;
			mSoul = character.Classes[mSelectedClass];

			GameObject buttonPref = Resources.Load(cSimplePrefab) as GameObject;
			int buttonHeight = (int)buttonPref.GetComponent<LayoutElement>().minHeight;
			int spacing = (int)DragArea.transform.FindChild("ScrollArea").GetComponent<VerticalLayoutGroup>().spacing;
			buttonHeight += spacing;
			for (int i = 0; i < mSoul.KnownSpells.Count; ++i)
			{
				GameObject button = GameObject.Instantiate(buttonPref) as GameObject;
				button.transform.SetParent(DragArea.transform.FindChild("ScrollArea"));
				ViewUtility.ChangeSimpleButtonText("rank  " + i, button);
				button.GetComponent<IntButtonHandler>().NotificationInt = i;
				button.GetComponent<IntButtonHandler>().NotificationCatcher = this;
				mTotalHeight += buttonHeight;
				ViewUtility.EnableSimpleButton(button, mSoul.KnownSpells[i].Count > 0);
				mButtonList.Add(button);
			}
			if (mViewHeight < mTotalHeight)
			{
				mTotalHeight -= spacing;
			}
			UpdateNow = true;
		}
		protected override void InitSpellSelection()
		{
			DnDCharacter character = (DnDCharacter)AppStorage.Instance.CurrentCharacter;
			if (character.Classes.Count < mSelectedClass)
				return;
			mSoul = character.Classes[mSelectedClass];

			if (mSoul.NeedsToPrepareSpells)
			{
				SetTopText("Cast spells", "");
				InitPreparedSpells();
			}
			else
			{
				SetTopText("Cast spells", GetExtraTopText());
				InitKnownSpells();
			}
			int spacing = (int)DragArea.transform.FindChild("ScrollArea").GetComponent<VerticalLayoutGroup>().spacing;
			if (mViewHeight < mTotalHeight)
			{
				mTotalHeight -= spacing;
			}
		}