public bool Initialize(int xPos, int yPos, int length, int amountOfVisibleItems, int amountOfItems, bool isHorizontal, bool isSlider, Random r, out string reason)
{
this.xPos = xPos;
this.yPos = yPos;
Up = new BBButton();
Down = new BBButton();
Scroll = new BBUniStretchButton();
this.amountOfItems = amountOfItems;
this.amountVisible = amountOfVisibleItems;
this.isSlider = isSlider;
this.isHorizontal = isHorizontal;
scrollBarLength = length - 32;
if (!isSlider)
{
scrollButtonLength = (int)(((float)amountOfVisibleItems / amountOfItems) * scrollBarLength);
if (!isHorizontal)
{
if (!Up.Initialize("ScrollUpBGButton", "ScrollUpFGButton", "", ButtonTextAlignment.CENTER, xPos, yPos, 16, 16, r, out reason))
{
return false;
}
if (!Down.Initialize("ScrollDownBGButton", "ScrollDownFGButton", "", ButtonTextAlignment.CENTER, xPos, yPos + length - 16, 16, 16, r, out reason))
{
return false;
}
if (!Scroll.Initialize(new List<string> { "ScrollVerticalBGButton1", "ScrollVerticalBGButton2", "ScrollVerticalBGButton3" },
new List<string> { "ScrollVerticalFGButton1", "ScrollVerticalFGButton2", "ScrollVerticalFGButton3" },
false, "", ButtonTextAlignment.LEFT, xPos, yPos + 16, 16, 7, 2, scrollButtonLength, r, out reason))
{
return false;
}
scrollBar = SpriteManager.GetSprite("ScrollVerticalBar", r);
if (scrollBar == null)
{
reason = "\"ScrollVerticalBar\" sprite does not exist";
return false;
}
}
else
{
if (!Up.Initialize("ScrollLeftBGButton", "ScrollLeftFGButton", "", ButtonTextAlignment.CENTER, xPos, yPos, 16, 16, r, out reason))
{
return false;
}
if (!Down.Initialize("ScrollRightBGButton", "ScrollRightFGButton", "", ButtonTextAlignment.CENTER, xPos + length - 16, yPos, 16, 16, r, out reason))
{
return false;
}
if (!Scroll.Initialize(new List<string> { "ScrollHorizontalBGButton1", "ScrollHorizontalBGButton2", "ScrollHorizontalBGButton3" },
new List<string> { "ScrollHorizontalFGButton1", "ScrollHorizontalFGButton2", "ScrollHorizontalFGButton3" },
false, "", ButtonTextAlignment.LEFT, xPos + 16, yPos, 16, 7, 2, scrollButtonLength, r, out reason))
{
return false;
}
scrollBar = SpriteManager.GetSprite("ScrollHorizontalBar", r);
if (scrollBar == null)
{
reason = "\"ScrollHorizontalBar\" sprite does not exist";
return false;
}
}
}
else
{
scrollButtonLength = 16;
if (!Up.Initialize("ScrollLeftBGButton", "ScrollLeftFGButton", "", ButtonTextAlignment.CENTER, xPos, yPos, 16, 16, r, out reason))
{
return false;
}
if (!Down.Initialize("ScrollRightBGButton", "ScrollRightFGButton", "", ButtonTextAlignment.CENTER, xPos + length - 16, yPos, 16, 16, r, out reason))
{
return false;
}
if (!Scroll.Initialize(new List<string> { "SliderHorizontalBGButton1", "SliderHorizontalBGButton2", "SliderHorizontalBGButton3" },
new List<string> { "SliderHorizontalFGButton1", "SliderHorizontalFGButton2", "SliderHorizontalFGButton3" },
true, "", ButtonTextAlignment.LEFT, xPos + 16, yPos, 16, 7, 2, scrollButtonLength, r, out reason))
{
return false;
}
scrollBar = SpriteManager.GetSprite("SliderBGBar", r);
if (scrollBar == null)
{
reason = "\"SliderBGBar\" sprite does not exist";
return false;
}
highlightedScrollBar = SpriteManager.GetSprite("SliderFGBar", r);
if (highlightedScrollBar == null)
{
reason = "\"SliderFGBar\" sprite does not exist";
return false;
}
}
topIndex = 0;
scrollPos = 0; //relative to the scrollbar itself
scrollSelected = false;
isEnabled = true;
reason = null;
return true;
}