Many updates, see CHANGLOG diff
[rokon:rokon.git] / src / com / stickycoding / rokon / FontTexture.java
1 package com.stickycoding.rokon;\r
2 \r
3 /**\r
4  * TextTexture.java\r
5  * A texture specifically tailored for bitmap fonts\r
6  * \r
7  * @author Richard\r
8  */\r
9 public class FontTexture extends Texture {\r
10         \r
11         protected char[] chars;\r
12 \r
13         /**\r
14          * Creates a FontTexture from an asset, the character string must be passed\r
15          *  \r
16          * @param filename path to a valid image file in assets\r
17          * @param characters the string of characters\r
18          * @param columns number of columns\r
19          * @param rows number of rows\r
20          */\r
21         public FontTexture(String filename, String characters, int columns, int rows) {\r
22                 super(filename, columns, rows);\r
23                 chars = new char[characters.length()];\r
24                 for(int i = 0; i < characters.length(); i++) {\r
25                         chars[i] = characters.charAt(i);\r
26                 }\r
27         }\r
28         \r
29         /**\r
30          * Creates a FontTexture from an asset, assuming there is only 1 row\r
31          * @param filename path to a valid image file in assets\r
32          * @param characters the string of characters\r
33          */\r
34         public FontTexture(String filename, String characters) {\r
35                 this(filename, characters, characters.length(), 1);\r
36         }\r
37         \r
38         /**\r
39          * Returns the column position of a given character\r
40          * \r
41          * @param ch character to find\r
42          * @return column index, -1 if not found\r
43          */\r
44         public int getCol(char ch) {\r
45                 return charPos(ch) % columns;\r
46         }\r
47         \r
48         /**\r
49          * Returns the row position of a given character\r
50          * \r
51          * @param ch character to find\r
52          * @return row index, -1 if not found\r
53          */\r
54         public int getRow(char ch) {\r
55                 int charPos = charPos(ch);\r
56                 return charPos - (charPos % columns) / columns;\r
57         }\r
58         \r
59         /**\r
60          * Returns the index of a given character\r
61          * \r
62          * @param ch character to find\r
63          * @return tile index, -1 if not found\r
64          */\r
65         public int charPos(char ch) {\r
66                 for(int i = 0; i < chars.length; i++) {\r
67                         if(chars[i] == ch) {\r
68                                 return i;\r
69                         }\r
70                 }\r
71                 Debug.error("Pacman not found! " + ch);\r
72                 return -1;\r
73         }\r
74 \r
75 }\r