Browse Source

Continue button can now be placed either on the page or on the screen.

master
chrisgregan 11 years ago
parent
commit
36558c1bf6
  1. BIN
      Assets/Fungus/Prefabs/ContinueStyle.prefab
  2. 28
      Assets/Fungus/Scripts/ContinueStyle.cs
  3. 54
      Assets/Fungus/Scripts/Page.cs

BIN
Assets/Fungus/Prefabs/ContinueStyle.prefab

Binary file not shown.

28
Assets/Fungus/Scripts/ContinueStyle.cs

@ -14,8 +14,15 @@ public class ContinueStyle : MonoBehaviour
/// Style for continue button
public GUIStyle style;
/**
* If true, places the continue button on the active page.
* If false, places the continue button on the screen.
*/
public bool onPage;
/**
* Specifies continue button position in normalized screen coordinates.
* This setting is ignored if onPage == true
* (0,0) is top left of screen.
* (1,1) is bottom right of screen
*/
@ -38,25 +45,4 @@ public class ContinueStyle : MonoBehaviour
guiStyle.fontSize = Mathf.RoundToInt((float)Screen.height * continueFontScale);
return guiStyle;
}
public Rect CalcContinueRect()
{
GUIStyle continueStyle = GetScaledContinueStyle();
GUIContent content = new GUIContent(continueText);
Vector2 size = continueStyle.CalcSize(content);
float x = Screen.width * screenPosition.x;
float y = Screen.height * screenPosition.y;
float width = size.x;
float height = size.y;
x = Mathf.Max(x, padding.x);
x = Mathf.Min(x, Screen.width - width - padding.x);
y = Mathf.Max(y, padding.y);
y = Mathf.Min(y, Screen.height - height - padding.y);
return new Rect(x, y, width, height);
}
}

54
Assets/Fungus/Scripts/Page.cs

@ -272,8 +272,7 @@ namespace Fungus
ContinueStyle continueStyle = Game.GetInstance().continueStyle;
if (continueStyle != null)
{
Rect continueRect = continueStyle.CalcContinueRect();
GUI.Label(continueRect, new GUIContent(continueStyle.continueText), continueStyle.GetScaledContinueStyle());
DrawContinueButton(outerRect);
}
// Player can continue by clicking anywhere
@ -494,5 +493,56 @@ namespace Fungus
return FitRectToScreen(pageRect);
}
void DrawContinueButton(Rect containerRect)
{
PageStyle pageStyle = Game.GetInstance().activePageStyle;
ContinueStyle continueStyle = Game.GetInstance().continueStyle;
if (pageStyle == null ||
continueStyle == null)
{
return;
}
GUIStyle style = continueStyle.style;
if (style == null)
{
return;
}
GUIContent content = new GUIContent(continueStyle.continueText);
GUIStyle scaledContinueStyle = continueStyle.GetScaledContinueStyle();
Rect continueRect;
if (continueStyle.onPage)
{
float width = scaledContinueStyle.CalcSize(content).x;
float height = scaledContinueStyle.lineHeight;
float x = containerRect.xMin + (containerRect.width) - (width) - pageStyle.boxStyle.padding.right;
float y = containerRect.yMax - height / 2f;
continueRect = new Rect(x, y, width, height);
}
else
{
Vector2 size = scaledContinueStyle.CalcSize(content);
float x = Screen.width * continueStyle.screenPosition.x;
float y = Screen.height * continueStyle.screenPosition.y;
float width = size.x;
float height = size.y;
x = Mathf.Max(x, continueStyle.padding.x);
x = Mathf.Min(x, Screen.width - width - continueStyle.padding.x);
y = Mathf.Max(y, continueStyle.padding.y);
y = Mathf.Min(y, Screen.height - height - continueStyle.padding.y);
continueRect = new Rect(x, y, width, height);
}
GUI.Label(continueRect, content, scaledContinueStyle);
}
}
}
Loading…
Cancel
Save