Blame |
Last modification |
View Log
| RSS feed
package com.gebauz.bauzoid.menu;
import com.badlogic.gdx.files.FileHandle;
import com.gebauz.bauzoid.app.Consts;
import com.gebauz.bauzoid.game.Game;
import com.gebauz.bauzoid.math.Vector2;
import com.gebauz.bauzoid.math.Vector3;
import com.gebauz.bauzoid.math.Vector4;
import com.gebauz.bauzoid.menu.MenuItem.HorizontalAlign;
import com.gebauz.bauzoid.menu.MenuItem.VerticalAlign;
import com.gebauz.bauzoid.parser.Preprocessor;
import com.gebauz.bauzoid.parser.ScanException;
import com.gebauz.bauzoid.parser.Tokenizer;
/** Utility functions for Menu handling. */
public class MenuUtil
{
// Constants========================================================================================
public static final String LOG_TAG = Consts.
LOG_TAG +
":MenuUtil";
// Static variables=================================================================================
public static boolean verbose =
true;
// Embedded Types===================================================================================
// Methods==========================================================================================
public static Menu createMenuFromFile
(Game game, FileHandle file
)
{
String fileContents = Preprocessor.
stripComments(file.
readString());
Menu menu =
null;
try
{
Tokenizer tokenizer =
new Tokenizer
(fileContents
);
tokenizer.
setStringDelimiter(new char[] {'\'',
'"'} );
while (!tokenizer.
checkNoMoreTokens())
{
String identifier = tokenizer.
readIdentifier();
if (identifier.
equalsIgnoreCase("Menu"))
{
String menuName = tokenizer.
readString();
menu =
new Menu(game, menuName
);
tokenizer.
readToken("{");
while (!tokenizer.
checkToken("}"))
{
menu.
parseLine(tokenizer
);
}
tokenizer.
readToken("}");
}
else
{
throw new ScanException
(LOG_TAG,
"Syntax error at: " + tokenizer.
getSurroundings());
}
}
}
catch (ScanException e
)
{
e.
log(LOG_TAG
);
if (menu
!=
null)
{
menu.
exit();
menu =
null;
}
}
return menu
;
}
// Parsing Tools======================================================================================
public static HorizontalAlign stringToHorizontalAlignment
(String align
)
{
if (align.
equalsIgnoreCase("right"))
return HorizontalAlign.
RIGHT;
else if (align.
equalsIgnoreCase("center"))
return HorizontalAlign.
CENTER;
else //if (align.equalsIgnoreCase("left"))
return HorizontalAlign.
LEFT;
}
public static VerticalAlign stringToVerticalAlignment
(String align
)
{
if (align.
equalsIgnoreCase("bottom"))
return VerticalAlign.
BOTTOM;
else if (align.
equalsIgnoreCase("center"))
return VerticalAlign.
CENTER;
else //if (align.equalsIgnoreCase("left"))
return VerticalAlign.
TOP;
}
public static float parseNumber
(Tokenizer t
) throws ScanException
{
float result = t.
readNumber();
t.
readToken(";");
return result
;
}
public static Vector2 parseVector2
(Tokenizer t
) throws ScanException
{
Vector2 result =
new Vector2
();
result.
x = t.
readNumber();
t.
readToken(",");
result.
y = t.
readNumber();
t.
readToken(";");
return result
;
}
public static Vector3 parseVector3
(Tokenizer t
) throws ScanException
{
Vector3 result =
new Vector3
();
result.
x = t.
readNumber();
t.
readToken(",");
result.
y = t.
readNumber();
t.
readToken(",");
result.
z = t.
readNumber();
t.
readToken(";");
return result
;
}
public static Vector4 parseVector4
(Tokenizer t
) throws ScanException
{
Vector4 result =
new Vector4
();
result.
x = t.
readNumber();
t.
readToken(",");
result.
y = t.
readNumber();
t.
readToken(",");
result.
z = t.
readNumber();
t.
readToken(",");
result.
w = t.
readNumber();
t.
readToken(";");
return result
;
}
public static String parseString
(Tokenizer t,
String defaultValue
) throws ScanException
{
String result = defaultValue
;
result = t.
readString();
t.
readToken(";");
return result
;
}
public static String parseString
(Tokenizer t
) throws ScanException
{
return parseString
(t,
"");
}
public static boolean parseBool
(Tokenizer t
) throws ScanException
{
boolean result =
false;
String boolValue = t.
readIdentifier();
if (boolValue.
equalsIgnoreCase("true"))
result =
true;
else if (boolValue.
equalsIgnoreCase("false"))
result =
false;
else
throw new ScanException
(Tokenizer.
UNEXPECTED_TOKEN +
" Expected boolean value (true/false)", t.
getSurroundings());
t.
readToken(";");
return result
;
}
}