00001
00002
00003
00004
00005
00006 # include "SkinController.h"
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00025 SkinController::SkinController()
00026 {
00027 skinsFile = strdup("skins.xml");
00028 initialiseSkinsArray();
00029 loadSkinsFile();
00030 }
00031
00032
00037 SkinController::SkinController(char* skinsXmlFile)
00038 {
00039 skinsFile = strdup(skinsXmlFile);
00040 initialiseSkinsArray();
00041 loadSkinsFile();
00042 }
00043
00044
00048 SkinController::~SkinController()
00049 {
00050 }
00051
00052
00056 void SkinController::initialiseSkinsArray()
00057 {
00058 int i=0;
00059 for (i = 0;i<10;i++)
00060 {
00061 const char* empty = "*NA*";
00062 skins_desc[i]=strdup(empty);
00063 skins_code[i]=strdup(empty);
00064 }
00065 }
00066
00067
00071 void SkinController::loadSkinsFile()
00072 {
00073 FILE *fp = fopen(getSkinsFileName(), "rb");
00074
00075 mxml_node_t *skinstree;
00076 mxml_node_t *skinsnode;
00077
00078
00079
00080 if (fp == NULL)
00081 {
00082
00083 fclose(fp);
00084 printf("Unable to open skins file [skins.xml]");
00085 }
00086
00087 else
00088 {
00089 fseek (fp , 0, SEEK_END);
00090 long settings_size = ftell (fp);
00091 rewind (fp);
00092
00093 if (settings_size > 0)
00094 {
00095
00096 skinstree = mxmlLoadFile(NULL, fp, MXML_NO_CALLBACK);
00097 fclose(fp);
00098
00099
00100
00101
00102 int skinCount = 0;
00103 for (skinsnode = mxmlFindElement(skinstree, skinstree,"skindetail",NULL, NULL,MXML_DESCEND);skinsnode != NULL;skinsnode = mxmlFindElement(skinsnode, skinstree,"skindetail",NULL, NULL,MXML_DESCEND))
00104 {
00105 skins_code[skinCount]=strdup(mxmlElementGetAttr(skinsnode,"id"));
00106 skins_desc[skinCount]=strdup(mxmlElementGetAttr(skinsnode,"name"));
00107
00108 skinCount++;
00109 printf("Found skin [%s]-[%s]\n",strdup(mxmlElementGetAttr(skinsnode,"id")),strdup(mxmlElementGetAttr(skinsnode,"name")));
00110 }
00111 numberSkins=skinCount;
00112
00113
00114 skinCount=0;
00115 for (skinsnode = mxmlFindElement(skinstree, skinstree,"skindetail",NULL, NULL,MXML_DESCEND);skinsnode != NULL;skinsnode = mxmlFindElement(skinsnode, skinstree,"skindetail",NULL, NULL,MXML_DESCEND))
00116 {
00117 printf("Parsing skin [%s]-[%s]\n",strdup(mxmlElementGetAttr(skinsnode,"id")),strdup(mxmlElementGetAttr(skinsnode,"name")));
00118 skins[skinCount].populateSkinValues(skinsnode);
00119 skinCount++;
00120 }
00121 }
00122
00123 else
00124 {
00125 fclose(fp);
00126
00127 printf("Unable to read skins file [skins.xml]");
00128
00129 }
00130 }
00131 }
00132
00133
00138 Skin SkinController::getSkin(int skinNo)
00139 {
00140 return skins[skinNo];
00141 }
00142
00143
00144
00145