diff --git a/CMakeLists.txt b/CMakeLists.txt index 87b3850f..a289cc4d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,6 +4,8 @@ project(MOONSHINE_RUNNERS VERSION 1.0.0 LANGUAGES C CXX) set(CMAKE_CONFIGURATION_TYPES "Release;Debug;MinSizeRel;RelWithDebInfo") +option(BUILD_SCRIPT_TOOL "Build script tool" OFF) + set(APPLICATION_NAME moonshine-runners) if (UNIX AND NOT APPLE) @@ -41,6 +43,10 @@ add_subdirectory(3rdparty/musepack_src_r475) add_subdirectory(MechoSoma) +if(BUILD_SCRIPT_TOOL) + add_subdirectory(ScriptTool) +endif(BUILD_SCRIPT_TOOL) + set_target_properties(${APPLICATION_NAME} PROPERTIES CXX_STANDARD 17 CXX_STANDARD_REQUIRED YES diff --git a/MechoSoma/CMakeLists.txt b/MechoSoma/CMakeLists.txt index 8e624bbf..949729aa 100644 --- a/MechoSoma/CMakeLists.txt +++ b/MechoSoma/CMakeLists.txt @@ -7,8 +7,11 @@ if (CMAKE_BUILD_TYPE MATCHES Debug) endif() set(GAME_SOURCES - # aciparser - aciparser/aci_parser.cpp + # ParserC + ParserC/math_exp.cpp + ParserC/prepare.cpp + ParserC/script_err.cpp + ParserC/script.cpp # FX FX/Hermit.h FX/XTList.h @@ -476,7 +479,6 @@ set(GAME_SOURCES app/texture_manager.h ) -include_directories(aciparser) include_directories(app) include_directories(FX) include_directories(IVisGeneric) @@ -484,6 +486,7 @@ include_directories(Sound) include_directories(Terra) include_directories(RUNTIME) include_directories(RUNTIME/Scripts) +include_directories(ParserC) include_directories(VisGeneric) include_directories(VisGeneric/md3d) include_directories(VisGeneric/Graph3d) diff --git a/MechoSoma/ParserC/aci_define.h b/MechoSoma/ParserC/aci_define.h new file mode 100644 index 00000000..70b75398 --- /dev/null +++ b/MechoSoma/ParserC/aci_define.h @@ -0,0 +1,31 @@ + +#ifndef __ACI_DEFINE_H__ +#define __ACI_DEFINE_H__ + +// scrDefineData::flags +const unsigned DEF_TEXT = 0x01; + +struct scrDefineData +{ + int flags; + + int startIndex; + int endIndex; + + int srcLen; + char* srcData; + + int destLen; + char* destData; + + void* list; + scrDefineData* prev; + scrDefineData* next; + + void init(char* ptr,int sz); + + scrDefineData(void); + ~scrDefineData(void); +}; + +#endif /* __ACI_DEFINE_H__ */ diff --git a/MechoSoma/aciparser/aci_parser.h b/MechoSoma/ParserC/aci_parser.h similarity index 84% rename from MechoSoma/aciparser/aci_parser.h rename to MechoSoma/ParserC/aci_parser.h index 02e08dbd..7b286d61 100644 --- a/MechoSoma/aciparser/aci_parser.h +++ b/MechoSoma/ParserC/aci_parser.h @@ -1,85 +1,89 @@ - -#ifndef __ACI_PARSER_H__ -#define __ACI_PARSER_H__ - -#include -#include - -#include "xtool.h" - -// scrDataBlock flags... -#define SCR_ALLOC_DATA 0x01 - -// Data types... -enum scrDataTypes { - SCR_VOID_DATA = 0, - SCR_INT_DATA, - SCR_DOUBLE_DATA, - SCR_CHAR_DATA, - - SCR_MAX_DATA_ID -}; - -struct scrDataBlock -{ - int ID; - int flags; - int dataSize; - int dataType; - - int dataSize0; - char* name; - - union { - int* i_dataPtr; - double* d_dataPtr; - char* c_dataPtr; - }; - - scrDataBlock* owner; - xtList* nextLevel; - - void* list; - scrDataBlock* prev; - scrDataBlock* next; - - void saveInfo(XStream& fh); - void saveData(XStream& fh); - void loadInfo(XStream& fh); - void loadData(XStream& fh); - - void loadInfo(XBuffer& fh); - void loadData(XBuffer& fh); - - void initName(char* p); - void allocList(void){ nextLevel = new xtList; } - - void alloc(int tp,int sz); - void allocData(void); - void freeData(void); - - void add(scrDataBlock* p); - void dump(XStream& fh,int idx,int mode = 0); - void get_keys(void); - - scrDataBlock* find(int id){ if(nextLevel) return nextLevel -> search(id); return NULL; } - - scrDataBlock(int tp); - scrDataBlock(void); - ~scrDataBlock(void); -}; - -void scrSetVerbose(int v = 1); - -void scrSetInputDir(const char* p); -void scrSetOutputDir(const char* p); -void scrSetOutputFile(const char* p); - -scrDataBlock* loadScript(const std::string &path); -scrDataBlock* loadScript(XStream& fh); -scrDataBlock* parseScript(const char* fname,const char *set_name); -void saveScript(const char* fname,scrDataBlock* p); -void dumpScript(const char* fname,scrDataBlock* p); -void dumpScriptKeywords(const char* fname,scrDataBlock* p); - -#endif /* __ACI_PARSER_H__ */ + +#ifndef __ACI_PARSER_H__ +#define __ACI_PARSER_H__ + +#include +#include +#include +#include + +#include "xtool.h" + +// scrDataBlock flags... +#define SCR_ALLOC_DATA 0x01 + +// Data types... +enum scrDataTypes { + SCR_VOID_DATA = 0, + SCR_INT_DATA, + SCR_DOUBLE_DATA, + SCR_CHAR_DATA, + + SCR_MAX_DATA_ID +}; + +struct scrDataBlock +{ + int ID; + int flags; + int dataSize; + int dataType; + + int dataSize0; + char* name; + + union { + int* i_dataPtr; + double* d_dataPtr; + char* c_dataPtr; + }; + + scrDataBlock* owner; + xtList* nextLevel; + + void* list; + scrDataBlock* prev; + scrDataBlock* next; + + void saveInfo(XStream& fh); + void saveData(XStream& fh); + void loadInfo(XStream& fh); + void loadData(XStream& fh); + + void loadInfo(XBuffer& fh); + void loadData(XBuffer& fh); + + void initName(const char* p); + void allocList(void){ nextLevel = new xtList; } + + void alloc(int tp,int sz); + void allocData(void); + void freeData(void); + + void add(scrDataBlock* p); + void dump(XStream& fh,int idx,int mode = 0); + void get_keys(void); + + scrDataBlock* find(int id){ if(nextLevel) return nextLevel -> search(id); return NULL; } + + scrDataBlock(int tp); + scrDataBlock(void); + ~scrDataBlock(void); +}; + +void scrSetVerbose(int v = 1); + +void scrSetInputDir(const char* p); +void scrSetOutputDir(const char* p); +void scrSetOutputFile(const char* p); + +scrDataBlock* loadScript(const std::string &fname); +scrDataBlock* loadScript(XStream& fh); +scrDataBlock* parseScript(const char* fname,const char *set_name); +void saveScript(const char* fname,scrDataBlock* p); +void dumpScript(const char* fname,scrDataBlock* p); +void dumpScriptKeywords(const char* fname,scrDataBlock* p); + +extern std::function getLocalizedKey; + +#endif /* __ACI_PARSER_H__ */ diff --git a/MechoSoma/ParserC/math_exp.cpp b/MechoSoma/ParserC/math_exp.cpp new file mode 100644 index 00000000..6134f23e --- /dev/null +++ b/MechoSoma/ParserC/math_exp.cpp @@ -0,0 +1,449 @@ +/* ---------------------------- INCLUDE SECTION ----------------------------- */ + +#include "math_exp.h" + +#include +#include +#include + +#include "aci_parser.h" + +/* ----------------------------- STRUCT SECTION ----------------------------- */ + +// mathExpAtom::type... +enum mathExpAtomTypes +{ + MT_EXP_VAL, + MT_EXP_ADD, + MT_EXP_SUB, + MT_EXP_MUL, + MT_EXP_DIV, + MT_EXP_AND, + MT_EXP_OR, + MT_EXP_XOR, + + MT_EXP_LBRACKET, + MT_EXP_RBRACKET, + + MT_EXP_SHIFT_LEFT, + MT_EXP_SHIFT_RIGHT, + + MT_EXP_MAX_ID +}; + +struct mathExpAtom +{ + int type; + int priority; + + union { + int icode; + double dcode; + }; + + void* list; + mathExpAtom* prev; + mathExpAtom* next; + + mathExpAtom(int tp,int val){ type = tp; icode = val; list = 0; } + mathExpAtom(int tp,double val){ type = tp; dcode = val; list = 0; } +}; + +// mathExp::flags... +#define MT_EXP_DOUBLE_VALUES 0x01 +#define MT_EXP_FAILED 0x02 + +struct mathExp +{ + int flags; + int status; + xtList* exprData; + + union { + int ivalue; + double dvalue; + }; + + void init(int val_type,const char* ptr); + void parse(char* expr); + void evaluate(void); + + mathExp(void); + ~mathExp(void); +}; + +/* ----------------------------- EXTERN SECTION ----------------------------- */ +/* --------------------------- PROTOTYPE SECTION ---------------------------- */ + +int mth_isDigit(int v); +int mth_isMathOp(int v); +int mth_MathOpLen(int code); +int mth_isSpace(int v); + +int mth_Str2INT(char* p); + +/* --------------------------- DEFINITION SECTION --------------------------- */ + +static int mathExpPriorityDelta[] = { 0, 3, 3, 4, 4, 2, 2, 2, 5, -5, 1, 1 }; +static const char* mathExpAtomTypeData[] = { "+", "-", "*", "/", "&", "|", "^", "(", ")", "<<", ">>" }; + +mathExp::mathExp(void) +{ + flags = 0; + status = MT_EXP_OK; + exprData = new xtList; +} + +mathExp::~mathExp(void) +{ + mathExpAtom* p; + + p = exprData -> first(); + while(p){ + exprData -> remove(p); + delete p; + p = exprData -> first(); + } + delete exprData; +} + +void mathExp::init(int val_type,const char* ptr) +{ + int src_len,dest_len,cur_index,dest_index,code,len; + char* src_str,*dest_str; + + if(val_type) flags |= MT_EXP_DOUBLE_VALUES; + + src_str = (char*)ptr; + src_len = strlen((char*)src_str); + + dest_len = src_len * 3 + 1; + dest_str = new char[dest_len]; + memset(dest_str,0,dest_len); + + cur_index = dest_index = 0; + while(mth_isSpace(src_str[cur_index])){ + cur_index ++; + if(cur_index >= src_len) break; + } + + while(cur_index < src_len){ + code = mth_isMathOp(src_str[cur_index]); + if(code){ + len = mth_MathOpLen(code); + + if(dest_index && !mth_isSpace(dest_str[dest_index - 1])){ + dest_str[dest_index] = ' '; + dest_index ++; + } + + memcpy(dest_str + dest_index,src_str + cur_index,len); + cur_index += len; + dest_index += len; + + if(cur_index < src_len && !mth_isSpace(src_str[cur_index])){ + dest_str[dest_index] = ' '; + dest_index ++; + } + } + else { + dest_str[dest_index] = src_str[cur_index]; + cur_index ++; + dest_index ++; + } + } + + parse(dest_str); + delete dest_str; +} + +void mathExp::parse(char* expr) +{ + int i,expr_len,op_code,pr; + + int ival; + double dval; + + mathExpAtom* p,*p1; + + expr_len = strlen(expr); + for(i = 0; i < expr_len; i ++){ + if(mth_isSpace(expr[i])) expr[i] = 0; + } + + i = 0; + while(i < expr_len){ + while(!expr[i]){ + i ++; + if(i >= expr_len) break; + } + + op_code = mth_isMathOp(expr[i]); + + if(op_code){ + p = new mathExpAtom(op_code,op_code); + } + else { + if(flags & MT_EXP_DOUBLE_VALUES){ + dval = atof(expr + i); + p = new mathExpAtom(op_code,dval); + } + else { + ival = mth_Str2INT(expr + i); + p = new mathExpAtom(op_code,ival); + } + } + exprData -> append(p); + while(expr[i]){ + i ++; + if(i >= expr_len) break; + } + if(i >= expr_len) break; + } + + pr = 0; + p = exprData -> first(); + while(p){ + p -> priority = 0; + if(p -> type){ + if(p -> type == MT_EXP_LBRACKET || p -> type == MT_EXP_RBRACKET) + pr += mathExpPriorityDelta[p -> type]; + + p -> priority = pr + mathExpPriorityDelta[p -> type]; + } + p = p -> next; + } + + p = exprData -> first(); + while(p){ + p1 = p -> next; + if(p -> type){ + if(p -> type == MT_EXP_LBRACKET || p -> type == MT_EXP_RBRACKET){ + exprData -> remove(p); + delete p; + } + } + p = p1; + } +} + +void mathExp::evaluate(void) +{ + int pr,flag; + + int i_val,i_val1,i_val2; + double d_val,d_val1,d_val2; + + mathExpAtom* p,*p1,*prev_ptr,*next_ptr; + + p = exprData -> first(); + pr = p -> priority; + while(p){ + if(p -> priority > pr){ + pr = p -> priority; + } + p = p -> next; + } + + while(pr >= 0){ + flag = 1; + while(flag){ + flag = 0; + p = exprData -> first(); + while(p){ + p1 = p -> next; + if(p -> type && p -> priority == pr){ + if(p == exprData -> first()){ + prev_ptr = NULL; + next_ptr = p -> next; + } + else { + prev_ptr = p -> prev; + next_ptr = p -> next; + } + + if(!next_ptr){ + flags |= MT_EXP_FAILED; + status = MT_EXP_EVALUATION_FAILED; + return; + } + if(next_ptr -> type){ + p = next_ptr; + p1 = p -> next; + prev_ptr = p -> prev; + next_ptr = p -> next; + } + if(prev_ptr && prev_ptr -> type){ + prev_ptr = NULL; + } + if(flags & MT_EXP_DOUBLE_VALUES){ + d_val1 = (prev_ptr) ? prev_ptr -> dcode : 0.0; + d_val2 = next_ptr -> dcode; + + switch(p -> type){ + case MT_EXP_ADD: + d_val = d_val1 + d_val2; + break; + case MT_EXP_SUB: + d_val = d_val1 - d_val2; + break; + case MT_EXP_MUL: + d_val = d_val1 * d_val2; + break; + case MT_EXP_DIV: + d_val = d_val1 / d_val2; + break; + case MT_EXP_AND: + case MT_EXP_OR: + case MT_EXP_XOR: + flags |= MT_EXP_FAILED; + status = MT_EXP_BAD_OPERAND; + return; + } + next_ptr -> dcode = d_val; + } + else { + i_val1 = (prev_ptr) ? prev_ptr -> icode : 0; + i_val2 = next_ptr -> icode; + + switch(p -> type){ + case MT_EXP_ADD: + i_val = i_val1 + i_val2; + break; + case MT_EXP_SUB: + i_val = i_val1 - i_val2; + break; + case MT_EXP_MUL: + i_val = i_val1 * i_val2; + break; + case MT_EXP_DIV: + i_val = i_val1 / i_val2; + break; + case MT_EXP_AND: + i_val = i_val1 & i_val2; + break; + case MT_EXP_OR: + i_val = i_val1 | i_val2; + break; + case MT_EXP_XOR: + i_val = i_val1 ^ i_val2; + break; + case MT_EXP_SHIFT_LEFT: + i_val = i_val1 << i_val2; + break; + case MT_EXP_SHIFT_RIGHT: + i_val = i_val1 >> i_val2; + break; + } + next_ptr -> icode = i_val; + } + + if(prev_ptr){ + exprData -> remove(prev_ptr); + delete prev_ptr; + } + + exprData -> remove(p); + delete p; + + flag = 1; + break; + } + p = p1; + } + } + pr --; + } + p = exprData -> first(); + if(flags & MT_EXP_DOUBLE_VALUES) + dvalue = p -> dcode; + else + ivalue = p -> icode; +} + +int mth_isDigit(int v) +{ + return isdigit(v); +} + +int mth_isMathOp(int v) +{ + int i; + for(i = 0; i < MT_EXP_MAX_ID - 1; i ++){ +// if(v == mathExpAtomTypeData[i]) return i + 1; + if(v == mathExpAtomTypeData[i][0]) return i + 1; + } + return 0; +} + +int mth_isSpace(int v) +{ + return isspace(v); +} + +int i_parseMathExpr(const char* expr,int& out) +{ + int st; + mathExp* p = new mathExp; + p -> init(0,expr); + p -> evaluate(); + + st = p -> status; + + out = p -> ivalue; + delete p; + + return st; +} + +int d_parseMathExpr(const char* expr,double& out) +{ + int st; + mathExp* p = new mathExp; + p -> init(1,expr); + p -> evaluate(); + + st = p -> status; + + out = p -> dvalue; + delete p; + + return st; +} + +int mth_Str2INT(char* p) +{ + int len,val = 0; + char* stop_str; + + len = strlen(p); + if(len > 2 && p[0] == '0'){ + switch(p[1]){ + case 'x': + case 'X': + val = strtol(p + 2,&stop_str,16); + break; + case 'o': + case 'O': + val = strtol(p + 2,&stop_str,8); + break; + case 'b': + case 'B': + val = strtol(p + 2,&stop_str,2); + break; + default: + val = strtol(p,&stop_str,10); + break; + } + } + else { + val = strtol(p,&stop_str,10); + } + return val; +} + +int mth_MathOpLen(int code) +{ + return strlen(mathExpAtomTypeData[code - 1]); +} + diff --git a/MechoSoma/ParserC/math_exp.h b/MechoSoma/ParserC/math_exp.h new file mode 100644 index 00000000..c61cb33e --- /dev/null +++ b/MechoSoma/ParserC/math_exp.h @@ -0,0 +1,14 @@ + +#ifndef __MATHEXP_H__ +#define __MATHEXP_H__ + +// Return values... +#define MT_EXP_OK 0 +#define MT_EXP_PARSE_FAILED 1 +#define MT_EXP_EVALUATION_FAILED 2 +#define MT_EXP_BAD_OPERAND 3 + +int i_parseMathExpr(const char* expr,int& out); +int d_parseMathExpr(const char* expr,double& out); + +#endif /* __MATHEXP_H__ */ diff --git a/MechoSoma/ParserC/prepare.cpp b/MechoSoma/ParserC/prepare.cpp new file mode 100644 index 00000000..1a1d590d --- /dev/null +++ b/MechoSoma/ParserC/prepare.cpp @@ -0,0 +1,762 @@ + +/* ---------------------------- INCLUDE SECTION ----------------------------- */ + +#include +#include +#include +#include +#include + +#include "aci_parser.h" +#include "aci_define.h" + +#include "script_err.h" + +/* ----------------------------- STRUCT SECTION ----------------------------- */ + +struct scrString +{ + int startIndex; + int endIndex; + int strLen; + + char* data; + + scrString(void); + ~scrString(void); +}; + +/* ----------------------------- EXTERN SECTION ----------------------------- */ + +extern int scrVerbose; + +std::function getLocalizedKey; + +/* --------------------------- PROTOTYPE SECTION ---------------------------- */ + +int preprocessScript(const char* fname,int& outsz,char** outbuf); +void prepareBuffer(char* p,int sz); + +void stripComments(char* ptr,int sz); +void processIncludes(char** ptr,int& sz); + +int processDefines(char** ptr,int& sz); +void prepareDefines(char* ptr,int sz); +int replaceDefines(void); + +void initStringData(char* ptr,int sz,int mode = 1); +void freeStringData(void); + +int getStringNumber(int index); + +int mth_isMathOp(int v); + +/* --------------------------- DEFINITION SECTION --------------------------- */ + +static const char* inc_str = "#include"; +static const char* def_str = "#define"; +static const char* text_str = "#text"; +static const char* end_str = "#end"; + +int numStrings; +scrString** strList; +xtList* defineList; + +int bufferSize = 0; + +int preprocessScript(const char* fname,int& outsz,char** outbuf) +{ + int i,idx,idx1,flag,sz,sz1,q_flag; + char* buf,*buf1; + + XStream fh(fname,XS_IN); + sz = fh.size(); + buf = new char[sz + 2]; + fh.read(buf,sz); + fh.close(); + buf[sz] = '\r'; + buf[sz + 1] = '\n'; + sz += 2; + + stripComments(buf,sz); + if(scrVerbose) + printf("Processing includes\n"); + processIncludes(&buf,sz); + if(scrVerbose) + printf("Preparing defines\n"); + if(!processDefines(&buf,sz)) return 0; + + sz1 = 0; + q_flag = 0; + for(i = 0; i < numStrings; i ++){ + flag = 0; + for(idx = 0; idx < strList[i] -> strLen; idx ++){ + if(q_flag) + flag = 1; + + if(strList[i] -> data[idx] == '\"') + q_flag ^= 1; + + if(!flag && strList[i] -> data[idx] && !isspace(strList[i] -> data[idx])) + flag = 1; + } + if(flag){ + sz1 += strList[i] -> strLen; + } + } + buf1 = new char[sz1 + 2]; + idx1 = 0; + q_flag = 0; + for(i = 0; i < numStrings; i ++){ + flag = 0; + for(idx = 0; idx < strList[i] -> strLen; idx ++){ + if(q_flag) + flag = 1; + + if(strList[i] -> data[idx] == '\"') + q_flag ^= 1; + + if(!flag && strList[i] -> data[idx] && !isspace(strList[i] -> data[idx])) + flag = 1; + } + if(flag){ + memcpy(buf1 + idx1,strList[i] -> data,strList[i] -> strLen); + idx1 += strList[i] -> strLen; + } + } + freeStringData(); + delete buf; + + sz = sz1 + 2; + buf = buf1; + buf[sz1] = '\r'; + buf[sz1 + 1] = '\n'; + + initStringData(buf,sz); + + sz1 = 0; + q_flag = 0; + for(i = 0; i < numStrings; i ++){ + flag = 0; + for(idx = 0; idx < strList[i] -> strLen; idx ++){ + if(!flag && q_flag){ + sz1 += strList[i] -> strLen; + flag = 1; + } + + if(strList[i] -> data[idx] == '\"') + q_flag ^= 1; + + if(!flag && strList[i] -> data[idx] && !isspace(strList[i] -> data[idx])){ + sz1 += strList[i] -> strLen - idx; + flag = 1; + } + } + } + idx1 = 0; + buf1 = new char[sz1]; + q_flag = 0; + for(i = 0; i < numStrings; i ++){ + flag = 0; + for(idx = 0; idx < strList[i] -> strLen; idx ++){ + if(!flag && q_flag){ + memcpy(buf1 + idx1,strList[i] -> data + idx,strList[i] -> strLen - idx); + idx1 += strList[i] -> strLen - idx; + flag = 1; + } + + if(strList[i] -> data[idx] == '\"') + q_flag ^= 1; + + if(!flag && strList[i] -> data[idx] && !isspace(strList[i] -> data[idx])){ + memcpy(buf1 + idx1,strList[i] -> data + idx,strList[i] -> strLen - idx); + idx1 += strList[i] -> strLen - idx; + flag = 1; + } + } + } + outbuf[0] = buf1; + outsz = sz1; + + bufferSize = sz1; + + freeStringData(); + delete buf; + + return 1; +} + +void stripComments(char* ptr,int sz) +{ + int flag,index; + + index = 0; + while(index < sz){ + if(ptr[index] == '\"'){ + index ++; + if(index < sz - 1){ + while(ptr[index] != '\"'){ + index ++; + if(index >= sz) return; + } + index ++; + } + } + else { + if(ptr[index] == '/'){ + if(index < sz - 1){ + if(ptr[index + 1] == '/'){ + while(ptr[index] != '\n'){ + ptr[index] = ' '; + index ++; + if(index >= sz) return; + } + } + else { + if(ptr[index + 1] == '*'){ + ptr[index + 1] = ' '; + flag = 1; + while(flag){ + if(ptr[index] == '*' && ptr[index + 1] == '/'){ + flag = 0; + } + else { + ptr[index] = ' '; + index ++; + if(index >= sz - 1) return; + } + } + ptr[index] = ptr[index + 1] = ' '; + } + else + index ++; + } + } + } + else + index ++; + } + } +} + +void processIncludes(char** buf,int& sz) +{ + char* p,*p1,*tmp,*ptr; + XStream fh; + + int flag = 1,count = 0,index,index1,inc_len,sz1; + + inc_len = strlen(inc_str); + + ptr = *buf; + + while(flag){ + flag = 0; + index = 0; + while(index < sz - inc_len){ + if(ptr[index] == '\"'){ + index ++; + if(index < sz - 1){ + while(ptr[index] != '\"'){ + index ++; + if(index >= sz - inc_len) return; + } + index ++; + } + } + else { + if(ptr[index] == '#'){ + if(!strncmp(ptr + index,inc_str,inc_len)){ + flag = 1; + index1 = index; + index += inc_len; + while(ptr[index] != '\"'){ + index ++; + if(index >= sz) return; + } + index ++; + p = ptr + index; + while(ptr[index] != '\"'){ + index ++; + if(index >= sz) return; + } + ptr[index] = 0; + if(scrVerbose) + printf("Loading file -> %s\n",p); + fh.open(p,XS_IN); + sz1 = fh.size(); + p1 = new char[sz1]; + fh.read(p1,sz1); + stripComments(p1,sz1); + fh.close(); + + tmp = new char[sz + sz1 - (index - index1)]; + memcpy(tmp,ptr,index1); + memcpy(tmp + index1,p1,sz1); + memcpy(tmp + index1 + sz1,ptr + index,sz - index); + + delete p1; + delete ptr; + + *buf = tmp; + ptr = tmp; + + sz = sz + sz1 - (index - index1); + break; + } + else + index ++; + } + else + index ++; + } + } + } +} + +int processDefines(char** ptr,int& sz) +{ + scrDefineData* p,*p1; + defineList = new xtList; + prepareDefines(*ptr,sz); + + if(scrVerbose) + printf("Sorting defines\n"); + + p = defineList -> first(); + while(p){ + p1 = p -> next; + while(p1){ + if(p1 -> srcLen == p -> srcLen && !strncmp(p -> srcData,p1 -> srcData,p -> srcLen)){ + p -> endIndex = p1 -> startIndex; + break; + } + p1 = p1 -> next; + } + p = p -> next; + } + + initStringData(*ptr,sz); + if(!replaceDefines()) return 0; + + p = defineList -> first(); + while(p){ + defineList -> remove(p); + delete p; + p = defineList -> first(); + } + delete defineList; + + return 1; +} + +void prepareDefines(char* ptr,int sz) +{ + scrDefineData* p; + int index,def_len,text_len; + + def_len = strlen(def_str); + text_len = strlen(text_str); + + index = 0; + while(index < sz - def_len){ + if(ptr[index] == '\"'){ + index ++; + if(index < sz - 1){ + while(ptr[index] != '\"'){ + index ++; + if(index >= sz - def_len) return; + } + index ++; + } + } + else { + if(ptr[index] == '#'){ + if(!strncmp(ptr + index,def_str,def_len)){ + p = new scrDefineData; + p -> init(ptr + index,sz - index); + p -> startIndex = index; + p -> endIndex = sz; + if(p -> srcLen && p -> destLen){ + defineList -> append(p); + } + if(scrVerbose) + printf("Define number -> %d\r",defineList -> size()); + } + if(!strncmp(ptr + index,text_str,text_len)){ + p = new scrDefineData; + p -> flags |= DEF_TEXT; + p -> init(ptr + index,sz - index); + p -> startIndex = index; + p -> endIndex = sz; + if(p -> srcLen && p -> destLen){ + defineList -> append(p); + } + if(scrVerbose) + printf("Define number -> %d\r",defineList -> size()); + } + index ++; + } + else + index ++; + } + } + if(scrVerbose) + printf("\n"); +} + +scrDefineData::scrDefineData(void) +{ + list = NULL; + + flags = 0; + startIndex = endIndex = 0; + srcLen = destLen = 0; + srcData = destData = NULL; +} + +scrDefineData::~scrDefineData(void) +{ + if(srcData) delete srcData; + if(destData) delete destData; +} + +void scrDefineData::init(char* ptr,int sz) +{ + int index0,index1,index2,next_flag; + + if(!(flags & DEF_TEXT)){ + index0 = strlen(def_str); + while(isspace(ptr[index0])){ + index0 ++; + if(index0 >= sz) break; + } + if(index0 >= sz) return; + + index1 = index0; + while(!isspace(ptr[index1])){ + index1 ++; + if(index1 >= sz) break; + } + if(index1 >= sz) return; + + srcLen = index1 - index0; + srcData = new char[srcLen]; + memcpy(srcData,ptr + index0,srcLen); + + index0 = index1; + + next_flag = 1; + while(next_flag){ + next_flag = 0; + while(ptr[index1] != '\n'){ + index1 ++; + if(index1 >= sz) break; + } + if(index1 >= sz) return; + + index2 = index1; + for(index2 = index1; index2 > index0; index2 --){ + if(!isspace(ptr[index2])){ + if(ptr[index2] == '\\'){ + ptr[index2] = ' '; + next_flag = 1; + index1 ++; + } + break; + } + } + } + + const auto localized_key = getLocalizedKey ? getLocalizedKey(std::string_view(srcData, srcLen)) : ""; + if (!localized_key.empty()) + { + destData = new char[localized_key.size()]; + destLen = localized_key.size(); + memcpy(destData,localized_key.data(),localized_key.size()); + } + else + { + while(isspace(ptr[index0])){ + index0 ++; + if(index0 >= sz) break; + } + if(index0 >= sz) return; + + destLen = index1 - index0 + 1; + destData = new char[destLen]; + memcpy(destData,ptr + index0,destLen); + } + } + else { + index0 = strlen(text_str); + while(isspace(ptr[index0])){ + index0 ++; + if(index0 >= sz) break; + } + if(index0 >= sz) return; + + index1 = index0; + while(!isspace(ptr[index1])){ + index1 ++; + if(index1 >= sz) break; + } + if(index1 >= sz) return; + + srcLen = index1 - index0; + srcData = new char[srcLen]; + memcpy(srcData,ptr + index0,srcLen); + + while(ptr[index1] != '\n'){ + index1 ++; + if(index1 >= sz) break; + } + if(++index1 >= sz) return; + + index0 = index1; + + next_flag = 1; + while(next_flag){ + while(ptr[index1] != '\n'){ + if(++index1 >= sz) return; + } + index1 += 1; + if(index1 >= sz) return; + + if(ptr[index1] == '#' && !strncmp(ptr + index1,end_str,strlen(end_str))){ + memset(ptr + index1,' ',strlen(end_str)); + next_flag = 0; + + index1 --; + + while(ptr[index1] == '\n' || ptr[index1] == '\r') + ptr[index1 --] = ' '; + + index1 ++; + } + } + + const auto localized_key = getLocalizedKey ? getLocalizedKey(std::string_view(srcData, srcLen)) : ""; + if (!localized_key.empty()) + { + destData = new char[localized_key.size()]; + destLen = localized_key.size(); + memcpy(destData,localized_key.data(),localized_key.size()); + } + else + { + if(ptr[index0] != '\"'){ + destLen = index1 - index0 + 2; + destData = new char[destLen]; + destData[0] = '\"'; + memcpy(destData + 1,ptr + index0,destLen - 1); + destData[destLen - 1] = '\"'; + } + else { + destLen = index1 - index0 + 1; + destData = new char[destLen]; + memcpy(destData,ptr + index0,destLen); + } + } + } + + memset(ptr,' ',index1); +} + +int replaceDefines(void) +{ + int i,idx,idx1,start_flag,end_flag,define_flag; + + char* ptr,*tmp; + + scrDefineData* p; + + if(scrVerbose) + printf("Replacing defines\n"); + + idx = 0; + p = defineList -> first(); + while(p){ + idx ++; + if(scrVerbose) + printf("Step -> %d/%d\r",idx,defineList -> size()); + start_flag = end_flag = 0; + for(i = 0; i < numStrings; i ++){ + if(!start_flag){ + if(p -> startIndex >= strList[i] -> startIndex && p -> startIndex < strList[i] -> endIndex){ + p -> startIndex = i; + start_flag = 1; + } + } + if(!end_flag){ + if(p -> endIndex >= strList[i] -> startIndex && p -> endIndex < strList[i] -> endIndex){ + p -> endIndex = i; + end_flag = 1; + } + } + if(start_flag && end_flag) break; + } + p = p -> next; + } + if(scrVerbose) + printf("\n"); + for(i = 0; i < numStrings; i ++){ + if(scrVerbose) + printf("String -> %d/%d\r",i + 1,numStrings); + for(idx = 0; idx < strList[i] -> strLen; idx ++){ + if(strList[i] -> data[idx] == '$'){ + p = defineList -> first(); + idx1 = idx; + define_flag = 0; + + while(!isspace(strList[i] -> data[idx1]) && !mth_isMathOp(strList[i] -> data[idx1]) && strList[i] -> data[idx1] != '\"'){ + idx1 ++; + if(idx1 >= strList[i] -> strLen - 1) break; + } + idx1 -= idx + 1; + while(p){ + if(p -> startIndex <= i && p -> endIndex > i && p -> srcLen == idx1){ + if(!strncmp(p -> srcData,strList[i] -> data + idx + 1,p -> srcLen)){ + define_flag = 1; + ptr = new char[strList[i] -> strLen + p -> destLen - p -> srcLen - 1]; + if(idx) + memcpy(ptr,strList[i] -> data,idx); + + memcpy(ptr + idx,p -> destData,p -> destLen); + memcpy(ptr + idx + p -> destLen,strList[i] -> data + idx + p -> srcLen + 1,strList[i] -> strLen - (idx + p -> srcLen + 1)); + + delete strList[i] -> data; + strList[i] -> data = ptr; + strList[i] -> strLen = strList[i] -> strLen + p -> destLen - p -> srcLen - 1; + idx = -1; + break; + } + } + p = p -> next; + } + if(!define_flag){ + tmp = new char[256]; + memset(tmp,0,256); + if(strlen(strList[i] -> data + idx) >= 256) + memcpy(tmp,strList[i] -> data + idx,255); + else + memcpy(tmp,strList[i] -> data + idx,strlen(strList[i] -> data + idx)); + +// ErrH.Abort("Unknown #define:",XERR_USER,i,tmp); + printf("Error: Unknown #define: %d\n %s",i,tmp); + scriptError("Error: Unknown #define: %d\n %s",i,tmp); + delete tmp; + return 0; + } + } + } + } + + return 1; +} + + +void initStringData(char* ptr,int sz,int mode) +{ + int i,num,index0; + numStrings = 1; + + if(scrVerbose) + printf("Strings data init\n"); + + for(i = 0; i < sz; i ++){ + if(ptr[i] == '\n') numStrings ++; + } + + num = 0; + index0 = 0; + strList = new scrString*[numStrings]; + for(i = 0; i < numStrings; i ++) + strList[i] = new scrString; + + for(i = 0; i < sz; i ++){ + if(ptr[i] == '\n'){ + strList[num] -> startIndex = index0; + strList[num] -> endIndex = i; + strList[num] -> strLen = i - index0 + 1; + + if(mode){ + strList[num] -> data = new char[strList[num] -> strLen]; + memcpy(strList[num] -> data,ptr + index0,strList[num] -> strLen); + } + + index0 = i + 1; + num ++; + } + } + if(index0 < sz){ + strList[num] -> startIndex = index0; + strList[num] -> endIndex = sz - 1; + strList[num] -> strLen = sz - index0; + if(mode){ + strList[num] -> data = new char[strList[num] -> strLen]; + memcpy(strList[num] -> data,ptr + index0,strList[num] -> strLen); + } + } + if(scrVerbose) + printf("\n"); +} + +void freeStringData(void) +{ + int i; + for(i = 0; i < numStrings; i ++) + delete strList[i]; + delete strList; +} + +scrString::scrString(void) +{ + startIndex = endIndex = strLen = 0; + data = NULL; +} + +scrString::~scrString(void) +{ + if(data) + delete data; +} + +void prepareBuffer(char* ptr,int sz) +{ + int index; + + index = 0; + while(index < sz){ + if(ptr[index] == '\"'){ + index ++; + if(index < sz - 1){ + while(ptr[index] != '\"'){ + index ++; + if(index >= sz) break; + } + if(index >= sz) break; + index ++; + } + } + else { + if(isspace(ptr[index])) ptr[index] = 0; + index ++; + } + } + for(index = 0; index < sz; index ++){ + if(ptr[index] == '\"') ptr[index] = 0; + } +} + +int getStringNumber(int index) +{ + int i; + for(i = 0; i < numStrings; i ++){ + if(index >= strList[i] -> startIndex && index < strList[i] -> endIndex){ + return i + 1; + } + } + return 0; +} + diff --git a/MechoSoma/ParserC/script.cpp b/MechoSoma/ParserC/script.cpp new file mode 100644 index 00000000..67f6298b --- /dev/null +++ b/MechoSoma/ParserC/script.cpp @@ -0,0 +1,854 @@ + +/* ---------------------------- INCLUDE SECTION ----------------------------- */ + +#include +#include +#include +#include + +#include "aci_parser.h" +#include "math_exp.h" + +#include "script_err.h" + +/* ----------------------------- STRUCT SECTION ----------------------------- */ + +struct scrKeyword +{ + int ID; + char* name; + + int dataType; + int dataSize; + + void init(int id,const char* p,int tp,int sz); + void init(const char* p,int sz); + + void initName(const char* p); + void initID(const char* p); + void initData(const char* p); + + void dump(XStream& fh); + + void* list; + scrKeyword* prev; + scrKeyword* next; + + scrKeyword(void); + ~scrKeyword(void); +}; + +/* ----------------------------- EXTERN SECTION ----------------------------- */ + +extern int numStrings; + +/* --------------------------- PROTOTYPE SECTION ---------------------------- */ + +int preprocessScript(const char* fname,int& outsz,char** outbuf); +void setupScript(const char* fname,int& outsz,char** outbuf); +void finitScript(void); + +void prepareBuffer(char* ptr,int sz); + +void initStringData(char* ptr,int sz,int mode = 1); +int getStringNumber(int index); +void freeStringData(void); + +int parseBuffer(const char* fname,int sz = 0,int file_flag = 1); +scrKeyword* getKeyword(const char* ptr); + +/* --------------------------- DEFINITION SECTION --------------------------- */ + +#define SCR_BEG_BLOCK_ID -1 +#define SCR_END_BLOCK_ID -2 + +static const char* dataID[] = { "void", "int", "double", "char" }; + +xtList* scrKeywordList = NULL; +int** scrStringData = NULL; + +const char* scrOutputDIR = ".\\"; +const char* scrOutputFILE = NULL; +const char* scrInputDIR = ".\\"; + +scrDataBlock* scrRoot; +int scrVerbose = 1; +int scrSavePacked = 1; + +int scrVersion = 1; + +scrDataBlock* parseScript(const char* fname,const char* set_name) +{ + int sz; + char* buf; + + XBuffer name_str; + + name_str < scrInputDIR < set_name; + + setupScript((const char*)name_str,sz,&buf); + + name_str.init(); + name_str < scrInputDIR < fname; + + if(!preprocessScript((const char*)name_str,sz,&buf)) return NULL; +/* + XStream fh("temp.txt",XS_OUT); + fh.write(buf,sz); + fh.close(); +*/ + if(!parseBuffer(buf,sz,0)) return NULL; + finitScript(); + + return scrRoot; +} + +scrDataBlock::scrDataBlock(void) +{ + ID = 0; + dataSize = 0; + dataSize0 = -1; + dataType = 0; + flags = 0; + + list = 0; + + name = NULL; + owner = NULL; + nextLevel = NULL; +} + +scrDataBlock::scrDataBlock(int tp) +{ + ID = 0; + dataSize = 1; + dataType = tp; + flags = 0; + + name = NULL; + owner = NULL; + nextLevel = NULL; +} + +scrDataBlock::~scrDataBlock(void) +{ + scrDataBlock* p; + + freeData(); + if(nextLevel){ + p = nextLevel -> first(); + while(p){ + nextLevel -> remove(p); + delete p; + p = nextLevel -> first(); + } + delete nextLevel; + } + + if(name) + delete name; +} + +void scrDataBlock::add(scrDataBlock* p) +{ + nextLevel -> append(p); + p -> owner = this; +} + +void scrDataBlock::alloc(int tp,int sz) +{ + dataType = tp; + dataSize = sz; + + allocData(); +} + +void scrDataBlock::allocData(void) +{ + freeData(); + switch(dataType){ + case SCR_INT_DATA: + i_dataPtr = new int[dataSize]; + break; + case SCR_DOUBLE_DATA: + d_dataPtr = new double[dataSize]; + break; + case SCR_CHAR_DATA: + c_dataPtr = new char[dataSize]; + break; + } + flags |= SCR_ALLOC_DATA; +} + +void scrDataBlock::freeData(void) +{ + if(flags & SCR_ALLOC_DATA){ + switch(dataType){ + case SCR_INT_DATA: + delete i_dataPtr; + break; + case SCR_DOUBLE_DATA: + delete d_dataPtr; + break; + case SCR_CHAR_DATA: + delete c_dataPtr; + break; + } + flags ^= SCR_ALLOC_DATA; + } +} + +scrKeyword::scrKeyword(void) +{ + ID = 0; + list = NULL; + dataType = dataSize = 0; + name = NULL; +} + +scrKeyword::~scrKeyword(void) +{ + if(name) + delete name; +} + +void scrKeyword::initID(const char* p) +{ + i_parseMathExpr(p,ID); +} + +void scrKeyword::initName(const char* p) +{ + int sz = strlen(p) + 1; + name = new char[sz]; + strcpy(name,p); +} + +void scrDataBlock::initName(const char* p) +{ + int sz = strlen(p) + 1; + name = new char[sz]; + strcpy(name,p); +} + +void scrKeyword::initData(const char* p) +{ + char* p1; + int i,sz,sz1; + + sz = strlen(p); + for(i = 0; i < SCR_MAX_DATA_ID; i ++){ + sz1 = strlen(dataID[i]); + if(!strncmp(p,dataID[i],sz1)){ + dataType = i; + dataSize = 1; + if(sz > sz1){ + if(p[sz1] == '['){ + char* expression = strdup(p + sz1 + 1); + auto end = strchr(expression,']'); + if(end) *end = 0; + i_parseMathExpr(expression,dataSize); + free(expression); + } + else { + if(p[sz1] == '*'){ + dataSize = -1; + } + } + } + break; + } + } +} + +void scrKeyword::init(int id,const char* p,int tp,int sz) +{ + ID = id; + initName(p); + + dataType = tp; + dataSize = sz; +} + +void scrKeyword::init(const char* p,int sz) +{ + int index = 0; + while(!p[index]) if(++index >= sz) break; + + if(index >= sz) return; + initData(p + index); + + while(p[index]) if(++index >= sz) break; + while(!p[index]) if(++index >= sz) break; + + if(index >= sz) return; + initName(p + index); + + while(p[index]) if(++index >= sz) break; + while(!p[index]) if(++index >= sz) break; + + if(index >= sz) return; + initID(p + index); +} + +void setupScript(const char* fname,int& outsz,char** outbuf) +{ + int i,sz,idx; + XStream fh; + scrKeyword* p; + char* line = new char[2048]; + + scrKeywordList = new xtList; + + p = new scrKeyword; + p -> init(SCR_BEG_BLOCK_ID,"{",SCR_VOID_DATA,0); + scrKeywordList -> append(p); + p = new scrKeyword; + p -> init(SCR_END_BLOCK_ID,"}",SCR_VOID_DATA,0); + scrKeywordList -> append(p); + + preprocessScript(fname,outsz,outbuf); + + idx = 0; + +// fh.open("temp.txt",XS_OUT); +// fh.write(*outbuf,*outsz); +// fh.close(); + + while(idx < outsz){ + i = 0; + memset(line,0,2048); + do { + line[i] = outbuf[0][idx]; + idx ++; + i ++; + } while(idx < outsz && outbuf[0][idx] != '\n'); + if(idx >= outsz) break; + + sz = strlen(line); + prepareBuffer(line,sz); + + p = new scrKeyword; + p -> init(line,sz); + + if(p -> name) + scrKeywordList -> append(p); + else + delete p; + } + delete outbuf[0]; + + delete[] line; +} + +void finitScript(void) +{ + scrKeyword* p; + p = scrKeywordList -> first(); + while(p){ + scrKeywordList -> remove(p); + delete p; + p = scrKeywordList -> first(); + } + delete scrKeywordList; + scrKeywordList = NULL; +} + +scrKeyword* getKeyword(const char* ptr) +{ + scrKeyword* p = scrKeywordList -> first(); + while(p){ + if(!strcmp(p -> name,ptr)) return p; + p = p -> next; + } + return NULL; +} + +#define NEXT_WORD(ptr,i) while(ptr[i]) if(++i >= sz) break; \ + if(i >= sz) break; \ + while(!ptr[i]) if(++i >= sz) break; \ + if(i >= sz) break; + +#define SKIP_SPACE(ptr,i) while(!ptr[i]) if(++i >= sz) break; \ + if(i >= sz) break; + +int parseBuffer(const char* fname,int sz,int file_flag) +{ + int i,idx,dsz; + scrDataBlock* p,*cp; + scrKeyword* wrd; + char* ptr; + + if(file_flag){ + XStream fh(fname,XS_IN); + + sz = fh.size(); + ptr = new char[sz]; + fh.read(ptr,sz); + fh.close(); + } + else { + ptr = new char[sz]; + memcpy(ptr, fname, sz); + } + + initStringData(ptr,sz,0); + prepareBuffer(ptr,sz); + + scrRoot = new scrDataBlock(SCR_VOID_DATA); + scrRoot -> allocList(); + + cp = scrRoot; + + i = 0; + + while(!ptr[i]) if(++i >= sz) return 1; + if(i >= sz) return 1; + + while(i < sz){ + wrd = getKeyword(ptr + i); + if(!wrd){ + scriptError("Error: Undefined keyword\nString: %d\n %s",getStringNumber(i),ptr + i); + return 0; + } + + switch(wrd -> ID){ + case SCR_BEG_BLOCK_ID: + cp = p; + cp -> allocList(); + break; + case SCR_END_BLOCK_ID: + cp = cp -> owner; + break; + default: + p = new scrDataBlock; + p -> dataType = wrd -> dataType; + + dsz = wrd -> dataSize; + p -> dataSize0 = wrd -> dataSize; + if(wrd -> dataType == SCR_INT_DATA){ + if(dsz == -1){ + NEXT_WORD(ptr,i); + i_parseMathExpr(ptr + i,dsz); + } + p -> dataSize = dsz; + p -> allocData(); + for(idx = 0; idx < dsz; idx ++){ + NEXT_WORD(ptr,i); + i_parseMathExpr(ptr + i,p -> i_dataPtr[idx]); + } + } + if(wrd -> dataType == SCR_DOUBLE_DATA){ + if(dsz == -1){ + NEXT_WORD(ptr,i); + i_parseMathExpr(ptr + i,dsz); + } + p -> dataSize = dsz; + p -> allocData(); + for(idx = 0; idx < dsz; idx ++){ + NEXT_WORD(ptr,i); + d_parseMathExpr(ptr + i,p -> d_dataPtr[idx]); + } + } + if(wrd -> dataType == SCR_CHAR_DATA){ + if(dsz == -1){ + NEXT_WORD(ptr,i); + p -> dataSize = strlen(ptr + i) + 1; + p -> allocData(); + strcpy(p -> c_dataPtr,ptr + i); + } + else { + p -> dataSize = dsz; + p -> allocData(); + for(idx = 0; idx < dsz; idx ++){ + NEXT_WORD(ptr,i); + p -> c_dataPtr[idx] = ptr[i]; + } + } + } + p -> initName(wrd -> name); + p -> ID = wrd -> ID; + cp -> add(p); + break; + } + NEXT_WORD(ptr,i); + } + + freeStringData(); + delete ptr; + + return 1; +} + +void scrDataBlock::dump(XStream& fh,int idx,int mode) +{ + int i; + scrDataBlock* p; + + if(!mode){ + for(i = 0; i < idx; i ++){ + fh < "\t"; + } + if(name) fh < name; + else fh <= ID; + } + + if(dataType != SCR_CHAR_DATA && dataSize0 == -1) fh < " " <= dataSize; + + switch(dataType){ + case SCR_INT_DATA: + for(i = 0; i < dataSize; i ++){ + fh < " " <= i_dataPtr[i]; + } + break; + + case SCR_DOUBLE_DATA: + for(i = 0; i < dataSize; i ++){ + fh < " " <= d_dataPtr[i]; + } + break; + case SCR_CHAR_DATA: + fh < " \"" < c_dataPtr < "\""; + break; + } + + if(nextLevel){ + if(!mode) fh < " {\r\n"; + p = nextLevel -> first(); + while(p){ + p -> dump(fh,idx + 1); + p = p -> next; + } + for(i = 0; i < idx; i ++) fh < "\t"; + if(!mode) fh < "}\r\n"; + } + + fh < "\r\n"; +} + +void dumpScript(const char* fname,scrDataBlock* p) +{ + XStream fh(fname,XS_OUT); + p -> dump(fh,-1,1); + fh.close(); +} + +void scrDataBlock::get_keys(void) +{ + scrKeyword* k; + scrDataBlock* p; + + if(name && !scrKeywordList -> search(ID)){ + k = new scrKeyword; + k -> ID = ID; + k -> dataSize = dataSize0; + k -> dataType = dataType; + + k -> name = new char[strlen(name) + 1]; + strcpy(k -> name,name); + + scrKeywordList -> append(k); + } + + if(!nextLevel) return; + + p = nextLevel -> first(); + while(p){ + p -> get_keys(); + p = p -> next; + } +} + +void dumpScriptKeywords(const char* fname,scrDataBlock* p) +{ + scrKeyword* k; + + scrKeywordList = new xtList; + p -> get_keys(); + + XStream fh(fname,XS_OUT); + k = scrKeywordList -> first(); + while(k){ + k -> dump(fh); + k = k -> next; + } + fh.close(); + + k = scrKeywordList -> first(); + while(k){ + scrKeywordList -> remove(k); + delete k; + k = scrKeywordList -> first(); + } + delete scrKeywordList; +} + +void scrDataBlock::saveData(XStream& fh) +{ + scrDataBlock* p; + + if(dataSize){ + switch(dataType){ + case SCR_INT_DATA: + fh.write((char*)i_dataPtr,dataSize * sizeof(int)); + break; + case SCR_DOUBLE_DATA: + fh.write((char*)d_dataPtr,dataSize * sizeof(double)); + break; + case SCR_CHAR_DATA: + fh.write(c_dataPtr,dataSize); + break; + } + } + if(nextLevel){ + p = nextLevel -> first(); + while(p){ + p -> saveData(fh); + p = p -> next; + } + } +} + +void scrDataBlock::loadData(XStream& fh) +{ + scrDataBlock* p; + + if(dataSize){ + switch(dataType){ + case SCR_INT_DATA: + fh.read((char*)i_dataPtr,dataSize * sizeof(int)); + break; + case SCR_DOUBLE_DATA: + fh.read((char*)d_dataPtr,dataSize * sizeof(double)); + break; + case SCR_CHAR_DATA: + fh.read(c_dataPtr,dataSize); + break; + } + } + if(nextLevel){ + p = nextLevel -> first(); + while(p){ + p -> loadData(fh); + p = p -> next; + } + } +} + +void scrDataBlock::loadData(XBuffer& xb) +{ + scrDataBlock* p; + + if(dataSize){ + switch(dataType){ + case SCR_INT_DATA: + xb.read((char*)i_dataPtr,dataSize * sizeof(int)); + break; + case SCR_DOUBLE_DATA: + xb.read((char*)d_dataPtr,dataSize * sizeof(double)); + break; + case SCR_CHAR_DATA: + xb.read(c_dataPtr,dataSize); + break; + } + } + if(nextLevel){ + p = nextLevel -> first(); + while(p){ + p -> loadData(xb); + p = p -> next; + } + } +} + +void scrDataBlock::saveInfo(XStream& fh) +{ + int sz = 0; + scrDataBlock* p; + + fh < ID < dataSize < dataType < dataSize0; + if(name) sz = strlen(name); + + fh < sz; + if(name) fh < name; + + if(nextLevel){ + fh < nextLevel -> size(); + p = nextLevel -> first(); + while(p){ + p -> saveInfo(fh); + p = p -> next; + } + } + else { + fh < (int)0; + } +} + +void scrDataBlock::loadInfo(XStream& fh) +{ + int i,sz = 0; + scrDataBlock* p; + + fh > ID > dataSize > dataType > sz; + + if(scrVersion >= 2) + fh > dataSize0; + + if(sz){ + name = new char[sz + 1]; + fh.read(name,sz); + name[sz] = 0; + } + fh > sz; + + allocData(); + + if(sz){ + allocList(); + for(i = 0; i < sz; i ++){ + p = new scrDataBlock; + p -> loadInfo(fh); + add(p); + } + } +} + +void scrDataBlock::loadInfo(XBuffer& xb) +{ + int i,sz = 0; + scrDataBlock* p; + + xb > ID > dataSize > dataType; + + if(scrVersion >= 2) + xb > dataSize0; + + xb > sz; + + if(sz){ + name = new char[sz + 1]; + xb.read(name,sz); + name[sz] = 0; + } + xb > sz; + + allocData(); + + if(sz){ + allocList(); + for(i = 0; i < sz; i ++){ + p = new scrDataBlock; + p -> loadInfo(xb); + add(p); + } + } +} + +void saveScript(const char* fname,scrDataBlock* p) +{ + int sz0,sz1,type = 2; + char* p0,*p1; + + XStream fh(fname,XS_OUT); + p -> saveInfo(fh); + p -> saveData(fh); + fh.close(); + + if(scrSavePacked){ + fh.open(fname,XS_IN); + sz0 = fh.size(); + p0 = new char[sz0]; + fh.read(p0,sz0); + fh.close(); + + p1 = new char[sz0]; + sz1 = ZIP_compress(p1,sz0,p0,sz0); + fh.open(fname,XS_OUT); + fh < type; + fh.write(p1,sz1); + fh.close(); + + delete p0; + delete p1; + } +} + +scrDataBlock* loadScript(const std::string &fname) +{ + XStream fh(fname.c_str(),XS_IN); + return loadScript(fh); +} + +scrDataBlock* loadScript(XStream& fh) +{ + int sz0,sz1,type; + char* p0,*p1; + + scrDataBlock* p = new scrDataBlock; + + fh > type; + + scrVersion = type; + + if(!type){ + fh.seek(0,XS_BEG); + sz1 = fh.size(); + p1 = new char[sz1]; + fh.read(p1,sz1); + } + else { + sz0 = fh.size() - sizeof(int); + p0 = new char[sz0]; + fh.read(p0,sz0); + + sz1 = ZIP_GetExpandedSize(p0); + p1 = new char[sz1]; + ZIP_expand(p1,sz1,p0,sz0); + + delete p0; + } + + XBuffer buf(p1,sz1); + + p -> loadInfo(buf); + p -> loadData(buf); + + fh.close(); + delete p1; + + return p; +} + +void scrSetVerbose(int v) +{ + scrVerbose = v; +} + +void scrSetInputDir(const char* p) +{ + scrInputDIR = strdup(p); +} + +void scrSetOutputDir(const char* p) +{ + scrOutputDIR = strdup(p); +} + +void scrSetOutputFile(const char* p) +{ + scrOutputFILE = strdup(p); +} + +void scrKeyword::dump(XStream& fh) +{ + fh < dataID[dataType]; + + if(dataSize == -1) + fh < "*"; + + if(dataSize > 1) + fh < "[" <= dataSize < "]"; + + fh < " " < name < "\t\t" <= ID < "\r\n"; +} diff --git a/MechoSoma/ParserC/script_err.cpp b/MechoSoma/ParserC/script_err.cpp new file mode 100644 index 00000000..052058ef --- /dev/null +++ b/MechoSoma/ParserC/script_err.cpp @@ -0,0 +1,47 @@ +/* ---------------------------- INCLUDE SECTION ----------------------------- */ + +#include +#include + +#include "script_err.h" + +/* ----------------------------- STRUCT SECTION ----------------------------- */ +/* ----------------------------- EXTERN SECTION ----------------------------- */ +/* --------------------------- PROTOTYPE SECTION ---------------------------- */ +/* --------------------------- DEFINITION SECTION --------------------------- */ + +void (*script_ErrFnc)(const char*) = 0; + +int scriptErrMode = 1; + +void scriptSetErrorOutHandler(void (*hfnc)(const char*)) +{ + script_ErrFnc = hfnc; +} + +void scriptSetErrorMode(int mode) +{ + scriptErrMode = mode; +} + +void scriptError(const char* msg) +{ + if(script_ErrFnc) + (*script_ErrFnc)(msg); + else + printf(msg); + + if(scriptErrMode) + exit(1); +} + +void scriptError(const char* msg,int code,const char* text) +{ + static char msg_buf[1024]; + if(text) + sprintf(msg_buf,msg,code,text); + else + sprintf(msg_buf,msg,code); + + scriptError(msg_buf); +} diff --git a/MechoSoma/ParserC/script_err.h b/MechoSoma/ParserC/script_err.h new file mode 100644 index 00000000..8d16732d --- /dev/null +++ b/MechoSoma/ParserC/script_err.h @@ -0,0 +1,11 @@ +#ifndef __SCRIPT_ERR_H__ +#define __SCRIPT_ERR_H__ + +void scriptSetErrorMode(int mode); +void scriptSetErrorOutHandler(void (*hfnc)(const char*)); + +void scriptError(const char* msg); +void scriptError(const char* msg,int code,const char* text = NULL); + + +#endif /* __SCRIPT_ERR_H__ */ \ No newline at end of file diff --git a/MechoSoma/RUNTIME/Scripts/mch_tracks.scr b/MechoSoma/RUNTIME/Scripts/mch_tracks.scr index 04bfd686..4efd5271 100644 --- a/MechoSoma/RUNTIME/Scripts/mch_tracks.scr +++ b/MechoSoma/RUNTIME/Scripts/mch_tracks.scr @@ -71,8 +71,6 @@ $town0 { part 41 // Clown - enabled - name $town0_name text $town0_text } diff --git a/MechoSoma/RUNTIME/Scripts/ru_mch_tracks.scr b/MechoSoma/RUNTIME/Scripts/ru_mch_tracks.scr new file mode 100644 index 00000000..04bfd686 --- /dev/null +++ b/MechoSoma/RUNTIME/Scripts/ru_mch_tracks.scr @@ -0,0 +1,405 @@ + +#include "iScreen\Scripts\aci_str.inc" + +#define FOREST_CD 4 +#define WATER_CD 5 +#define TOWN_CD 3 +#define LAVA_CD 6 +#define WATCH_CD 8 +#define MOUNTAIN_CD 7 +#define BOSS_CD 22 + +#define BOSS_FROG 10 +#define BOSS_WHALE "$BOSS_FROG + 1" +#define BOSS_SPIDER "$BOSS_FROG + 2" +#define BOSS_STONE "$BOSS_FROG + 3" +#define BOSS_DRAGON "$BOSS_FROG + 4" + +#define BOSS_STONE_FIG 5 +#define BOSS_DRAGON_FIG 7 +#define BOSS_WHALE_FIG 9 +#define BOSS_FROG_FIG 6 +#define BOSS_SPIDER_FIG 8 + +#define BOSS_STONE_SND 2 +#define BOSS_DRAGON_SND 1 +#define BOSS_WHALE_SND 1 +#define BOSS_FROG_SND 0 +#define BOSS_SPIDER_SND 0 + +#define mountain0 track 0 0 +#define mountain1 track 0 1 +#define mountain2 track 0 2 +#define mountain3 track 0 3 +#define mountain4 track 0 4 +#define mountain5 track 0 5 + +#define water0 track 1 0 +#define water1 track 1 1 +#define water2 track 1 2 +#define water3 track 1 3 +#define water4 track 1 4 +#define water5 track 1 5 + +#define forest0 track 2 0 +#define forest1 track 2 1 +#define forest2 track 2 2 +#define forest3 track 2 3 +#define forest4 track 2 4 +#define forest5 track 2 5 + +#define town0 track 3 0 +#define town1 track 3 1 + +#define lava0 track 4 0 +#define lava1 track 4 1 +#define lava2 track 4 2 +#define lava3 track 4 3 +#define lava4 track 4 4 + +#define watch0 track 8 0 +#define watch1 track 8 1 +#define watch2 track 8 2 +#define watch3 track 8 3 +#define watch4 track 8 4 +#define watch5 track 8 5 + +$town0 { + difficulty 1 +// difficulty 0 + cd_track $TOWN_CD + + part 41 // Clown + + enabled + + name $town0_name + text $town0_text +} + +$town1 { + difficulty 4 + cd_track $TOWN_CD + + part 32 // Electric Body + + name $town1_name + text $town1_text +} + +$mountain0 { + difficulty 2 +// difficulty 0 + cd_track $MOUNTAIN_CD + + part 39 // Voodoo Master + + enabled + + name $mountain0_name + text $mountain0_text +} + +$mountain1 { + difficulty 3 + cd_track $MOUNTAIN_CD + + part 29 // Electric Seeds + + name $mountain1_name + text $mountain1_text +} + +$mountain2 { + difficulty 4 + cd_track $MOUNTAIN_CD + + part 18 // Formicary + + name $mountain2_name + text $mountain2_text +} + +$mountain4 { + difficulty 6 + cd_track $MOUNTAIN_CD + + part 11 // Scarlet Trace + + name $mountain4_name + text $mountain4_text +} + +$mountain5 { + difficulty 10 + cd_track $BOSS_CD + + boss "SmartStoneRacer" + boss_id $BOSS_STONE + boss_figure_id $BOSS_STONE_FIG + sound $BOSS_STONE_SND + + open_movie "RESOURCE\WorldScript\MountainBeginWS.scb" + close_movie "RESOURCE\WorldScript\MountainVictoryWS.scb" + + name $mountain5_name + text $mountain5_text +} + +$forest0 { + difficulty 0 + cd_track $FOREST_CD + + part 5 // Pesky Mould + + enabled + + name $forest0_name + text $forest0_text +} + +$forest1 { + difficulty 2 + cd_track $FOREST_CD + + part 7 // Evil Eye + + name $forest1_name + text $forest1_text +} + +$forest2 { + difficulty 3 + cd_track $FOREST_CD + + part 48 // Teleportation Trap + + name $forest2_name + text $forest2_text +} + +$forest3 { + difficulty 1 + cd_track $FOREST_CD + + part 61 // Mines + + name $forest3_name + text $forest3_text +} + +$forest4 { + difficulty 4 + cd_track $FOREST_CD + + part 19 // Soap-Bubbles + + name $forest4_name + text $forest4_text +} + +$forest5 { + difficulty 10 + cd_track $BOSS_CD + + part 51 // Helicopter + + boss "FrogRacer" + boss_id $BOSS_FROG + boss_figure_id $BOSS_FROG_FIG + sound $BOSS_FROG_SND + + open_movie "RESOURCE\WorldScript\ForestBeginWS.scb" + close_movie "RESOURCE\WorldScript\ForestVictoryWS.scb" + + name $forest5_name + text $forest5_text +} + +$water0 { + difficulty 1 + cd_track $WATER_CD + + part 59 // Butterfly + + name $water0_name + text $water0_text +} + +$water1 { + difficulty 3 + cd_track $WATER_CD + + part 42 // Suicide + + name $water1_name + text $water1_text +} + +$water2 { + difficulty 0 + cd_track $WATER_CD + + part 25 // Thunderstorm + + enabled + + name $water2_name + text $water2_text +} + +$water3 { + difficulty 4 +// difficulty 0 + cd_track $WATER_CD + + part 17 // Spiders Attack + + name $water3_name + text $water3_text +} + +$water4 { + difficulty 5 + cd_track $WATER_CD + + part 64 // SnowFall + + name $water4_name + text $water4_text +} + +$water5 { + difficulty 10 + cd_track $BOSS_CD + + part 52 // Frog + + boss "WhaleRacer" + boss_id $BOSS_WHALE + boss_figure_id $BOSS_WHALE_FIG + sound $BOSS_WHALE_SND + + open_movie "RESOURCE\WorldScript\WaterBeginWS.scb" + close_movie "RESOURCE\WorldScript\WaterVictoryWS.scb" + + name $water5_name + text $water5_text +} + +$watch0 { + difficulty 2 + cd_track $WATCH_CD + + part 2 // Petard + + name $watch0_name + text $watch0_text +} + +$watch1 { + difficulty 6 + cd_track $WATCH_CD + + part 33 // X-Ray Attack + + name $watch1_name + text $watch1_text +} + +$watch2 { + difficulty 0 + cd_track $WATCH_CD + + part 37 // Bomb Attack + + name $watch2_name + text $watch2_text +} + +$watch4 { + difficulty 5 + cd_track $WATCH_CD + + part 66 // Sparking + + name $watch4_name + text $watch4_text +} + +$watch5 { + difficulty 10 + cd_track $BOSS_CD + + part 50 // Dragon's Power + + boss "SpiderRacer" + boss_id $BOSS_SPIDER + boss_figure_id $BOSS_SPIDER_FIG + sound $BOSS_SPIDER_SND + + open_movie "RESOURCE\WorldScript\WatchBeginWS.scb" + close_movie "RESOURCE\WorldScript\WatchVictoryWS.scb" + + name $watch5_name + text $watch5_text +} + +$lava0 { + difficulty 7 + cd_track $LAVA_CD + + part 60 // Dirigible + + name $lava0_name + text $lava0_text +} + +$lava1 { + difficulty 3 + cd_track $LAVA_CD + + part 24 // Star Shower + + name $lava1_name + text $lava1_text +} + +$lava2 { + difficulty 5 + cd_track $LAVA_CD + + part 3 // Lurid Billow + + name $lava2_name + text $lava2_text +} + +$lava3 { + difficulty 6 + cd_track $LAVA_CD + + part 40 // FireBall Attack + + name $lava3_name + text $lava3_text +} + +$lava4 { + difficulty 10 + cd_track $BOSS_CD + + part 58 // 0-Trasportation + + boss "DragonRacer" + boss_id $BOSS_DRAGON + boss_figure_id $BOSS_DRAGON_FIG + sound $BOSS_DRAGON_SND + + open_movie "RESOURCE\WorldScript\LavaBeginWS.scb" + close_movie "RESOURCE\WorldScript\LavaVictoryWS.scb" + + name $lava4_name + text $lava4_text +} + diff --git a/MechoSoma/XTool/filesystem.cpp b/MechoSoma/XTool/filesystem.cpp index d36cd4f1..408986bd 100644 --- a/MechoSoma/XTool/filesystem.cpp +++ b/MechoSoma/XTool/filesystem.cpp @@ -134,7 +134,7 @@ std::optional FileFinder::find_first(const std::string &path) { std::optional FileFinder::find_next() { while (_iterator != std::filesystem::end(_iterator)) { - if (_iterator->is_regular_file() && match(_path.u8string().c_str(), _iterator->path().filename().u8string().c_str())) { + if (_iterator->is_regular_file() && match(_path.string().c_str(), _iterator->path().filename().string().c_str())) { const auto p = _iterator->path(); _iterator++; return p.filename(); diff --git a/MechoSoma/XTool/itoa.cpp b/MechoSoma/XTool/itoa.cpp new file mode 100644 index 00000000..5d5a9473 --- /dev/null +++ b/MechoSoma/XTool/itoa.cpp @@ -0,0 +1,85 @@ +#include "xtool.h" + +#include +#include +#include +#include +#include + +/** + + * C++ version char* style "itoa": + + */ + +const char* port_itoa( int value, char* result, int base ) { + // check that the base if valid + if (base < 2 || base > 16) { + *result = 0; + return result; + } + + char* out = result; + int quotient = value; + + do { + *out = "0123456789abcdef"[ std::abs( quotient % base ) ]; + ++out; + quotient /= base; + + } while ( quotient ); + + // Only apply negative sign for base 10 + if ( value < 0 && base == 10) + *out++ = '-'; + + std::reverse( result, out ); + *out = 0; + return result; +} + +const char* port_ltoa( long value, char* result, int base ) { + // check that the base if valid + if (base < 2 || base > 16) { + *result = 0; + return result; + } + + char* out = result; + long quotient = value; + + do { + *out = "0123456789abcdef"[ std::abs( quotient % base ) ]; + ++out; + quotient /= base; + } while ( quotient ); + + // Only apply negative sign for base 10 + if ( value < 0 && base == 10) + *out++ = '-'; + + std::reverse( result, out ); + *out = 0; + return result; +} + +const char* port_ultoa( unsigned long value, char* result, int base ) { + // check that the base if valid + if (base < 2 || base > 16) { + *result = 0; + return result; + } + + char* out = result; + unsigned long quotient = value; + + do { + *out = "0123456789abcdef"[ quotient % base ]; + ++out; + quotient /= base; + } while ( quotient ); + + std::reverse( result, out ); + *out = 0; + return result; +} diff --git a/MechoSoma/aciparser/aci_parser.cpp b/MechoSoma/aciparser/aci_parser.cpp deleted file mode 100644 index 32be53e8..00000000 --- a/MechoSoma/aciparser/aci_parser.cpp +++ /dev/null @@ -1,366 +0,0 @@ -#include "aci_parser.h" - -#include - -int** scrStringData = NULL; - -const char* scrOutputDIR = ""; -const char* scrOutputFILE = NULL; -const char* scrInputDIR = ""; - -scrDataBlock* scrRoot; -int scrVerboseFlag = 1; -int scrSavePacked = 1; - -int scrVersion = 1; - -scrDataBlock::scrDataBlock(int tp) -{ - ID = 0; - flags = 0; - dataSize = 1; - dataType = tp; - - name = NULL; - owner = NULL; - - list = NULL; - next = NULL; - prev = NULL; -} - -scrDataBlock::scrDataBlock(void) -{ - ID = 0; - flags = 0; - dataSize = 0; - dataType = 0; - - dataSize0 = -1; - name = NULL; - - owner = NULL; - nextLevel = NULL; - - list = NULL; - next = NULL; - prev = NULL; -} - -scrDataBlock::~scrDataBlock(void) -{ - freeData(); - - if(nextLevel) - delete nextLevel; - - if(name) - delete name; -} - -void scrDataBlock::saveInfo(XStream& fh) -{ - int sz = 0; - - fh < ID < dataSize < dataType < dataSize0; - if(name) sz = strlen(name); - - fh < sz; - if(name) fh < name; - - if(nextLevel){ - fh < nextLevel -> size(); - scrDataBlock* p = nextLevel -> first(); - while(p){ - p -> saveInfo(fh); - p = p -> next; - } - } - else { - fh < (int)0; - } -} - -void scrDataBlock::saveData(XStream& fh) -{ - if(dataSize){ - switch(dataType){ - case SCR_INT_DATA: - fh.write((char*)i_dataPtr,dataSize * sizeof(int)); - break; - case SCR_DOUBLE_DATA: - fh.write((char*)d_dataPtr,dataSize * sizeof(double)); - break; - case SCR_CHAR_DATA: - fh.write(c_dataPtr,dataSize); - break; - } - } - if(nextLevel){ - scrDataBlock* p = nextLevel -> first(); - while(p){ - p -> saveData(fh); - p = p -> next; - } - } -} - -void scrDataBlock::loadInfo(XStream& fh) -{ - int i,sz = 0; - scrDataBlock* p; - - fh > ID > dataSize > dataType > sz; - - if(scrVersion >= 2) - fh > dataSize0; - - if(sz){ - name = new char[sz + 1]; - fh.read(name,sz); - name[sz] = 0; - } - fh > sz; - - allocData(); - - if(sz){ - for(i = 0; i < sz; i ++){ - p = new scrDataBlock; - p -> loadInfo(fh); - add(p); - } - } -} - -void scrDataBlock::loadData(XStream& fh) -{ - if(dataSize){ - switch(dataType){ - case SCR_INT_DATA: - fh.read((char*)i_dataPtr,dataSize * sizeof(int)); - break; - case SCR_DOUBLE_DATA: - fh.read((char*)d_dataPtr,dataSize * sizeof(double)); - break; - case SCR_CHAR_DATA: - fh.read(c_dataPtr,dataSize); - break; - } - } - if(nextLevel){ - scrDataBlock* p = nextLevel -> first(); - while(p){ - p -> loadData(fh); - p = p -> next; - } - } -} - -void scrDataBlock::loadInfo(XBuffer& xb) -{ - int i,sz = 0; - scrDataBlock* p; - - xb > ID > dataSize > dataType; - - if(scrVersion >= 2) - xb > dataSize0; - - xb > sz; - - if(sz){ - name = new char[sz + 1]; - xb.read(name,sz); - name[sz] = 0; - } - xb > sz; - - allocData(); - - if(sz){ - for(i = 0; i < sz; i ++){ - p = new scrDataBlock; - p -> loadInfo(xb); - add(p); - } - } -} - -void scrDataBlock::loadData(XBuffer& xb) -{ - if(dataSize){ - switch(dataType){ - case SCR_INT_DATA: - xb.read((char*)i_dataPtr,dataSize * sizeof(int)); - break; - case SCR_DOUBLE_DATA: - xb.read((char*)d_dataPtr,dataSize * sizeof(double)); - break; - case SCR_CHAR_DATA: - xb.read(c_dataPtr,dataSize); - break; - } - } - if(nextLevel){ - scrDataBlock* p = nextLevel -> first(); - while(p){ - p -> loadData(xb); - p = p -> next; - } - } -} - -void scrDataBlock::alloc(int tp,int sz) -{ - dataType = tp; - dataSize = sz; - - allocData(); -} - -void scrDataBlock::allocData(void) -{ - freeData(); - switch(dataType){ - case SCR_INT_DATA: - i_dataPtr = new int[dataSize]; - break; - case SCR_DOUBLE_DATA: - d_dataPtr = new double[dataSize]; - break; - case SCR_CHAR_DATA: - c_dataPtr = new char[dataSize]; - break; - } - flags |= SCR_ALLOC_DATA; -} - -void scrDataBlock::freeData(void) -{ - if(flags & SCR_ALLOC_DATA){ - switch(dataType){ - case SCR_INT_DATA: - delete i_dataPtr; - break; - case SCR_DOUBLE_DATA: - delete d_dataPtr; - break; - case SCR_CHAR_DATA: - delete c_dataPtr; - break; - } - flags ^= SCR_ALLOC_DATA; - } -} - -void scrDataBlock::add(scrDataBlock* p) -{ - if(nextLevel == NULL) - { - allocList(); - } - - nextLevel->append(p); - p -> owner = this; -} - -void scrSetVerbose(int v) -{ - scrVerboseFlag = v; -} - -void scrSetInputDir(const char* p) -{ - scrInputDIR = strdup(p); -} - -void scrSetOutputDir(const char* p) -{ - scrOutputDIR = strdup(p); -} - -void scrSetOutputFile(const char* p) -{ - scrOutputFILE = strdup(p); -} - -scrDataBlock* loadScript(const std::string &path) -{ - XStream fh(path.c_str(),XS_IN); - return loadScript(fh); -} - -scrDataBlock* loadScript(XStream& fh) -{ - int sz0,sz1,type; - char* p0,*p1; - - scrDataBlock* p = new scrDataBlock; - - fh > type; - - scrVersion = type; - - if(!type){ - fh.seek(0,XS_BEG); - sz1 = fh.size(); - p1 = new char[sz1]; - fh.read(p1,sz1); - } - else { - sz0 = fh.size() - sizeof(int); - p0 = new char[sz0]; - fh.read(p0,sz0); - - sz1 = ZIP_GetExpandedSize(p0); - p1 = new char[sz1]; - ZIP_expand(p1,sz1,p0,sz0); - - delete[] p0; - } - - XBuffer buf(p1,sz1); - - p -> loadInfo(buf); - p -> loadData(buf); - - fh.close(); - delete[] p1; - - return p; -} - -scrDataBlock* parseScript(const char* fname,const char *set_name) -{ - return NULL; -} - -void saveScript(const char* fname,scrDataBlock* p) -{ - int sz0,sz1,type = 2; - char* p0,*p1; - - XStream fh(fname,XS_OUT); - p -> saveInfo(fh); - p -> saveData(fh); - fh.close(); - - if(scrSavePacked){ - fh.open(fname,XS_IN); - sz0 = fh.size(); - p0 = new char[sz0]; - fh.read(p0,sz0); - fh.close(); - - p1 = new char[sz0]; - sz1 = ZIP_compress(p1,sz0,p0,sz0); - fh.open(fname,XS_OUT); - fh < type; - fh.write(p1,sz1); - fh.close(); - - delete p0; - delete p1; - } -} diff --git a/MechoSoma/iScreen/SCRIPTS/ISCREEN.SCR b/MechoSoma/iScreen/SCRIPTS/ISCREEN.SCR index d3c65ec5..a96acd5a 100644 --- a/MechoSoma/iScreen/SCRIPTS/ISCREEN.SCR +++ b/MechoSoma/iScreen/SCRIPTS/ISCREEN.SCR @@ -5256,47 +5256,6 @@ screen { } } } - object { - ID 4 - type $ACS_INPUT_FIELD_OBJ - -// obj_index 1 $ACS_BACK_OPTION - - $ALPHA_SET0 - - flag 0x04 - - str_len 25 - string $ACS_ONLINE_STR - font $MAIN_FNT - $COLOR_SET0 - - palette $ACS_MAIN_MENU_PAL0 - - x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" - y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $OL_Y" - - size_x $MAIN_MENU_SX - size_y $MAIN_MENU_SY - - event { - code $VK_MOUSE_LEFT - code $VK_MOUSE_RIGHT - - time 1 - - ev_comm { - code $ACS_EXT_EVENT - ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 - start_time 0 - } - ev_comm { - code $ACS_CHANGE_SCREEN - ev_data $ACS_MAIN_MENU_DUMMY_SCR3 0 0 0 - start_time 0 - } - } - } object { ID $ACS_BACK_OPTION type $ACS_INPUT_FIELD_OBJ @@ -5308,7 +5267,6 @@ screen { obj_index 1 4 str_len 25 -// string $ACS_MAIN_MENU_STR string $ACS_BACK_STR font $MAIN_FNT $COLOR_SET0 @@ -6397,7 +6355,6 @@ screen { obj_index 3 1 str_len 25 -// string $ACS_MAIN_MENU_STR string $ACS_BACK_STR font $MAIN_FNT $COLOR_SET0 @@ -6490,7 +6447,6 @@ screen { obj_index 3 1 str_len 25 -// string $ACS_MAIN_MENU_STR string $ACS_BACK_STR font $MAIN_FNT $COLOR_SET0 diff --git a/MechoSoma/iScreen/SCRIPTS/en_ISCREEN.SCR b/MechoSoma/iScreen/SCRIPTS/en_ISCREEN.SCR new file mode 100644 index 00000000..4b71235b --- /dev/null +++ b/MechoSoma/iScreen/SCRIPTS/en_ISCREEN.SCR @@ -0,0 +1,6519 @@ + +#include "ISCREEN\Scripts\common.inc" +#include "ISCREEN\Scripts\vkeys.inc" +#include "ISCREEN\aci_evnt.h" +#include "ISCREEN\I-WorldEvent.h" +#include "SOUND\snd_ids.h" + +#include "ISCREEN\Scripts\aci_ids.h" +#include "ISCREEN\controls.h" +#include "ISCREEN\Scripts\aci_str.inc" + +#define ACS_MOUSE_SELECT 0x800 + +#define MAIN_FNT 1 +#define SMALL_FNT 1 +#define WRLD_FNT 1 +#define PRM_FNT 1 +#define CONTROLS_FNT 2 +#define CD_FNT 2 + +#define MAIN_MENU_SX 240 +#define MAIN_MENU_SY 35 +#define MAIN_MENU_DELTA 1 + +#define HOTSEAT_MENU_SX 240 + +#define PRM_MENU_SX0 240 +#define PRM_MENU_SX 100 +#define PRM_MENU_SY 30 +#define PRM_MENU_DELTA 1 +#define PRM_MENU_START_Y 0 + +#define MENU_DX 0 +/* +#define MAIN_MENU_START_Y 40 +#define OPTIONS_MENU_START_Y 40 +#define HOTSEAT_MENU_START_Y 40 +*/ +#define MAIN_MENU_START_Y 0 + +#define OPTIONS_MENU_START_Y 0 +#define HOTSEAT_MENU_START_Y 0 + +#define OBJ_SX 50 +#define OBJ_SY 35 + +#define WORLD_MENU_SX 280 +#define WORLD_MENU_SY 35 +#define WORLD_MENU_DELTA 10 +#define WORLD_MENU_START_Y 0 + +#define TRACK_MENU_SX 280 +#define TRACK_MENU_SY 35 +#define TRACK_MENU_DELTA 10 +#define TRACK_MENU_START_Y 0 + +#define SCR_FRAME -1 +#define OPEN_FRAME 0 +#define CLOSE_FRAME -2 + +#define CREDITS_PX 100 +#define CREDITS_PY 80 + +#define CREDITS_SX 560 +#define CREDITS_SY 270 +#define CREDITS_DY 50 + +#define CONTROLS_SX 300 +#define CONTROLS_SY 310 + +#define CONTROLS_COORDS x 230 \ + y 160 + +num_fonts 3 +font_dir "FONTS" +font_prefix "font" +/* +#define ALPHA_SET0 alpha0 0 \ +alpha1 0 \ +alpha2 0 \ +d_alpha 8 +*/ +#define ALPHA_SET00 alpha0 0 \ +alpha1 0 \ +alpha2 0 \ +d_alpha 8 + +#define ALPHA_SET1 alpha0 0 \ +alpha1 0 \ +alpha2 0 \ +d_alpha 8 + + +#define ALPHA_SET0 alpha0 0 \ +alpha1 128 \ +alpha2 128 \ +d_alpha 16 + +/* +#define ALPHA_SET00 alpha0 10 \ +alpha1 128 \ +alpha2 32 \ +d_alpha 8 + +#define ALPHA_SET1 alpha0 1 \ +alpha1 1 \ +alpha2 1 \ +d_alpha 8 +*/ +#define BACK_COORDS x 30 \ + y 390 \ + size_x 170 \ + size_y $OBJ_SY + +// y 380 \ + +#define BACK_COORDS2 x 30 \ + y 350 \ + size_x 100 \ + size_y $OBJ_SY + +#define COLOR0_0_BASE 136 +#define COLOR0_0_BASE_S 145 +#define COLOR0_1_BASE 159 +#define COLOR0_2_BASE 159 + +#define COLOR0_0 "$COLOR0_0_BASE | (0 * 256)" +#define COLOR0_0_S "$COLOR0_0_BASE_S | (0 * 256)" +#define COLOR0_1 "$COLOR0_1_BASE | (0 * 256)" +#define COLOR0_2 "$COLOR0_2_BASE | (0 * 256)" + +#define COLOR_SET0 col0 $COLOR0_0 \ + col1 $COLOR0_1 \ + col2 $COLOR0_2 + +#define COLOR_SET0_S col0 $COLOR0_0_S \ + col1 $COLOR0_1 \ + col2 $COLOR0_2 + +#define COLOR_SET00 col0 $COLOR0_0 \ + col1 $COLOR0_0 \ + col2 $COLOR0_0 + +#define COLOR_SET1 col0 $COLOR0_1 \ + col1 $COLOR0_1 \ + col2 $COLOR0_1 + +#define COLOR_SET2 col0 $COLOR0_0 \ + col1 $COLOR0_0 \ + col2 $COLOR0_0 + +resource { + type $ACS_PAL + ID $ACS_MAIN_MENU_PAL0 + file "menu.pal" +} + +resource { + type $ACS_PAL + ID $ACS_MAIN_MENU_PAL1 + file "main.pal" +} + +#define NEW_GAME_EV event { \ + code $VK_MOUSE_LEFT \ + code $VK_MOUSE_RIGHT \ + \ + time 2 \ + \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_INTERFACE_AMBIENT 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_SET_GAME_MODE $MCH_SINGLE_GAME $SPLIT_MODE 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_SELECT_WORLD 7 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_ELECTIONARY_MODE 0 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_CHANGE_SCREEN_NEXT \ + ev_data 0 0 0 0 \ + start_time 1 \ + } \ + } + +// Startup screen with "CONTINUE WITH ..." and "CHANGE PLAYER" options... +screen { + ID $ACS_MAIN_MENU_SCR2 + + #define SPLIT_MODE 0 + + #define MAIN_MENU_SIZE 7 + + #define CONTINUE_Y 0 + #define LOAD_Y 1 + #define NEW_GAME_Y 2 + #define DEMO_Y 3 + #define MULTIPLAYER_Y 4 + #define OPTIONS_Y 5 + #define EXIT_Y 6 + + #define NG_UP $ACS_LOAD_OPTION + #define EXIT_DOWN $ACS_CONTINUE_OPTION + + #define ACS_NG_STR $ACS_ABORT_GAME_STR + #include "ISCREEN\Scripts\mainmenu.inc" + + object { + ID 83 // Demo option + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_DEMO_STR + font $MAIN_FNT + $COLOR_SET0 + + obj_index 0 0 + obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $DEMO_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_PLAY_DEMO 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_INTERFACE_AMBIENT 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_GAME_MODE $MCH_SINGLE_GAME 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_NEXT + ev_data 0 0 0 0 + start_time 1 + } + } +/* + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_PREV_SCR_ID $ACS_DEMO_SCR -1 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_DEMO_SCR 0 0 0 + start_time 0 + } + } +*/ + } + + object { + ID $ACS_EXIT_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_EXIT_STR + font $MAIN_FNT + $COLOR_SET0 + + obj_index 3 $EXIT_DOWN + obj_index 0 0 + obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $EXIT_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_MAIN_MENU_DUMMY_SCR2 0 0 0 + start_time 0 + } + } + } + + object { + ID $ACS_CONTINUE_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + obj_index 1 $ACS_EXIT_OPTION + + flag 0x04 + + str_len 25 + string $ACS_CONTINUE_WITH_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $CONTINUE_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_INTERFACE_AMBIENT 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_GAME_MODE $MCH_SINGLE_GAME 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SELECT_WORLD 7 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_LOAD_GAME 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_NEXT + ev_data 0 0 0 0 + start_time 1 + } + } + } + + object { + ID $ACS_LOAD_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_CHANGE_PLAYER_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $LOAD_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_INIT_SAVE_SCR 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_LOAD_GAME_SCR 0 0 0 + start_time 1 + } + } + } + + object { + ID $ACS_MULTIPLAYER_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_MULTIPLAYER_STR + font $MAIN_FNT + $COLOR_SET0 + + def_resource $ACS_MULTIPLAYER_OPTION + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $MULTIPLAYER_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_PREV_SCR_ID $ACS_MULTIPLAYER_SCR -1 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_MULTIPLAYER_SCR 0 0 0 + start_time 0 + } + } + } + + event { + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_PREV_SCR_ID $ACS_MAIN_MENU_DUMMY_SCR1 -1 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_MAIN_MENU_DUMMY_SCR1 0 0 0 + start_time 0 + } + } +} + + +// Startup screen with "CONTINUE WITH ..." option... +screen { + ID $ACS_MAIN_MENU_SCR1 + + #define SPLIT_MODE 0 + + #define MAIN_MENU_SIZE 6 + + #define CONTINUE_Y 0 + #define NEW_GAME_Y 1 + #define DEMO_Y 2 + #define MULTIPLAYER_Y 3 + #define OPTIONS_Y 4 + #define EXIT_Y 5 + + #define NG_UP $ACS_CONTINUE_OPTION + #define EXIT_DOWN $ACS_CONTINUE_OPTION + + #define ACS_NG_STR $ACS_ABORT_GAME_STR + #include "ISCREEN\Scripts\mainmenu.inc" + + object { + ID 83 // Demo option + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_DEMO_STR + font $MAIN_FNT + $COLOR_SET0 + + obj_index 0 0 + obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $DEMO_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_PLAY_DEMO 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_INTERFACE_AMBIENT 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_GAME_MODE $MCH_SINGLE_GAME 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_NEXT + ev_data 0 0 0 0 + start_time 1 + } + } +/* + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_PREV_SCR_ID $ACS_DEMO_SCR -1 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_DEMO_SCR 0 0 0 + start_time 0 + } + } +*/ + } + + object { + ID $ACS_EXIT_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_EXIT_STR + font $MAIN_FNT + $COLOR_SET0 + + obj_index 3 $EXIT_DOWN + obj_index 0 0 + obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $EXIT_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_MAIN_MENU_DUMMY_SCR2 0 0 0 + start_time 0 + } + } + } + + object { + ID $ACS_CONTINUE_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + obj_index 1 $ACS_EXIT_OPTION + + flag 0x04 + + str_len 25 + string $ACS_CONTINUE_WITH_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $CONTINUE_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_INTERFACE_AMBIENT 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_GAME_MODE $MCH_SINGLE_GAME 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SELECT_WORLD 7 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_LOAD_GAME 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_NEXT + ev_data 0 0 0 0 + start_time 1 + } + } + } + + object { + ID $ACS_MULTIPLAYER_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_MULTIPLAYER_STR + font $MAIN_FNT + $COLOR_SET0 + + def_resource $ACS_MULTIPLAYER_OPTION + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $MULTIPLAYER_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_PREV_SCR_ID $ACS_MULTIPLAYER_SCR -1 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_MULTIPLAYER_SCR 0 0 0 + start_time 0 + } + } + } + + event { + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_PREV_SCR_ID $ACS_MAIN_MENU_DUMMY_SCR1 -1 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_MAIN_MENU_DUMMY_SCR1 0 0 0 + start_time 0 + } + } +} + +// Startup screen without "CONTINUE" option... +screen { + ID $ACS_MAIN_MENU_SCR0 + + #define SPLIT_MODE 0 + + #define MAIN_MENU_SIZE 5 + + #define NEW_GAME_Y 0 + #define DEMO_Y 1 + #define MULTIPLAYER_Y 2 + #define OPTIONS_Y 3 + #define EXIT_Y 4 + + #define NG_UP $ACS_EXIT_OPTION + #define EXIT_DOWN $ACS_NEW_GAME_OPTION + + #define ACS_NG_STR $ACS_NEW_GAME_STR + #include "ISCREEN\Scripts\mainmenu.inc" + + object { + ID 83 // Demo option + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_DEMO_STR + font $MAIN_FNT + $COLOR_SET0 + + obj_index 0 0 + obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $DEMO_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_PLAY_DEMO 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_INTERFACE_AMBIENT 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_GAME_MODE $MCH_SINGLE_GAME 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_NEXT + ev_data 0 0 0 0 + start_time 1 + } + } +/* + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_PREV_SCR_ID $ACS_DEMO_SCR -1 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_DEMO_SCR 0 0 0 + start_time 0 + } + } +*/ + } + + object { + ID $ACS_EXIT_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_EXIT_STR + font $MAIN_FNT + $COLOR_SET0 + + obj_index 3 $EXIT_DOWN + obj_index 0 0 + obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $EXIT_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_MAIN_MENU_DUMMY_SCR2 0 0 0 + start_time 0 + } + } + } + + object { + ID $ACS_MULTIPLAYER_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_MULTIPLAYER_STR + font $MAIN_FNT + $COLOR_SET0 + + def_resource $ACS_MULTIPLAYER_OPTION + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $MULTIPLAYER_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_PREV_SCR_ID $ACS_MULTIPLAYER_SCR -1 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_MULTIPLAYER_SCR 0 0 0 + start_time 0 + } + } + } + + event { + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_PREV_SCR_ID $ACS_MAIN_MENU_DUMMY_SCR1 -1 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_MAIN_MENU_DUMMY_SCR1 0 0 0 + start_time 0 + } + } +} + +// Dummy screen +screen { + ID $ACS_MAIN_MENU_DUMMY_SCR0 + + event { + code $ACS_STARTUP_KEY + + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_MAIN_MENU_SCR0 0 0 0 + start_time 0 + } + } +} + +// Dummy screen #2 - exit +screen { + ID $ACS_MAIN_MENU_DUMMY_SCR1 + + #define MAIN_MENU_SIZE 2 + + object { + ID $ACS_EXIT_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET00 + + flag 0x04 + + str_len 25 + string $ACS_EXIT_Q_STR + font $MAIN_FNT + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX)/2" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * 0 - 20" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + } + + object { + ID $ACS_CONTINUE_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + obj_index 0 $ACS_ABORT_OPTION + obj_index 2 $ACS_ABORT_OPTION + + str_len 25 + string $ACS_NO_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "320 + 40" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * 1 + 20" + + size_x 50 + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_N + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_PREV + ev_data 0 0 0 0 + start_time 1 + } + } + } + object { + ID $ACS_ABORT_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + obj_index 0 $ACS_CONTINUE_OPTION + obj_index 2 $ACS_CONTINUE_OPTION + + flag 0x04 + + str_len 25 + string $ACS_YES_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "320 - 90" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * 1 + 20" + + size_x 50 + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_Y + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_MAIN_MENU_DUMMY_SCR2 0 0 0 + start_time 1 + } + } + } +} + +// Dummy screen #3 - exit +screen { + ID $ACS_MAIN_MENU_DUMMY_SCR2 + + event { + code $ACS_STARTUP_KEY + time 20 + + ev_comm { + code $ACS_EXIT + ev_data $ACS_EXIT_GAME 0 0 0 + start_time 19 + } + } +} + +// Dummy screen #4 - exit & launch online game +screen { + ID $ACS_MAIN_MENU_DUMMY_SCR3 + + event { + code $ACS_STARTUP_KEY + time 20 + + ev_comm { + code $ACS_EXIT + ev_data -1 0 0 0 + start_time 19 + } + } +} + +// Second main menu screen - with "CONTINUE" option... +screen { + ID $ACS_MAIN_MENU_SCR3 + + #define SPLIT_MODE -1 + + #define MAIN_MENU_SIZE 7 + + flag 0x20 + + #define CONTINUE_Y 0 + #define ABORT_Y 1 + #define RESTART_Y 2 + #define NEW_GAME_Y 4 + #define OPTIONS_Y 5 + #define EXIT_Y 6 + + #define NG_UP $ACS_RESTART_OPTION + #define EXIT_DOWN $ACS_CONTINUE_OPTION + + #define ACS_NG_STR $ACS_ABORT_GAME_STR + #include "ISCREEN\Scripts\mainmenu.inc" + + object { + ID $ACS_EXIT_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_QUIT_STR + font $MAIN_FNT + $COLOR_SET0 + + obj_index 3 $EXIT_DOWN + obj_index 0 0 + obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $EXIT_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_INTERFACE_AMBIENT 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_QUIT 0 0 0 + start_time 0 + } + } + } + + object { + ID $ACS_CONTINUE_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + obj_index 1 $ACS_EXIT_OPTION + obj_index 0 0 + obj_index 2 0 + + flag 0x04 + + str_len 25 + string $ACS_CONTINUE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX ) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $CONTINUE_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 2 + + ev_comm { + code $ACS_EXIT + ev_data $ACS_CONTINUE_GAME 0 0 0 + start_time 1 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + } + } + object { + ID $ACS_ABORT_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_ABORT_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX ) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $ABORT_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_ABORT_RACE 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SELECT_WORLD 7 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_NEXT + ev_data 0 0 0 0 + start_time 1 + } + } + } + + object { + ID $ACS_RESTART_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $RESTART_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + str_len 25 + string $ACS_RESTART_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_ABORT_RACE 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_NEXT + ev_data 0 0 0 0 + start_time 1 + } + } + } +} + +// I-World main menu screen - with "CONTINUE" option... +screen { + ID $ACS_MAIN_MENU_SCR4 + + #define SPLIT_MODE -1 + + #define MAIN_MENU_SIZE 4 + + #define CONTINUE_Y 0 + #define NEW_GAME_Y 1 + #define OPTIONS_Y 2 + #define EXIT_Y 3 + #define MODE_Y 5 + + #define NG_UP $ACS_CONTINUE_OPTION + #define EXIT_DOWN $ACS_CONTINUE_OPTION + + #define ACS_NG_STR $ACS_ABORT_GAME_STR + #include "ISCREEN\Scripts\mainmenu.inc" +/* + object { + ID 1 + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_QUIT_STR + font $MAIN_FNT + $COLOR_SET0 + + obj_index 3 $ACS_CONTINUE_OPTION + obj_index 0 0 + obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $MODE_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + max_state 1 + state_str $ACS_RT_MODE_STR + state_str $ACS_TB_MODE_STR + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_LEFT + code $VK_RIGHT + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_TURNBASED 1 0 0 + start_time 0 + } + } + } +*/ + object { + ID $ACS_EXIT_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_QUIT_STR + font $MAIN_FNT + $COLOR_SET0 + + obj_index 3 $EXIT_DOWN + obj_index 0 0 + obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $EXIT_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_INTERFACE_AMBIENT 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_QUIT 0 0 0 + start_time 1 + } + } + } + object { + ID $ACS_CONTINUE_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + obj_index 1 $ACS_EXIT_OPTION + obj_index 0 0 + obj_index 2 0 + + flag 0x04 + + str_len 25 + string $ACS_CONTINUE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX ) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $CONTINUE_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 2 + + ev_comm { + code $ACS_EXIT + ev_data $ACS_CONTINUE_GAME 0 0 0 + start_time 1 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + } + } +} + +#define NEW_GAME_EV event { \ + code $VK_MOUSE_LEFT \ + code $VK_MOUSE_RIGHT \ + \ + time 2 \ + \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_INTERFACE_AMBIENT 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_SET_GAME_MODE $MCH_ENTIRE_CONTROL_HS 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_CHANGE_SCREEN_NEXT \ + ev_data 0 0 0 0 \ + start_time 1 \ + } \ + } + +// Hotseat main menu screen... +screen { + ID $ACS_MAIN_MENU_SCR5 + + #define SPLIT_MODE -1 + + #define MAIN_MENU_SIZE 7 + + #define CONTINUE_Y 0 + #define ABORT_Y 1 + #define RESTART_Y 2 + #define NEW_GAME_Y 4 + #define OPTIONS_Y 5 + #define EXIT_Y 6 + + #define NG_UP $ACS_RESTART_OPTION + #define EXIT_DOWN $ACS_CONTINUE_OPTION + + #define ACS_NG_STR $ACS_ABORT_GAME_STR + #include "ISCREEN\Scripts\mainmenu.inc" + + object { + ID $ACS_EXIT_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_QUIT_STR + font $MAIN_FNT + $COLOR_SET0 + + obj_index 3 $EXIT_DOWN + obj_index 0 0 + obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $EXIT_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_INTERFACE_AMBIENT 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_QUIT 0 0 0 + start_time 1 + } + } + } + + object { + ID $ACS_CONTINUE_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + obj_index 1 $ACS_EXIT_OPTION + obj_index 0 0 + obj_index 2 0 + + flag 0x04 + + str_len 25 + string $ACS_CONTINUE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX ) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $CONTINUE_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 2 + + ev_comm { + code $ACS_EXIT + ev_data $ACS_CONTINUE_GAME 0 0 0 + start_time 1 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + } + } + object { + ID $ACS_ABORT_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_ABORT_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX ) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $ABORT_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_ABORT_RACE 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_SPLIT_HS_SCR 0 0 0 + start_time 1 + } + } + } + + object { + ID $ACS_RESTART_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $RESTART_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + str_len 25 + string $ACS_RESTART_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_ABORT_RACE 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_NEXT + ev_data 0 0 0 0 + start_time 1 + } + } + } +} + +// Online main menu screen... +screen { + ID $ACS_MAIN_MENU_SCR6 + + #define SPLIT_MODE -1 + + #define MAIN_MENU_SIZE 4 + + #define CONTINUE_Y 0 + #define CHANGE_Y 1 + #define OPTIONS_Y 2 + #define EXIT_Y 3 + + #define EXIT_DOWN $ACS_CONTINUE_OPTION + + object { + ID $ACS_OPTIONS_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + obj_index 0 0 + obj_index 2 0 + + str_len 25 + string $ACS_OPTIONS_STR + font $MAIN_FNT + $COLOR_SET0 + + def_resource $ACS_OPTIONS_OPTION + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $OPTIONS_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $ACS_STARTUP_KEY + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_INIT_ONLINE_MENU 0 0 0 + start_time 0 + } + } + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SAVE_SCREEN 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_OPTIONS_SCR 0 0 0 + start_time 0 + } + } + } + + object { + ID $ACS_LOAD_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + obj_index 0 0 + obj_index 2 0 + + str_len 25 + string $ACS_CHANGE_PLAYER_STR + font $MAIN_FNT + $COLOR_SET0 + + def_resource $ACS_OPTIONS_OPTION + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $CHANGE_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_CHANGE_PLAYER 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXIT + ev_data $ACS_CONTINUE_GAME 0 0 0 + start_time 1 + } + } + } + + object { + ID $ACS_EXIT_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_QUIT_STR + font $MAIN_FNT + $COLOR_SET0 + + obj_index 3 $EXIT_DOWN + obj_index 0 0 + obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $EXIT_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXIT + ev_data $ACS_EXIT_GAME 0 0 0 + start_time 1 + } + } + } + + object { + ID $ACS_CONTINUE_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + obj_index 1 $ACS_EXIT_OPTION + obj_index 0 0 + obj_index 2 0 + + flag 0x04 + + str_len 25 + string $ACS_CONTINUE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX ) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $CONTINUE_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 2 + + ev_comm { + code $ACS_EXIT + ev_data $ACS_CONTINUE_GAME 0 0 0 + start_time 1 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + } + } +} + +// Options screen... +screen { + ID $ACS_OPTIONS_SCR + + #include "ISCREEN\Scripts\options.inc" +} + +// Credits... +screen { + ID $ACS_CREDITS_SCR + + object { + ID $ACS_CREDITS_TEXT + type $ACS_INPUT_FIELD_OBJ + + alpha0 80 + + flag 0x04 + flag 0x100 + flag 0x400 + flag 0x200 + + str_len 2048 + string $ACS_CREDITS_TXT + font $MAIN_FNT + $COLOR_SET1 + + palette $ACS_MAIN_MENU_PAL0 + + x $CREDITS_PX + y $CREDITS_PY + + size_x $CREDITS_SX + size_y $CREDITS_SY + } + + object { + ID $ACS_CONTINUE_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + $BACK_COORDS +// x 10 +// y 10 + + str_len 25 + string $ACS_OK_STR + font $MAIN_FNT + + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + size_x 50 + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 2 + + ev_comm { + code $ACS_EXIT + ev_data $ACS_CONTINUE_GAME 0 0 0 + start_time 1 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_IWORLD_EVENT + ev_data $IW_MOVE_TO_PLACE 102 0 0 + start_time 0 + } + } + } +} + + +#define OPT_SY0 30 +#define OPT_FNT 1 +#define OPT_DY 10 + +#define OPT_SX0 290 +#define OPT_SX1 150 +#define OPT_X0 100 +#define OPT_DX 50 + +#define OPT_RES_BODY x $OPT_X \ +y "-30 + (480 - ($OPT_SY0 + $OPT_DY) * $OPT_MENU_SZ)/2 + $OPT_Y * ($OPT_SY0 + $OPT_DY)" \ +size_x $OPT_SX \ +size_y $OPT_SY0 + +#define OPT_RES_BODY2 x $OPT_X \ +y "-30 + (480 - ($OPT_SY0 + $OPT_DY) * $OPT_MENU_SZ)/2 + $OPT_Y * ($OPT_SY0 + $OPT_DY)" \ +size_x $OPT_SX \ +size_y "$OPT_SY0" + +#define OPT_OBJ_BODY ID $OPT_ID \ +type $ACS_INPUT_FIELD_OBJ \ +$ALPHA_SET1 \ + \ +flag 0x04 \ +flag $ACS_MOUSE_SELECT \ + \ +str_len 25 \ +string $OPT_STR \ +font $OPT_FNT \ +$OPT_COLOR_SET \ + \ +palette $ACS_MAIN_MENU_PAL0 + +#define OPT_EV $ALPHA_SET0 \ +event { \ + code $VK_MOUSE_LEFT \ + code $VK_RIGHT \ + \ + time 1 \ + \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_INC_STATE \ + ev_data $OPT_ID 0 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_GET_OPTION $OPT_CODE 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_UPDATE_OPTION $OPT_CODE 0 0 \ + start_time 0 \ + } \ +} \ +event { \ + code $VK_MOUSE_RIGHT \ + code $VK_LEFT \ + \ + time 1 \ + \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_DEC_STATE \ + ev_data $OPT_ID 0 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_GET_OPTION $OPT_CODE 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_UPDATE_OPTION $OPT_CODE 0 0 \ + start_time 0 \ + } \ +} + + +#define PRM_EV event { \ + code $VK_MOUSE_LEFT \ + code $VK_RIGHT \ + \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_INC_MM_OPTION $ACS_GRAPHICS_SCR $PRM_ID 0 \ + start_time 0 \ + } \ + } \ + event { \ + code $VK_MOUSE_RIGHT \ + code $VK_LEFT \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_DEC_MM_OPTION $ACS_GRAPHICS_SCR $PRM_ID 0 \ + start_time 0 \ + } \ + } + +// Options Screens... +#define OPT_X0 50 +screen { + ID $ACS_GRAPHICS_SCR + + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + obj_index 3 $ACS_GR_SCREEN_RES1 + + str_len 25 + string $ACS_DONE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + #define OPT_CODE $ACS_OPT_FULLSCREEN + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_GET_OPTION $OPT_CODE 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_UPDATE_OPTION $OPT_CODE 0 0 + start_time 0 + } + #define OPT_CODE $ACS_OPT_COLOR_DEPTH + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_GET_OPTION $OPT_CODE 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_UPDATE_OPTION $OPT_CODE 0 0 + start_time 0 + } + #define OPT_CODE $ACS_OPT_RESOLUTION + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_GET_OPTION $OPT_CODE 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_UPDATE_OPTION $OPT_CODE 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_OPTIONS_SCR 0 0 0 + start_time 0 + } + } + event { + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + #define OPT_CODE $ACS_OPT_FULLSCREEN + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_OPTION $OPT_CODE 0 0 + start_time 0 + } + #define OPT_CODE $ACS_OPT_COLOR_DEPTH + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_OPTION $OPT_CODE 0 0 + start_time 0 + } + #define OPT_CODE $ACS_OPT_RESOLUTION + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_OPTION $OPT_CODE 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_OPTIONS_SCR 0 0 0 + start_time 0 + } + } + } + + #define OPT_MENU_SZ 10 + + #define INTRO_Y 8 + + #define PRM_X0 120 + #define PRM_X "$OPT_X0 + $OPT_DX + $OPT_SX0" + + object { + ID $ACS_INTRO_TXT + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET00 + + flag 0x04 + + str_len 25 + string $ACS_IntroStr + font $PRM_FNT + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X0 + y "-30 + (480 - ($OPT_SY0 + $OPT_DY) * $OPT_MENU_SZ)/2 + $INTRO_Y * ($OPT_SY0 + $OPT_DY)" + + size_x $PRM_MENU_SX0 + size_y $PRM_MENU_SY + } + object { + ID $ACS_INTRO_PRM + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + str_len 5 + + max_state 1 + state_str $ACS_OFF_STR + state_str $ACS_ON_STR + + font $PRM_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X + y "-30 + (480 - ($OPT_SY0 + $OPT_DY) * $OPT_MENU_SZ)/2 + $INTRO_Y * ($OPT_SY0 + $OPT_DY)" + + size_x $OPT_SX1 + size_y $PRM_MENU_SY + + flag $ACS_MOUSE_SELECT + + #define PRM_ID $ACS_INTRO_PRM + $PRM_EV + } + + #define OPT_ID $ACS_GR_SCREEN_RES + #define OPT_SX $OPT_SX0 + #define OPT_X $OPT_X0 + #define OPT_Y 0 + #define OPT_STR $ACS_GR_SCREEN_RES_STR + #define OPT_COLOR_SET $COLOR_SET2 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + } + + #define OPT_ID $ACS_GR_SCREEN_RES1 + #define OPT_SX $OPT_SX1 + #define OPT_X "$OPT_X0 + $OPT_DX + $OPT_SX0" + #define OPT_Y 0 + #define OPT_STR $ACS_1280_STR + #define OPT_COLOR_SET $COLOR_SET0 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + + max_state 5 + + obj_index 1 $ACS_BACK_OPTION + + state_str $ACS_640_STR + state_str $ACS_800_STR + state_str $ACS_1024_STR + state_str $ACS_1152_STR + state_str $ACS_1280_STR + state_str $ACS_1600_STR + + #define OPT_CODE $ACS_OPT_RESOLUTION + $ALPHA_SET0 + event { + code $VK_MOUSE_LEFT + code $VK_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_INC_STATE + ev_data $OPT_ID 0 0 0 + start_time 0 + } + } + event { + code $VK_MOUSE_RIGHT + code $VK_LEFT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_DEC_STATE + ev_data $OPT_ID 0 0 0 + start_time 0 + } + } + } + + #define OPT_ID $ACS_GR_COLOR_DEPTH + #define OPT_SX $OPT_SX0 + #define OPT_X $OPT_X0 + #define OPT_Y 1 + #define OPT_STR $ACS_GR_COLOR_DEPTH_STR + #define OPT_COLOR_SET $COLOR_SET2 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + } + + #define OPT_ID $ACS_GR_COLOR_DEPTH1 + #define OPT_SX $OPT_SX1 + #define OPT_X "$OPT_X0 + $OPT_DX + $OPT_SX0" + #define OPT_Y 1 + #define OPT_STR $ACS_GR_COLOR_DEPTH_STR16 + #define OPT_COLOR_SET $COLOR_SET0 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + + max_state 1 + +// obj_index 1 $ACS_BACK_OPTION + + state_str $ACS_GR_COLOR_DEPTH_STR16 + state_str $ACS_GR_COLOR_DEPTH_STR32 + + #define OPT_CODE $ACS_OPT_COLOR_DEPTH + $ALPHA_SET0 + event { + code $VK_MOUSE_LEFT + code $VK_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_INC_STATE + ev_data $OPT_ID 0 0 0 + start_time 0 + } + } + event { + code $VK_MOUSE_RIGHT + code $VK_LEFT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_DEC_STATE + ev_data $OPT_ID 0 0 0 + start_time 0 + } + } + } + + #define OPT_ID $ACS_GR_FULLSCR + #define OPT_SX $OPT_SX0 + #define OPT_X $OPT_X0 + #define OPT_Y 2 + #define OPT_STR $ACS_GR_FULLSCR_STR + #define OPT_COLOR_SET $COLOR_SET2 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + } + + #define OPT_ID $ACS_GR_FULLSCR1 + #define OPT_SX $OPT_SX1 + #define OPT_X "$OPT_X0 + $OPT_DX + $OPT_SX0" + #define OPT_Y 2 + #define OPT_STR $ACS_GR_FULLSCR_MODE_STR + #define OPT_COLOR_SET $COLOR_SET0 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + + max_state 1 + +// obj_index 1 $ACS_BACK_OPTION + + state_str $ACS_GR_WINDOW_MODE_STR + state_str $ACS_GR_FULLSCR_MODE_STR + + #define OPT_CODE $ACS_OPT_FULLSCR + $ALPHA_SET0 + event { + code $VK_MOUSE_LEFT + code $VK_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_INC_STATE + ev_data $OPT_ID 0 0 0 + start_time 0 + } + } + event { + code $VK_MOUSE_RIGHT + code $VK_LEFT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_DEC_STATE + ev_data $OPT_ID 0 0 0 + start_time 0 + } + } + } + + #define OPT_ID $ACS_GR_SHADOWS + #define OPT_SX $OPT_SX0 + #define OPT_X $OPT_X0 + #define OPT_Y 4 + #define OPT_STR $ACS_GR_SHADOWS_STR + #define OPT_COLOR_SET $COLOR_SET2 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + } + + #define OPT_ID $ACS_GR_SHADOWS1 + #define OPT_SX $OPT_SX1 + #define OPT_X "$OPT_X0 + $OPT_DX + $OPT_SX0" + #define OPT_Y 4 + #define OPT_STR $ACS_OFF_STR + #define OPT_COLOR_SET $COLOR_SET0 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + max_state 1 + state_str $ACS_OFF_STR + state_str $ACS_ON_STR + + #define OPT_CODE $ACS_OPT_SHADOWS + $OPT_EV + } + + #define OPT_ID $ACS_GR_SKY + #define OPT_SX $OPT_SX0 + #define OPT_X $OPT_X0 + #define OPT_Y 5 + #define OPT_STR $ACS_GR_SKY_STR + #define OPT_COLOR_SET $COLOR_SET2 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + } + + #define OPT_ID $ACS_GR_SKY1 + #define OPT_SX $OPT_SX1 + #define OPT_X "$OPT_X0 + $OPT_DX + $OPT_SX0" + #define OPT_Y 5 + #define OPT_STR $ACS_HIGH_STR + #define OPT_COLOR_SET $COLOR_SET0 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + max_state 1 + state_str $ACS_LOW_STR + state_str $ACS_HIGH_STR + + #define OPT_CODE $ACS_OPT_SKY + $OPT_EV + } + + #define OPT_ID $ACS_GR_FURROWS + #define OPT_SX $OPT_SX0 + #define OPT_X $OPT_X0 + #define OPT_Y 6 + #define OPT_STR $ACS_GR_FURROWS_STR + #define OPT_COLOR_SET $COLOR_SET2 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + } + + #define OPT_ID $ACS_GR_FURROWS1 + #define OPT_SX $OPT_SX1 + #define OPT_X "$OPT_X0 + $OPT_DX + $OPT_SX0" + #define OPT_Y 6 + #define OPT_STR $ACS_OFF_STR + #define OPT_COLOR_SET $COLOR_SET0 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + max_state 1 + state_str $ACS_OFF_STR + state_str $ACS_ON_STR + + #define OPT_CODE $ACS_OPT_FURROWS + $OPT_EV + } + + #define OPT_ID $ACS_GR_CHROME + #define OPT_SX $OPT_SX0 + #define OPT_X $OPT_X0 + #define OPT_Y 7 + #define OPT_STR $ACS_GR_CHROME_STR + #define OPT_COLOR_SET $COLOR_SET2 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + } + + #define OPT_ID $ACS_GR_CHROME1 + #define OPT_SX $OPT_SX1 + #define OPT_X "$OPT_X0 + $OPT_DX + $OPT_SX0" + #define OPT_Y 7 + #define OPT_STR $ACS_OFF_STR + #define OPT_COLOR_SET $COLOR_SET0 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + max_state 1 + state_str $ACS_OFF_STR + state_str $ACS_ON_STR + + #define OPT_CODE $ACS_OPT_CHROME + $OPT_EV + } + + #define OPT_ID $ACS_GR_GAMMA + #define OPT_SX $OPT_SX0 + #define OPT_X $OPT_X0 + #define OPT_Y 3 + #define OPT_STR $ACS_GR_GAMMA_STR + #define OPT_COLOR_SET $COLOR_SET2 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + } + + #define OPT_ID $ACS_GR_GAMMA1 + #define OPT_SX $OPT_SX1 + #define OPT_X "$OPT_X0 + $OPT_DX + $OPT_SX0" + #define OPT_Y 3 + #define OPT_COLOR_SET $COLOR_SET0 + object { + type $ACS_SCROLLER_OBJ + flag 0x10 + $OPT_RES_BODY2 + $OPT_OBJ_BODY + + flag $ACS_MOUSE_SELECT + + $ALPHA_SET0 + $COLOR_SET0_S + + max_value 256 + cur_value 128 + + event { + code $VK_LEFT + + time 1 + + ev_comm { + code $ACS_DEC_SCROLLER + ev_data $OPT_ID 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_GET_OPTION $ACS_OPT_GAMMA 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_UPDATE_OPTION $ACS_OPT_GAMMA 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + } + event { + code $VK_RIGHT + + time 1 + + ev_comm { + code $ACS_INC_SCROLLER + ev_data $OPT_ID 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_GET_OPTION $ACS_OPT_GAMMA 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_UPDATE_OPTION $ACS_OPT_GAMMA 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + } + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_CHANGE_SCROLLER + ev_data $OPT_ID 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_GET_OPTION $ACS_OPT_GAMMA 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_UPDATE_OPTION $ACS_OPT_GAMMA 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + } + } +} +#define OPT_X0 100 + +screen { + ID $ACS_SOUND_SCR + + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + obj_index 3 $ACS_SND_EFFECTS1 + + flag 0x04 + + str_len 25 + string $ACS_DONE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_OPTIONS_SCR 0 0 0 + start_time 0 + } + } + } + + #define OPT_MENU_SZ 4 + + #define OPT_ID $ACS_SND_EFFECTS + #define OPT_SX $OPT_SX0 + #define OPT_X $OPT_X0 + #define OPT_Y 0 + #define OPT_STR $ACS_SND_EFFECTS_STR + #define OPT_COLOR_SET $COLOR_SET2 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + } + + #define OPT_ID $ACS_SND_EFFECTS1 + #define OPT_SX $OPT_SX1 + #define OPT_X "$OPT_X0 + $OPT_DX + $OPT_SX0" + #define OPT_Y 0 + #define OPT_STR $ACS_OFF_STR + #define OPT_COLOR_SET $COLOR_SET0 + object { + obj_index 1 $ACS_BACK_OPTION + + $OPT_RES_BODY + $OPT_OBJ_BODY + max_state 1 + state_str $ACS_OFF_STR + state_str $ACS_ON_STR + + #define OPT_CODE $ACS_OPT_SOUND + $OPT_EV + } + + #define OPT_ID $ACS_SND_EFF_VOL + #define OPT_SX $OPT_SX0 +// #define OPT_X $OPT_X0 + #define OPT_X "$OPT_X0 - 10" + #define OPT_Y 1 + #define OPT_STR $ACS_SND_EFF_VOL_STR + #define OPT_COLOR_SET $COLOR_SET2 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + } + + #define OPT_ID $ACS_SND_EFF_VOL1 + #define OPT_SX $OPT_SX1 +// #define OPT_X "$OPT_X0 + $OPT_DX + $OPT_SX0" + #define OPT_X "$OPT_X0 + $OPT_DX + $OPT_SX0 + 30" + #define OPT_Y 1 + #define OPT_STR $ACS_SND_MUS_VOL_STR + #define OPT_COLOR_SET $COLOR_SET0 + object { + type $ACS_SCROLLER_OBJ + flag 0x10 + $OPT_RES_BODY2 + $OPT_OBJ_BODY + + $ALPHA_SET0 + $COLOR_SET0_S + + flag $ACS_MOUSE_SELECT + + max_value 256 + cur_value 128 + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_CHANGE_SCROLLER + ev_data $OPT_ID 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_GET_OPTION $ACS_OPT_SOUND_VOL 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_UPDATE_OPTION $ACS_OPT_SOUND_VOL 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + } + event { + code $VK_LEFT + + time 1 + + ev_comm { + code $ACS_DEC_SCROLLER + ev_data $OPT_ID 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_GET_OPTION $ACS_OPT_SOUND_VOL 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_UPDATE_OPTION $ACS_OPT_SOUND_VOL 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + } + event { + code $VK_RIGHT + + time 1 + + ev_comm { + code $ACS_INC_SCROLLER + ev_data $OPT_ID 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_GET_OPTION $ACS_OPT_SOUND_VOL 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_UPDATE_OPTION $ACS_OPT_SOUND_VOL 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + } + } + + #define OPT_ID $ACS_SND_MUSIC + #define OPT_SX $OPT_SX0 + #define OPT_X $OPT_X0 + #define OPT_Y 2 + #define OPT_STR $ACS_SND_MUSIC_STR + #define OPT_COLOR_SET $COLOR_SET2 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + } + + #define OPT_ID $ACS_SND_MUSIC1 + #define OPT_SX $OPT_SX1 + #define OPT_X "$OPT_X0 + $OPT_DX + $OPT_SX0" + #define OPT_Y 2 + #define OPT_STR $ACS_OFF_STR + #define OPT_COLOR_SET $COLOR_SET0 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + max_state 1 + state_str $ACS_OFF_STR + state_str $ACS_ON_STR + + #define OPT_CODE $ACS_OPT_MUSIC + $OPT_EV + } + + #define OPT_ID $ACS_SND_MUS_VOL + #define OPT_SX $OPT_SX0 +// #define OPT_X $OPT_X0 + #define OPT_X "$OPT_X0 - 10" + #define OPT_Y 3 + #define OPT_STR $ACS_SND_MUS_VOL_STR + #define OPT_COLOR_SET $COLOR_SET2 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + } + + #define OPT_ID $ACS_SND_MUS_VOL1 + #define OPT_SX $OPT_SX1 +// #define OPT_X "$OPT_X0 + $OPT_DX + $OPT_SX0" + #define OPT_X "$OPT_X0 + $OPT_DX + $OPT_SX0 + 30" + #define OPT_Y 3 + #define OPT_STR $ACS_SND_MUS_VOL_STR + #define OPT_COLOR_SET $COLOR_SET0 + object { + type $ACS_SCROLLER_OBJ + flag 0x10 + $OPT_RES_BODY2 + $OPT_OBJ_BODY + + $ALPHA_SET0 + $COLOR_SET0_S + + flag $ACS_MOUSE_SELECT + + max_value 256 + cur_value 128 + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_CHANGE_SCROLLER + ev_data $OPT_ID 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_GET_OPTION $ACS_OPT_MUSIC_VOL 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_UPDATE_OPTION $ACS_OPT_MUSIC_VOL 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + } + event { + code $VK_LEFT + + time 1 + + ev_comm { + code $ACS_DEC_SCROLLER + ev_data $OPT_ID 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_GET_OPTION $ACS_OPT_MUSIC_VOL 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_UPDATE_OPTION $ACS_OPT_MUSIC_VOL 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + } + event { + code $VK_RIGHT + + time 1 + + ev_comm { + code $ACS_INC_SCROLLER + ev_data $OPT_ID 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_GET_OPTION $ACS_OPT_MUSIC_VOL 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_UPDATE_OPTION $ACS_OPT_MUSIC_VOL 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + } + } +/* + object { + ID $ACS_SOUNDTRACK + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_SOUNDTRACK_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x 380 + y 430 + + size_x 250 + size_y $OBJ_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_CD_SCR 0 0 0 + start_time 0 + } + } + } +*/ +} + +#define PRM_EV event { \ + code $VK_MOUSE_LEFT \ + code $VK_RIGHT \ + \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_INC_MM_OPTION $ACS_RACE_CFG_SCR $PRM_ID 0 \ + start_time 0 \ + } \ + } \ + event { \ + code $VK_MOUSE_RIGHT \ + code $VK_LEFT \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_DEC_MM_OPTION $ACS_RACE_CFG_SCR $PRM_ID 0 \ + start_time 0 \ + } \ + } +/* +screen { + ID $ACS_RACE_CFG_SCR + + #define PRM_MENU_SIZE 5 + + #define LAPS_Y 0 + #define ROBOTS_Y 1 + #define ARCANES_Y 2 + #define TS_Y 3 + #define ESS_Y 4 + + #define PRM_X0 120 + #define PRM_X 430 + + object { + ID $ACS_NUM_LAPS_TXT + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET00 + + flag 0x04 + + str_len 25 + string $ACS_NumLapsStr + font $PRM_FNT + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X0 + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $LAPS_Y" + + size_x $PRM_MENU_SX0 + size_y $PRM_MENU_SY + } + object { + ID $ACS_NUM_LAPS_PRM + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + obj_index 1 $ACS_BACK_OPTION + + flag 0x04 + + str_len 3 + + string "1" + + font $PRM_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $LAPS_Y" + + size_x $PRM_MENU_SX + size_y $PRM_MENU_SY + + flag $ACS_MOUSE_SELECT + + #define PRM_ID $ACS_NUM_LAPS_PRM + $PRM_EV + } + object { + ID $ACS_NUM_ROBOTS_TXT + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET00 + + flag 0x04 + + str_len 25 + string $ACS_NumRobotsStr + font $PRM_FNT + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X0 + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $ROBOTS_Y" + + size_x $PRM_MENU_SX0 + size_y $PRM_MENU_SY + } + object { + ID $ACS_NUM_ROBOTS_PRM + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + str_len 3 + + string "1" + + font $PRM_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $ROBOTS_Y" + + size_x $PRM_MENU_SX + size_y $PRM_MENU_SY + + flag $ACS_MOUSE_SELECT + + #define PRM_ID $ACS_NUM_ROBOTS_PRM + $PRM_EV + } + object { + ID $ACS_BOT_ARCANES_TXT + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET00 + + flag 0x04 + + str_len 25 + string $ACS_BotArcanesStr + font $PRM_FNT + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X0 + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $ARCANES_Y" + + size_x $PRM_MENU_SX0 + size_y $PRM_MENU_SY + } + object { + ID $ACS_BOT_ARCANES_PRM + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + str_len 5 + + max_state 1 + state_str $ACS_NO_STR + state_str $ACS_YES_STR + + font $PRM_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $ARCANES_Y" + + size_x $PRM_MENU_SX + size_y $PRM_MENU_SY + + flag $ACS_MOUSE_SELECT + + #define PRM_ID $ACS_BOT_ARCANES_PRM + $PRM_EV + } + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_DONE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + obj_index 3 $ACS_NUM_LAPS_PRM + + $BACK_COORDS + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_OPTIONS_SCR 0 0 0 + start_time 1 + } + } + } +} +*/ +#define PRM_EV event { \ + code $VK_MOUSE_LEFT \ + code $VK_RIGHT \ + \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_INC_MM_OPTION $ACS_TB_CFG_SCR $PRM_ID 0 \ + start_time 0 \ + } \ + } \ + event { \ + code $VK_MOUSE_RIGHT \ + code $VK_LEFT \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_DEC_MM_OPTION $ACS_TB_CFG_SCR $PRM_ID 0 \ + start_time 0 \ + } \ + } + +screen { + ID $ACS_TB_CFG_SCR + + #define PRM_MENU_SIZE 1 + + #define TIPS_Y 0 + + #define PRM_X0 120 + #define PRM_X 430 + + object { + ID $ACS_TIPS_TXT + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET00 + + flag 0x04 + + str_len 25 + string $ACS_TipsStr + font $PRM_FNT + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X0 + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $TIPS_Y" + + size_x $PRM_MENU_SX0 + size_y $PRM_MENU_SY + } + object { + ID $ACS_TIPS_PRM + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + str_len 5 + + max_state 1 + state_str $ACS_OFF_STR + state_str $ACS_ON_STR + + font $PRM_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $TIPS_Y" + + size_x $PRM_MENU_SX + size_y $PRM_MENU_SY + + flag $ACS_MOUSE_SELECT + + #define PRM_ID $ACS_TIPS_PRM + $PRM_EV + + obj_index 1 $ACS_BACK_OPTION + } + + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_DONE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + obj_index 3 $ACS_TIPS_PRM + + $BACK_COORDS + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_OPTIONS_SCR 0 0 0 + start_time 1 + } + } + } +} + +#define CONTROL_OBJS object { \ + ID $CTL_TXT_ID \ + type $ACS_INPUT_FIELD_OBJ \ + $ALPHA_SET1 \ + \ + flag 0x04 \ + \ + str_len 25 \ + string $CTL_TXT_STR \ + font $CONTROLS_FNT \ + $COLOR_SET00 \ + \ + palette $ACS_MAIN_MENU_PAL0 \ + \ + x $CTL_TXT_X \ + y "$CTL_MENU_START_Y + (480 - ($CTL_SY + $CTL_DELTA) * $CTL_MENU_SZ)/2 + ($CTL_SY + $CTL_DELTA ) * $CTL_Y" \ + \ + size_x $CTL_TXT_SX \ + size_y $CTL_SY \ + } \ + \ + object { \ + ID $CTL_ID \ + type $ACS_INPUT_FIELD_OBJ \ + $ALPHA_SET0 \ + \ + obj_index 1 $CTL_UP \ + \ + flag 0x04 \ + \ + str_len 25 \ + string $ACS_NoneStr \ + font $CONTROLS_FNT \ + $COLOR_SET0 \ + \ + palette $ACS_MAIN_MENU_PAL0 \ + \ + x $CTL_X \ + y "$CTL_MENU_START_Y + (480 - ($CTL_SY + $CTL_DELTA) * $CTL_MENU_SZ)/2 + ($CTL_SY + $CTL_DELTA ) * $CTL_Y" \ + \ + size_x $CTL_SX \ + size_y $CTL_SY \ + event { \ + code $VK_MOUSE_LEFT \ + code $VK_MOUSE_RIGHT \ + \ + time 2 \ + \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_INPUT_KEYNAME \ + ev_data $CTL_ID 0 0 0 \ + start_time 1 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_UPDATE_MM_OPTION $SCR_ID $CTL_ID 0 \ + start_time 2 \ + } \ + } \ + } + + +screen { + ID $ACS_CONTROLS_SCR + #define SCR_ID $ACS_CONTROLS_SCR + + #define CTL_MENU_SZ 15 + #define CTL_MENU_START_Y -50 + + #define CTL_DELTA 3 + #define CTL_MENU_START_Y 0 + + #define CTL_SX 100 + #define CTL_SY 20 + #define CTL_TXT_SX 200 + + #define CTL_TXT_X 100 + #define CTL_X 450 + + #define OPTIONS_MENU_SIZE 7 +/* + object { + ID 1 + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_RESET_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2" + y "$OPTIONS_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $OPTIONS_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * 6" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 3 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_RESET_CONTROLS 0 0 0 + start_time 0 + } + } + } +*/ + object { + ID $ACS_CONTROLS_SINGLE_SCR + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + obj_index 1 $ACS_BACK_OPTION + + str_len 25 + string $MCH_CONTROLS_SINGLE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2" + y "$OPTIONS_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $OPTIONS_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * 1" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 3 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SELECT_CONTROLLER 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_PREV_SCR_ID $ACS_CONTROLS_SINGLE_SCR $ACS_CONTROLS_SCR 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_CONTROLS_SINGLE_SCR 0 0 0 + start_time 0 + } + } + } + + object { + ID $ACS_CONTROLS_SPLIT_SCR + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $MCH_CONTROLS_SPLIT_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2" + y "$OPTIONS_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $OPTIONS_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * 2" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 3 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_CONTROLS_SPLIT_SCR 0 0 0 + start_time 0 + } + } + } + + object { + ID $ACS_CONTROLS_HOTSEAT_SCR + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + obj_index 3 $ACS_JOY_PRM2 + + str_len 25 + string $MCH_CONTROLS_HOTSEAT_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2" + y "$OPTIONS_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $OPTIONS_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * 3" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 3 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_CONTROLS_HOTSEAT_SCR 0 0 0 + start_time 0 + } + } + } + + #define CTL_Y 10 + #define CTL_UP $ACS_CONTROLS_HOTSEAT_SCR + + object { // Joystick on/off + ID $ACS_JOY_TXT2 + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET1 + + flag 0x04 + + str_len 25 + string $ACS_JOYSTICK_STR + font 1 + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x $CTL_TXT_X + y "$CTL_MENU_START_Y + (480 - ($CTL_SY + $CTL_DELTA) * $CTL_MENU_SZ)/2 + ($CTL_SY + $CTL_DELTA ) * $CTL_Y" + + size_x $CTL_TXT_SX + size_y $CTL_SY + } + + object { + ID $ACS_JOY_PRM2 + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + obj_index 1 $CTL_UP + + flag 0x04 + + max_state 1 + state_str $ACS_OFF_STR + state_str $ACS_ON_STR + + str_len 25 + string $ACS_OFF_STR + font 1 + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x $CTL_X + y "$CTL_MENU_START_Y + (480 - ($CTL_SY + $CTL_DELTA) * $CTL_MENU_SZ)/2 + ($CTL_SY + $CTL_DELTA ) * $CTL_Y" + + size_x $CTL_SX + size_y $CTL_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_INC_MM_OPTION $SCR_ID $ACS_JOY_PRM2 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_UPDATE_MM_OPTION $SCR_ID $ACS_JOY_PRM2 0 + start_time 1 + } + } + } + + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + obj_index 1 $ACS_JOY_PRM2 + obj_index 3 $ACS_CONTROLS_SINGLE_SCR + + flag 0x04 + + str_len 25 + string $ACS_DONE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_OPTIONS_SCR 0 0 0 + start_time 0 + } + } + } +} + +screen { + ID $ACS_CONTROLS_SPLIT_SCR + + #define OPTIONS_MENU_SIZE 2 + + object { + ID 1 + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + obj_index 1 $ACS_BACK_OPTION + + str_len 25 + string $ACS_PLAYER1_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2" + y "$OPTIONS_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $OPTIONS_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * 0" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 3 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SELECT_CONTROLLER 1 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_PREV_SCR_ID $ACS_CONTROLS_SINGLE_SCR $ACS_CONTROLS_SPLIT_SCR 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_CONTROLS_SINGLE_SCR 0 0 0 + start_time 0 + } + } + } + + object { + ID 2 + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_PLAYER2_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2" + y "$OPTIONS_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $OPTIONS_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * 1" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 3 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SELECT_CONTROLLER 2 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_PREV_SCR_ID $ACS_CONTROLS_SINGLE_SCR $ACS_CONTROLS_SPLIT_SCR 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_CONTROLS_SINGLE_SCR 0 0 0 + start_time 0 + } + } + } + + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + obj_index 3 1 + + flag 0x04 + + str_len 25 + string $ACS_DONE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_CONTROLS_SCR 0 0 0 + start_time 0 + } + } + } +} + +screen { + ID $ACS_CONTROLS_SINGLE_SCR + #define SCR_ID $ACS_CONTROLS_SINGLE_SCR + + #define CTL_MENU_SZ 15 + + #define CTL_MENU_START_Y -50 + + #define CTL_UP $ACS_BACK_OPTION + #define CTL_Y 0 + #define CTL_ID $MCH_KEY_MOVE_FORWARD + #define CTL_TXT_ID $MCH_KEY_MOVE_FORWARD_TXT + #define CTL_TXT_STR $MCH_KEY_MOVE_FORWARD_STR + $CONTROL_OBJS + + #define CTL_UP -1 + + #define CTL_Y 1 + #define CTL_ID $MCH_KEY_MOVE_BACKWARD + #define CTL_TXT_ID $MCH_KEY_MOVE_BACKWARD_TXT + #define CTL_TXT_STR $MCH_KEY_MOVE_BACKWARD_STR + $CONTROL_OBJS + + #define CTL_Y 2 + #define CTL_ID $MCH_KEY_TURN_LEFT + #define CTL_TXT_ID $MCH_KEY_TURN_LEFT_TXT + #define CTL_TXT_STR $MCH_KEY_TURN_LEFT_STR + $CONTROL_OBJS + + #define CTL_Y 3 + #define CTL_ID $MCH_KEY_TURN_RIGHT + #define CTL_TXT_ID $MCH_KEY_TURN_RIGHT_TXT + #define CTL_TXT_STR $MCH_KEY_TURN_RIGHT_STR + $CONTROL_OBJS + + #define CTL_Y 4 + #define CTL_ID $MCH_KEY_ZOOM_IN + #define CTL_TXT_ID $MCH_KEY_ZOOM_IN_TXT + #define CTL_TXT_STR $MCH_KEY_ZOOM_IN_STR + $CONTROL_OBJS + + #define CTL_Y 5 + #define CTL_ID $MCH_KEY_ZOOM_OUT + #define CTL_TXT_ID $MCH_KEY_ZOOM_OUT_TXT + #define CTL_TXT_STR $MCH_KEY_ZOOM_OUT_STR + $CONTROL_OBJS + + #define CTL_Y 6 + #define CTL_ID $MCH_KEY_CENTER_VIEW + #define CTL_TXT_ID $MCH_KEY_CENTER_VIEW_TXT + #define CTL_TXT_STR $MCH_KEY_CENTER_VIEW_STR + $CONTROL_OBJS + + #define CTL_Y 7 + #define CTL_ID $MCH_KEY_SET_ARCANE0 + #define CTL_TXT_ID $MCH_KEY_SET_ARCANE0_TXT + #define CTL_TXT_STR $MCH_KEY_SET_ARCANE0_STR + $CONTROL_OBJS + + #define CTL_Y 8 + #define CTL_ID $MCH_KEY_SET_ARCANE1 + #define CTL_TXT_ID $MCH_KEY_SET_ARCANE1_TXT + #define CTL_TXT_STR $MCH_KEY_SET_ARCANE1_STR + $CONTROL_OBJS + + #define CTL_Y 9 + #define CTL_ID $MCH_KEY_SET_ARCANE2 + #define CTL_TXT_ID $MCH_KEY_SET_ARCANE2_TXT + #define CTL_TXT_STR $MCH_KEY_SET_ARCANE2_STR + $CONTROL_OBJS + + #define CTL_Y 10 + #define CTL_ID $MCH_KEY_OK + #define CTL_TXT_ID $MCH_KEY_OK_TXT + #define CTL_TXT_STR $MCH_KEY_OK_STR + $CONTROL_OBJS + + #define CTL_Y 11 + #define CTL_ID $MCH_KEY_CANCEL + #define CTL_TXT_ID $MCH_KEY_CANCEL_TXT + #define CTL_TXT_STR $MCH_KEY_CANCEL_STR + $CONTROL_OBJS + + #define CTL_Y 12 + #define CTL_ID $MCH_KEY_SLOPE_CAM + #define CTL_TXT_ID $MCH_KEY_SLOPE_CAM_TXT + #define CTL_TXT_STR $MCH_KEY_SLOPE_CAM_STR + $CONTROL_OBJS + + #define CTL_Y 13 + #define CTL_ID $MCH_KEY_HORN + #define CTL_TXT_ID $MCH_KEY_HORN_TXT + #define CTL_TXT_STR $MCH_KEY_HORN_STR + $CONTROL_OBJS + + #define CTL_Y 14 + #define CTL_ID $MCH_KEY_MAP + #define CTL_TXT_ID $MCH_KEY_MAP_TXT + #define CTL_TXT_STR $MCH_KEY_MAP_STR + $CONTROL_OBJS + + + #define CTL_Y 16 + + object { // Joystick on/off + ID $ACS_JOY_TXT + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET1 + + flag 0x04 + + str_len 25 + string $ACS_JOYSTICK_STR + font 1 + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x $CTL_TXT_X + y "$CTL_MENU_START_Y + (480 - ($CTL_SY + $CTL_DELTA) * $CTL_MENU_SZ)/2 + ($CTL_SY + $CTL_DELTA ) * $CTL_Y" + + size_x $CTL_TXT_SX + size_y $CTL_SY + } + + object { + ID $ACS_JOY_PRM + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + obj_index 1 $CTL_UP + + flag 0x04 + + max_state 1 + state_str $ACS_OFF_STR + state_str $ACS_ON_STR + + str_len 25 + string $ACS_OFF_STR + font 1 + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x $CTL_X + y "$CTL_MENU_START_Y + (480 - ($CTL_SY + $CTL_DELTA) * $CTL_MENU_SZ)/2 + ($CTL_SY + $CTL_DELTA ) * $CTL_Y" + + size_x $CTL_SX + size_y $CTL_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_INC_MM_OPTION $SCR_ID $ACS_JOY_PRM 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_UPDATE_MM_OPTION $SCR_ID $ACS_JOY_PRM 0 + start_time 1 + } + } + } + + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + obj_index 3 $MCH_KEY_MOVE_FORWARD + obj_index 0 1 + obj_index 2 1 + + flag 0x04 + + str_len 25 + string $ACS_DONE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS + y 420 + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SELECT_CONTROLLER 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_PREV + ev_data 0 0 0 0 + start_time 0 + } + } + } + object { + ID 1 + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_RESET_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS + x 320 + y 420 + + obj_index 0 $ACS_BACK_OPTION + obj_index 2 $ACS_BACK_OPTION + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 3 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_RESET_CONTROLS $ACS_CONTROLS_SINGLE_SCR 0 0 + start_time 0 + } + } + } +} + +screen { + ID $ACS_CONTROLS_HOTSEAT_SCR + #define SCR_ID $ACS_CONTROLS_HOTSEAT_SCR + + #define CTL_TXT_X 110 + + #define CTL_MENU_SZ 7 + + #define CTL_UP $ACS_BACK_OPTION + #define CTL_Y 0 + #define CTL_ID $MCH_KEY_START_TIME + #define CTL_TXT_ID $MCH_KEY_START_TIME_TXT + #define CTL_TXT_STR $MCH_KEY_START_TIME_STR + $CONTROL_OBJS + + #define CTL_UP -1 + + #define CTL_Y 1 + #define CTL_ID $MCH_KEY_REMOVE_SEED + #define CTL_TXT_ID $MCH_KEY_REMOVE_SEED_TXT + #define CTL_TXT_STR $MCH_KEY_REMOVE_SEED_STR + $CONTROL_OBJS + + #define CTL_Y 2 + #define CTL_ID $MCH_KEY_ROTATE_CAM + #define CTL_TXT_ID $MCH_KEY_ROTATE_CAM_TXT + #define CTL_TXT_STR $MCH_KEY_ROTATE_CAM_STR + $CONTROL_OBJS + + #define CTL_Y 3 + #define CTL_ID $MCH_KEY_REPLAY + #define CTL_TXT_ID $MCH_KEY_REPLAY_TXT + #define CTL_TXT_STR $MCH_KEY_REPLAY_STR + $CONTROL_OBJS + + #define CTL_Y 4 + #define CTL_ID $MCH_KEY_REPLAY_ALL + #define CTL_TXT_ID $MCH_KEY_REPLAY_ALL_TXT + #define CTL_TXT_STR $MCH_KEY_REPLAY_ALL_STR + $CONTROL_OBJS + + #define CTL_Y 5 + #define CTL_ID $MCH_KEY_SLOW_TIME + #define CTL_TXT_ID $MCH_KEY_SLOW_TIME_TXT + #define CTL_TXT_STR $MCH_KEY_SLOW_TIME_STR + $CONTROL_OBJS + + #define CTL_Y 6 + #define CTL_ID $MCH_KEY_FAST_TIME + #define CTL_TXT_ID $MCH_KEY_FAST_TIME_TXT + #define CTL_TXT_STR $MCH_KEY_FAST_TIME_STR + $CONTROL_OBJS + +/* + #define CTL_Y 2 + #define CTL_ID $MCH_KEY_NEXT_SEED + #define CTL_TXT_ID $MCH_KEY_NEXT_SEED_TXT + #define CTL_TXT_STR $MCH_KEY_NEXT_SEED_STR + $CONTROL_OBJS +*/ + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + obj_index 3 $MCH_KEY_START_TIME + obj_index 1 $MCH_KEY_FAST_TIME + obj_index 0 1 + obj_index 2 1 + + flag 0x04 + + str_len 25 + string $ACS_DONE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_CONTROLS_SCR 0 0 0 + start_time 0 + } + } + } + object { + ID 1 + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_RESET_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS +// x 340 + x 320 + + obj_index 0 $ACS_BACK_OPTION + obj_index 2 $ACS_BACK_OPTION + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 3 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_RESET_CONTROLS $ACS_CONTROLS_HOTSEAT_SCR 0 0 + start_time 0 + } + } + } + + #define CTL_TXT_X 100 +} + +#define ESSENCE_OBJ object { \ + ID "$ACS_ESSENCE_OBJ + $ESS_ID" \ + \ + $ALPHA_SET0 \ + \ + x 20 \ + y 20 \ + \ + size_x 80 \ + size_y 80 \ + \ + flag 0x2000 \ + \ + event { \ + code $VK_MOUSE_LEFT \ + code $VK_MOUSE_RIGHT \ + \ + time 2 \ + \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_ESSENCE_EVENT $ESS_ID 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_CHANGE_SCREEN \ + ev_data $ACS_MAIN_MENU_SCR2 0 0 0 \ + start_time 1 \ + } \ + } \ + } + +screen { + ID $ACS_ESSENCE_SCR + + event { + code $ACS_STARTUP_KEY + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_INIT_ESSENCES 0 0 0 + } + } + event { + code $VK_ESCAPE + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_MAIN_MENU_SCR2 0 0 0 + start_time 2 + } + } + + #define ESS_ID 0 + $ESSENCE_OBJ + + #define ESS_ID 1 + $ESSENCE_OBJ + + #define ESS_ID 2 + $ESSENCE_OBJ + + #define ESS_ID 3 + $ESSENCE_OBJ + + #define ESS_ID 4 + $ESSENCE_OBJ + + #define ESS_ID 5 + $ESSENCE_OBJ + + #define ESS_ID 6 + $ESSENCE_OBJ +} + +#include "ISCREEN\Scripts\I-World.inc" + +#define SAVE_OBJS object { \ + ID $SAVE_ID \ + type $ACS_INPUT_FIELD_OBJ \ + obj_index 1 "$UP_OBJ" \ + obj_index 3 "$DN_OBJ" \ + obj_index 0 "$SAVE_ID + 10" \ + obj_index 2 "$SAVE_ID + 10" \ + $ALPHA_SET0 \ + $COLOR_SET0 \ + \ + flag 0x04 \ + \ + str_len 10 \ + string "Mechosh" \ + font 1 \ + \ + palette $ACS_MAIN_MENU_PAL0 \ + \ + x 170 \ + y "70 + ($SAVE_ID - 1) * 40" \ + size_x 150 \ + size_y 40 \ + event { \ + code $VK_MOUSE_LEFT \ + code $VK_MOUSE_RIGHT \ + \ + time 1 \ + \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_SELECT_SAVE "$SAVE_ID - 1" 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_CHANGE_SCREEN \ + ev_data $ACS_MAIN_MENU_SCR2 0 0 0 \ + start_time 0 \ + } \ + } \ +} \ +object { \ + ID "$SAVE_ID + 10" \ + type $ACS_INPUT_FIELD_OBJ \ + obj_index 1 "$UP_OBJ2" \ + obj_index 3 "$DN_OBJ2" \ + obj_index 0 "$SAVE_ID" \ + obj_index 2 "$SAVE_ID" \ + $ALPHA_SET0 \ + $COLOR_SET0 \ + \ + flag 0x04 \ + \ + str_len 10 \ + string $ACS_DELETE_STR \ + font 2 \ + \ + palette $ACS_MAIN_MENU_PAL0 \ + \ + x 370 \ + y "70 + ($SAVE_ID - 1) * 40" \ + size_x 150 \ + size_y 40 \ + event { \ + code $VK_MOUSE_LEFT \ + code $VK_MOUSE_RIGHT \ + \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_DELETE_SAVE "$SAVE_ID - 1" 0 0 \ + start_time 0 \ + } \ + } \ +} + +screen { + ID $ACS_LOAD_GAME_SCR + + #define UP_OBJ 100 + #define UP_OBJ2 100 + #define DN_OBJ 2 + #define DN_OBJ2 12 + #define SAVE_ID 1 + $SAVE_OBJS + + #define UP_OBJ 1 + #define UP_OBJ2 11 + #define DN_OBJ 3 + #define DN_OBJ2 13 + #define SAVE_ID 2 + $SAVE_OBJS + + #define UP_OBJ 2 + #define UP_OBJ2 12 + #define DN_OBJ 4 + #define DN_OBJ2 14 + #define SAVE_ID 3 + $SAVE_OBJS + + #define UP_OBJ 3 + #define UP_OBJ2 13 + #define DN_OBJ 5 + #define DN_OBJ2 15 + #define SAVE_ID 4 + $SAVE_OBJS + + #define UP_OBJ 4 + #define UP_OBJ2 14 + #define DN_OBJ 6 + #define DN_OBJ2 16 + #define SAVE_ID 5 + $SAVE_OBJS + + #define UP_OBJ 5 + #define UP_OBJ2 15 + #define DN_OBJ 101 + #define DN_OBJ2 101 + #define SAVE_ID 6 + $SAVE_OBJS + + object { + ID 100 + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + obj_index 1 101 + obj_index 3 0 + obj_index 0 -1 + obj_index 2 -1 + + flag 0x04 + + str_len 25 + string $ACS_MORE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - 70) / 2" + y 20 + size_x 70 + size_y 40 + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SCROLL_SAVES 0 0 0 + start_time 0 + } + } + } + + object { + ID 101 + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + obj_index 1 5 + obj_index 3 100 + obj_index 0 -1 + obj_index 2 -1 + + flag 0x04 + + str_len 25 + string $ACS_MORE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - 70) / 2" + y 320 + size_x 70 + size_y 40 + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SCROLL_SAVES 1 0 0 + start_time 0 + } + } + } + + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + obj_index 0 -1 + obj_index 2 -1 + + str_len 25 + string $ACS_CANCEL_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_PREV + ev_data 0 0 0 0 + start_time 1 + } + } + } +} + +#define PRM_EV event { \ + code $VK_MOUSE_LEFT \ + code $VK_RIGHT \ + \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_INC_MM_OPTION $ACS_SPLIT_CFG_SCR $PRM_ID 0 \ + start_time 0 \ + } \ + } \ + event { \ + code $VK_MOUSE_RIGHT \ + code $VK_LEFT \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_DEC_MM_OPTION $ACS_SPLIT_CFG_SCR $PRM_ID 0 \ + start_time 0 \ + } \ + } + +#define PRM_FNT 2 + +screen { + ID $ACS_SPLIT_CFG_SCR + + #define PRM_MENU_SIZE 2 + + #define MODE_Y 0 + #define BOTS_Y 1 + + #define PRM_X0 50 + #define PRM_X 420 + + object { + ID $ACS_SPLIT_MODE_TXT + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET00 + + flag 0x04 + + str_len 25 + string $ACS_SPLIT_MODE_STR + font $PRM_FNT + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X0 + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $MODE_Y" + + size_x $PRM_MENU_SX0 + size_y $PRM_MENU_SY + } + object { + ID $ACS_SPLIT_MODE_PRM + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + obj_index 1 $ACS_BACK_OPTION + + flag 0x04 + + str_len 20 + + string "1" + + font $PRM_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $MODE_Y" + + size_x $PRM_MENU_SX + size_y $PRM_MENU_SY + + flag $ACS_MOUSE_SELECT + + max_state 1 + state_str $ACS_VERTICAL_STR + state_str $ACS_HORIZONTAL_STR + + #define PRM_ID $ACS_SPLIT_MODE_PRM + $PRM_EV + } + + object { + ID $ACS_SPLIT_BOTS_TXT + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET00 + + flag 0x04 + + str_len 25 + string $ACS_SPLIT_BOTS_STR + font $PRM_FNT + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X0 + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $BOTS_Y" + + size_x $PRM_MENU_SX0 + size_y $PRM_MENU_SY + } + object { + ID $ACS_SPLIT_BOTS_PRM + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + obj_index 3 $ACS_BACK_OPTION + + flag 0x04 + + str_len 20 + + string "1" + + font $PRM_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $BOTS_Y" + + size_x $PRM_MENU_SX + size_y $PRM_MENU_SY + + flag $ACS_MOUSE_SELECT + + max_state 1 + state_str $ACS_OFF_STR + state_str $ACS_ON_STR + + #define PRM_ID $ACS_SPLIT_BOTS_PRM + $PRM_EV + } + + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_DONE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + obj_index 1 $ACS_SPLIT_BOTS_PRM + obj_index 3 $ACS_SPLIT_MODE_PRM + + $BACK_COORDS + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_OPTIONS_SCR 0 0 0 + start_time 1 + } + } + } +} + +#define PRM_FNT 1 + +screen { + ID $ACS_MULTIPLAYER_SCR + + #define MAIN_MENU_SIZE 5 + + #define SPLIT_Y 2 + #define HS_Y 0 + #define HS2_Y 1 + #define OL_Y 4 + + object { + ID 3 + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_HOT_SEAT2_STR + font $MAIN_FNT + $COLOR_SET0 + +// obj_index 0 0 +// obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $HS2_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY +/* + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_NA_SCR 0 0 0 + start_time 0 + } + } +*/ + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_GAME_MODE $MCH_ENTIRE_CONTROL_HS 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_SPLIT_HS_SCR 0 0 0 + start_time 0 + } + } + } + +/* + object { + ID 4 + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_PBEM_STR + font $MAIN_FNT + $COLOR_SET0 + + obj_index 0 0 + obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $PBEM_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_NA_SCR 0 0 0 + start_time 0 + } + } + } +*/ + object { + ID 1 + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_SPLIT_SCREEN_STR + font $MAIN_FNT + $COLOR_SET0 + +// obj_index 0 0 +// obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $SPLIT_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_GAME_MODE $MCH_SINGLE_GAME 1 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SELECT_WORLD 7 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_ELECTIONARY_MODE 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_NEXT + ev_data 0 0 0 0 + start_time 1 + } + } + } + object { + ID 2 + type $ACS_INPUT_FIELD_OBJ + + obj_index 1 $ACS_BACK_OPTION + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_HOT_SEAT_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $HS_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_GAME_MODE $MCH_SPLIT_CONTROL_HS 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_SPLIT_HS_SCR 0 0 0 + start_time 0 + } + } + } + object { + ID 4 + type $ACS_INPUT_FIELD_OBJ + +// obj_index 1 $ACS_BACK_OPTION + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_ONLINE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $OL_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_MAIN_MENU_DUMMY_SCR3 0 0 0 + start_time 0 + } + } + } + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + obj_index 3 2 + obj_index 1 4 + + str_len 25 + string $ACS_BACK_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS +// x 90 + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_PREV + ev_data 0 0 0 0 + start_time 1 + } + } + } +} + +screen { + ID $ACS_SPLIT_HS_SCR + #define CUR_SCR $ACS_SPLIT_HS_SCR + + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + obj_index 1 $ACS_PLAYER4_MECHOS + obj_index 3 $ACS_PLAYER0_MECHOS + obj_index 0 $ACS_NEW_GAME_OPTION + obj_index 2 2 + + str_len 25 + string $ACS_BACK_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_MULTIPLAYER_SCR 0 0 0 + start_time 0 + } + } + } + object { + ID $ACS_NEW_GAME_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_START_STR + font $MAIN_FNT + $COLOR_SET0 + + obj_index 1 $ACS_PLAYER4_TYPE + obj_index 3 $ACS_PLAYER0_TYPE + obj_index 0 3 + obj_index 2 $ACS_BACK_OPTION + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS + x 470 + + size_x 100 + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_INIT_RACERS 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_NEXT + ev_data 0 0 0 0 + start_time 1 + } + } + } + + object { + ID 2 + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + flag 0x1000 + + obj_index 1 $ACS_PLAYER4_NAME + obj_index 3 $ACS_PLAYER0_NAME + obj_index 0 $ACS_BACK_OPTION + obj_index 2 3 + + str_len 10 + string " " + font $MAIN_FNT + $COLOR_SET0 +/* + obj_index 1 $ACS_PLAYER4_TYPE + obj_index 3 $ACS_PLAYER0_TYPE + obj_index 0 $ACS_BACK_OPTION + obj_index 2 $ACS_BACK_OPTION +*/ + palette $ACS_MAIN_MENU_PAL0 + + #define WSX 30 + + x "320 - $WSX - 5" + y 330 + + size_x $WSX + size_y 30 + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_CHANGE_HS_WORLD 0 0 0 + start_time 0 + } + } + } + + object { + ID 3 + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + flag 0x1000 + + obj_index 1 $ACS_PLAYER4_NAME + obj_index 3 $ACS_PLAYER0_NAME + obj_index 0 2 + obj_index 2 $ACS_NEW_GAME_OPTION + + str_len 10 + string " " + font $MAIN_FNT + $COLOR_SET0 +/* + obj_index 1 $ACS_PLAYER4_TYPE + obj_index 3 $ACS_PLAYER0_TYPE + obj_index 0 $ACS_BACK_OPTION + obj_index 2 $ACS_BACK_OPTION +*/ + palette $ACS_MAIN_MENU_PAL0 + + x "320 + 5" + y 330 + + size_x $WSX + size_y 30 + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_CHANGE_HS_WORLD 1 0 0 + start_time 0 + } + } + } + + object { + ID 1 + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET00 + + flag 0x04 + flag 0x1000 + + str_len 100 + string " " + font $MAIN_FNT + $COLOR_SET00 +/* + obj_index 1 $ACS_PLAYER4_TYPE + obj_index 3 $ACS_PLAYER0_TYPE + obj_index 0 $ACS_BACK_OPTION + obj_index 2 $ACS_BACK_OPTION +*/ + palette $ACS_MAIN_MENU_PAL0 + + #define WSX 100 + + x "(640 - $WSX)/2" + y 300 + + size_x $WSX + size_y 30 + } + + #define CTL_MENU_SZ 5 + #define CTL_MENU_START_Y -70 + #define CTL_SY 30 + #define CTL_DELTA 15 + + #define MECHOS_X 30 + #define MECHOS_SX 150 + #define MECHOS_SY 30 + + #define NAME_X 210 + #define NAME_SX 200 + + #define TYPE_X 460 + #define TYPE_SX 130 + + #define CTL_UP $ACS_NEW_GAME_OPTION + #define CTL_DOWN -1 + #define CTL_UP1 2 + #define CTL_DOWN1 -1 + #define CTL_UP2 $ACS_BACK_OPTION + #define CTL_DOWN2 -1 + + #define CTL_Y 0 + #define NAME_ID $ACS_PLAYER0_NAME + #define TYPE_ID $ACS_PLAYER0_TYPE + #define MECHOS_ID $ACS_PLAYER0_MECHOS + #include "iScreen\Scripts\player_cfg.inc" + + #define CTL_UP -1 + #define CTL_UP1 -1 + #define CTL_UP2 -1 + #define CTL_DOWN -1 + + #define CTL_Y 1 + #define NAME_ID $ACS_PLAYER1_NAME + #define TYPE_ID $ACS_PLAYER1_TYPE + #define MECHOS_ID $ACS_PLAYER1_MECHOS + #include "iScreen\Scripts\player_cfg.inc" + + #define CTL_Y 2 + #define NAME_ID $ACS_PLAYER2_NAME + #define TYPE_ID $ACS_PLAYER2_TYPE + #define MECHOS_ID $ACS_PLAYER2_MECHOS + #include "iScreen\Scripts\player_cfg.inc" + + #define CTL_Y 3 + #define NAME_ID $ACS_PLAYER3_NAME + #define TYPE_ID $ACS_PLAYER3_TYPE + #define MECHOS_ID $ACS_PLAYER3_MECHOS + #include "iScreen\Scripts\player_cfg.inc" + + #define CTL_UP -1 + #define CTL_DOWN $ACS_NEW_GAME_OPTION + #define CTL_DOWN2 $ACS_BACK_OPTION + #define CTL_UP1 -1 + #define CTL_DOWN1 2 + + #define CTL_Y 4 + #define NAME_ID $ACS_PLAYER4_NAME + #define TYPE_ID $ACS_PLAYER4_TYPE + #define MECHOS_ID $ACS_PLAYER4_MECHOS + #include "iScreen\Scripts\player_cfg.inc" +} + +#define BT_OBJ object { \ + ID "2 + $BT_ID" \ + type $ACS_INPUT_FIELD_OBJ \ + \ + $ALPHA_SET0 \ + obj_index 1 0 \ + obj_index 3 0 \ + obj_index 0 $BT_L \ + obj_index 2 $BT_R \ + \ + flag 0x04 \ + flag 0x800 \ + flag 0x1000 \ + \ + str_len 2 \ + string " " \ + font $MAIN_FNT \ + $COLOR_SET0 \ + \ + palette $ACS_MAIN_MENU_PAL0 \ + \ + x "200 + $WSX * $BT_ID + $BT_DX" \ + y 390 \ + \ + size_x $WSX \ + size_y $WSX \ + \ + event { \ + code $VK_MOUSE_LEFT \ + code $VK_SPACE \ + \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_CHANGE_PART $BT_ID 1 0 \ + start_time 0 \ + } \ + } \ + event { \ + code $VK_MOUSE_RIGHT \ + \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_CHANGE_PART $BT_ID 0 0 \ + start_time 0 \ + } \ + } \ + } + +screen { + ID $ACS_CONSTRUCT_SCR + + #define WSX 50 + + #define BT_ID 0 + #define BT_DX -15 + #define BT_L 100 + #define BT_R 3 + $BT_OBJ + + #define BT_ID 1 + #define BT_L 2 + #define BT_R 4 + #define BT_DX 0 + $BT_OBJ + #define BT_ID 2 + #define BT_L 3 + #define BT_R 5 + $BT_OBJ + #define BT_ID 3 + #define BT_L 4 + #define BT_R $ACS_BACK_OPTION + $BT_OBJ + + object { + ID 10 + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET00 + + obj_index 0 0 + obj_index 1 0 + obj_index 2 0 + obj_index 3 0 + + str_len 2 + string " " + font $MAIN_FNT + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x 300 + y 350 + + flag 0x1000 + + size_x 1 + size_y 1 + } + + object { + ID 1 + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + obj_index 0 0 + obj_index 1 0 + obj_index 2 0 + obj_index 3 0 + + flag 0x04 + flag 0x1000 + + str_len 2 + string " " + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + #define WSX 200 + + x "(640 - $WSX)/2" + y "(480 - $WSX)/2 - 90" + + size_x $WSX + size_y $WSX + } + + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + obj_index 0 5 + obj_index 1 0 + obj_index 2 100 + obj_index 3 0 + + flag 0x04 + + str_len 25 + string $ACS_CANCEL_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS + x 430 + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FINIT_SHOP 1 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_SPLIT_HS_SCR 0 0 0 + start_time 0 + } + } + } + object { + ID 100 + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + obj_index 0 $ACS_BACK_OPTION + obj_index 1 0 + obj_index 2 2 + obj_index 3 0 + + flag 0x04 + + str_len 25 + string $ACS_OK_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS +// x 470 + + event { + code $ACS_STARTUP_KEY + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_ZBUF 1 0 0 + } + } + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_RETURN + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_ZBUF 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FINIT_SHOP 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_SPLIT_HS_SCR 0 0 0 + start_time 0 + } + } + } +} + +#define PRM_EV event { \ + code $VK_MOUSE_LEFT \ + code $VK_RIGHT \ + \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_INC_MM_OPTION $ACS_HOTSEAT_CFG_SCR $PRM_ID 0 \ + start_time 0 \ + } \ + } \ + event { \ + code $VK_MOUSE_RIGHT \ + code $VK_LEFT \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_DEC_MM_OPTION $ACS_HOTSEAT_CFG_SCR $PRM_ID 0 \ + start_time 0 \ + } \ + } + + +#define PRM_FNT 2 + +screen { + ID $ACS_HOTSEAT_CFG_SCR + + #define PRM_MENU_SIZE 4 + + #define SEEDS_MAX_Y 0 + #define TURN_TIME_Y 1 + #define WAIT_TURN_TIME_Y 2 + #define SEEDS_ACCUMULATION_Y 3 + #define LAPS_Y 3 + + #define PRM_X0 130 + #define PRM_X 520 + + object { + ID $ACS_NUM_LAPS_TXT + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET00 + + flag 0x04 + + str_len 25 + string $ACS_NumLapsStr + font $PRM_FNT + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X0 + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $LAPS_Y" + + size_x $PRM_MENU_SX0 + size_y $PRM_MENU_SY + } + object { + ID $ACS_NUM_LAPS_PRM + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + obj_index 3 $ACS_BACK_OPTION + + flag 0x04 + + str_len 3 + + string "1" + + font $PRM_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $LAPS_Y" + + size_x $PRM_MENU_SX + size_y $PRM_MENU_SY + + flag $ACS_MOUSE_SELECT + + #define PRM_ID $ACS_NUM_LAPS_PRM + $PRM_EV + } +/* + object { + ID $ACS_SEEDS_ACCUMULATION_TXT + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET00 + + flag 0x04 + + str_len 25 + string $ACS_SeedsAccumulationStr + font $PRM_FNT + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X0 + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $SEEDS_ACCUMULATION_Y" + + size_x $PRM_MENU_SX0 + size_y $PRM_MENU_SY + } + object { + ID $ACS_SEEDS_ACCUMULATION_PRM + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + flag 0x800 + + str_len 25 + + max_state 1 + state_str $ACS_OFF_STR + state_str $ACS_ON_STR + + font $PRM_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $SEEDS_ACCUMULATION_Y" + + size_x $PRM_MENU_SX + size_y $PRM_MENU_SY + + #define PRM_ID $ACS_SEEDS_ACCUMULATION_PRM + $PRM_EV + } +*/ + object { + ID $ACS_WAIT_TURN_TIME_TXT + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET00 + + flag 0x04 + + str_len 25 + string $ACS_WaitTurnTimeStr + font $PRM_FNT + $COLOR_SET00 + + x $PRM_X0 + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $WAIT_TURN_TIME_Y" + + size_x $PRM_MENU_SX0 + size_y $PRM_MENU_SY + + palette $ACS_MAIN_MENU_PAL0 + } + object { + ID $ACS_WAIT_TURN_TIME_PRM + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + flag 0x800 + + str_len 25 + + string "0000" + + font $PRM_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $WAIT_TURN_TIME_Y" + + size_x $PRM_MENU_SX + size_y $PRM_MENU_SY + + #define PRM_ID $ACS_WAIT_TURN_TIME_PRM + $PRM_EV + } + object { + ID $ACS_TURN_TIME_TXT + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET00 + + flag 0x04 + + str_len 25 + string $ACS_TurnTimeStr + font $PRM_FNT + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X0 + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $TURN_TIME_Y" + + size_x $PRM_MENU_SX0 + size_y $PRM_MENU_SY + } + object { + ID $ACS_TURN_TIME_PRM + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + flag 0x800 + + str_len 25 + + string "0000" + + font $PRM_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $TURN_TIME_Y" + + size_x $PRM_MENU_SX + size_y $PRM_MENU_SY + + #define PRM_ID $ACS_TURN_TIME_PRM + $PRM_EV + } + object { + ID $ACS_SEEDS_MAX_TXT + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET00 + + flag 0x04 + + str_len 25 + string $ACS_SeedsMaxStr + font $PRM_FNT + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X0 + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $SEEDS_MAX_Y" + + size_x $PRM_MENU_SX0 + size_y $PRM_MENU_SY + } + object { + ID $ACS_SEEDS_MAX_PRM + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + flag 0x800 + + str_len 25 + + obj_index 1 $ACS_BACK_OPTION + + string "00" + + font $PRM_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $SEEDS_MAX_Y" + + size_x $PRM_MENU_SX + size_y $PRM_MENU_SY + + #define PRM_ID $ACS_SEEDS_MAX_PRM + $PRM_EV + } + + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + obj_index 3 $ACS_SEEDS_MAX_PRM + + str_len 25 + string $ACS_DONE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_OPTIONS_SCR 0 0 0 + start_time 0 + } + } + } +} + +#define PRM_FNT 1 + +screen { + ID $ACS_DEMO_SCR + + #define MAIN_MENU_SIZE 2 + + #define RT_Y 0 + #define TB_Y 1 + #define IF_Y 2 + + object { // Realtime option... + ID 1 + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_RT_MODE_STR + font $MAIN_FNT + $COLOR_SET0 + + obj_index 0 0 + obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $RT_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_PLAY_DEMO 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_INTERFACE_AMBIENT 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_GAME_MODE $MCH_SINGLE_GAME 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_NEXT + ev_data 0 0 0 0 + start_time 1 + } + } + } + object { + ID 2 // Turnbased option... + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_TB_MODE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $TB_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_PLAY_DEMO 1 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_INTERFACE_AMBIENT 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_GAME_MODE $MCH_SINGLE_GAME 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_NEXT + ev_data 0 0 0 0 + start_time 1 + } + } + } +/* + object { + ID 2 // Interface option... + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_TB_MODE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $TB_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_PLAY_DEMO 1 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_INTERFACE_AMBIENT 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_GAME_MODE $MCH_SINGLE_GAME 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_NEXT + ev_data 0 0 0 0 + start_time 1 + } + } + } +*/ + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + obj_index 3 1 + + str_len 25 + string $ACS_BACK_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS +// x 90 + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_PREV + ev_data 0 0 0 0 + start_time 1 + } + } + } +} + + +screen { + ID $ACS_NA_SCR + + #define MAIN_MENU_SIZE 2 + + object { + ID 1 + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET00 + + flag 0x04 + + str_len 25 + string $ACS_NA_STR1 + font $MAIN_FNT + $COLOR_SET00 + + obj_index 0 0 + obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * 0" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + } + object { + ID 2 + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET00 + + flag 0x04 + + str_len 25 + string $ACS_NA_STR2 + font $MAIN_FNT + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * 1" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + } + + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + obj_index 3 1 + + str_len 25 + string $ACS_BACK_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS +// x 90 + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_MULTIPLAYER_SCR 0 0 0 + start_time 0 + } + } + } +} diff --git a/MechoSoma/iScreen/SCRIPTS/iText.scr b/MechoSoma/iScreen/SCRIPTS/iText.scr new file mode 100644 index 00000000..fb68f00f --- /dev/null +++ b/MechoSoma/iScreen/SCRIPTS/iText.scr @@ -0,0 +1,439 @@ + +#include "iScreen\Scripts\aci_str.inc" +#include "iScreen\iTextID.h" + +itext $iTXT_WORLD { + string $ACS_WORLD_STR +} + +itext $iTXT_DROP_CP { + string $mchA_DropStr +} + +itext $iTXT_TRY_AGAIN { + string $mchA_TryAgainStr +} + +itext $iTXT_GO_AWAY { + string $mchA_GoAwayStr +} + +itext $iTXT_LOST { + string $mchA_LostStr +} + +itext $iTXT_CONTINUE { + string $mchA_ContinueStr +} + +itext $iTXT_BONANZA_RACE { + string $mchA_NotLostStr +} + +itext $iTXT_WON_SPELL0 { + string $mchA_WonSpellStr0 +} + +itext $iTXT_WON_SPELL1 { + string $mchA_WonSpellStr1 +} + +itext $iTXT_WINNER { + string $mchA_WinnerStr +} + +itext $iTXT_BUY_SPELL { + string $mchA_BuyStr +} + +itext $iTXT_BUY_IT { + string $mchA_BuyItStr +} + +itext $iTXT_NO_THANKS { + string $mchA_NoThanksStr +} + +itext $iTXT_NOT_ENOUGH { + string $mchA_NotEnoughStr0 +} + +itext $iTXT_NEXT_TIME { + string $mchA_NextTimeStr +} + +itext $iTXT_PLAY_AGAIN { + string $mchA_PlayAgainStr +} + +itext $iTXT_PRESS_KEY { + string $mchA_PressStr +} + +itext $iTXT_WAIT_TURN { + string $mchA_WaitTurnStr +} + +itext $iTXT_TURN { + string $mchA_TurnStr +} + +itext $iTXT_LAP { + string $mchA_LapStr +} + +itext $iTXT_FINAL_LAP { + string $mchA_FinalLapStr +} + +itext $iTXT_TURNS { + string $mchA_TurnsStr +} + +itext $iTXT_PRICE { + string $mchA_PriceStr +} + +itext $iTXT_COST { + string $mchA_CostsStr +} + +itext $iTXT_NOT_ENOUGH1 { + string $mchA_NotEnoughStr1 +} + +itext $iTXT_TIPS00 { + string $mchA_TipStr00 +} + +itext $iTXT_TIPS01 { + string $mchA_TipStr01 +} + +itext $iTXT_TIPS02 { + string $mchA_TipStr02 +} + +itext $iTXT_TIPS03 { + string $mchA_TipStr03 +} + +itext $iTXT_TIPS04 { + string $mchA_TipStr04 +} + +itext $iTXT_TIPS1 { + string $mchA_TipStr1 +} + +itext $iTXT_CONTACTS { + string $mchContactsText +} + +itext $iTXT_SPELL_NA { + string $iwSpellStr +} + +itext $iTXT_WAIT { + string $iwWaitStr +} + +itext $iTXT_TB_MODE { + string $iwTurnBasedStr +} + +itext $iTXT_RT_MODE { + string $iwRealTimeStr +} + +itext $iTXT_TO_BUY { + string $iwToBuyStr +} + +itext $iTXT_TRACK_NA1 { + string $iwTrackNA_Str1 +} + +itext $iTXT_TRACK_NA2 { + string $iwTrackNA_Str2 +} + +itext $iTXT_COME_LATER { + string $iwComeLaterStr +} + +itext $iTXT_PRIZE { + string $iwPrizeStr +} + +itext $iTXT_MAILTO { + string $ACS_MAILTO_TXT +} + +itext $iTXT_CONTINUE_WITH { + string $ACS_CONTINUE_WITH_STR +} + +itext $iTXT_ENG_LAYOUT { + string $ACS_ENG_LAYOUT +} + +itext $iTXT_LOCAL_LAYOUT { + string $ACS_LOCAL_LAYOUT +} + +itext $iTXT_OTHER_LAYOUT { + string $ACS_OTHER_LAYOUT +} + +itext $iTXT_REPLAY_TURN { + string $mchA_ReplayTurnStr +} + +itext $iTXT_NONE { + string $ACS_NoneStr +} + +itext $iTXT_VERSION_ID { + string $mchVersionMM_Text +} + +itext $iTXT_OK { + string $ACS_OK_STR +} + +itext $iTXT_WAIT_TURN_FINISHED { + string $mchA_WaitTurnStrF +} + +itext $iTXT_REPLAY_GAME { + string $mchA_ReplayGameStr +} + +itext $iTXT_ERROR { + string $ACS_ERROR_STR +} + +itext $iTXT_CONNECT { + string $ACS_CONNECT_STR +} + +itext $iTXT_SEND { + string $ACS_SEND_STR +} + +itext $iTXT_RECEIVE { + string $ACS_RECEIVE_STR +} + +itext $iTXT_RETRY { + string $ACS_RETRY_STR +} + +itext $iTXT_SENT_OK { + string $mchA_SentOkStr +} + +itext $iTXT_EDIT_TURN { + string $mchA_EditTurnStr +} + +itext $iTXT_WAITING_FOR { + string $mchA_WaitingForStr +} + +itext $iTXT_REFRESH { + string $mchA_RefreshStr +} + +itext $iTXT_CHANGE_PLAYER { + string $mchA_ChangePlayerStr +} + +itext $iTXT_CHANGE_PLAYER_T { + string $mchA_ChangePlayerTitleStr +} + +itext $iTXT_USE_ARROWS { + string $mchA_UseArrowsStr +} + +itext $iTXT_CHANGE_CONTINUE { + string $mchA_ChContinueStr +} + +itext $iTXT_GAME_TITLE { + string $mchA_GameTitle +} + +itext $iTXT_NAME00 { + string $acsName00 +} + +itext "$iTXT_NAME00 + 1" { + string $acsName01 +} + +itext "$iTXT_NAME00 + 2" { + string $acsName02 +} + +itext "$iTXT_NAME00 + 3" { + string $acsName03 +} + +itext "$iTXT_NAME00 + 4" { + string $acsName04 +} + +itext "$iTXT_NAME00 + 5" { + string $acsName05 +} + +itext "$iTXT_NAME00 + 6" { + string $acsName06 +} + +itext "$iTXT_NAME00 + 7" { + string $acsName07 +} + +itext "$iTXT_NAME00 + 8" { + string $acsName08 +} + +itext "$iTXT_NAME00 + 9" { + string $acsName09 +} + +itext "$iTXT_NAME00 + 10" { + string $acsName10 +} + +itext "$iTXT_NAME00 + 11" { + string $acsName11 +} + +itext "$iTXT_NAME00 + 12" { + string $acsName12 +} + +itext "$iTXT_NAME00 + 13" { + string $acsName13 +} + +itext "$iTXT_NAME00 + 14" { + string $acsName14 +} + +itext $iTXT_PLACE0 { + string $acsPlace0 +} + +itext "$iTXT_PLACE0 + 1" { + string $acsPlace1 +} + +itext "$iTXT_PLACE0 + 2" { + string $acsPlace2 +} + +itext "$iTXT_PLACE0 + 3" { + string $acsPlace3 +} + +itext "$iTXT_PLACE0 + 4" { + string $acsPlace4 +} + +itext $iTXT_LATE_TURN { + string $mchA_SentLateStr +} + +itext $iTXT_INTRO_SCENE1 { + string $imScene1 +} + +itext $iTXT_INTRO_SCENE2 { + string $imScene2 +} + +itext $iTXT_INTRO_SCENE3 { + string $imScene3 +} + +itext $iTXT_INTRO_SCENE4 { + string $imScene4 +} + +itext $iTXT_INTRO_SCENE5 { + string $imScene5 +} + +itext $iTXT_INTRO_SCENE6 { + string $imScene6 +} + +itext $iTXT_INTRO_SCENE7 { + string $imScene7 +} + +itext "$iTXT_CHAR00 + 0" { + string $acs_charTxt00 +} + +itext "$iTXT_CHAR00 + 1" { + string $acs_charTxt01 +} + +itext "$iTXT_CHAR00 + 2" { + string $acs_charTxt02 +} + +itext "$iTXT_CHAR00 + 3" { + string $acs_charTxt03 +} + +itext "$iTXT_CHAR00 + 4" { + string $acs_charTxt04 +} + +itext "$iTXT_CHAR00 + 5" { + string $acs_charTxt05 +} + +itext "$iTXT_CHAR00 + 6" { + string $acs_charTxt06 +} + +itext "$iTXT_CHAR00 + 7" { + string $acs_charTxt07 +} + +itext "$iTXT_CHAR00 + 8" { + string $acs_charTxt08 +} + +itext "$iTXT_CHAR00 + 9" { + string $acs_charTxt09 +} + +itext $iTXT_OUTRO { + string $acsOutroTxt +} + +itext $iTXT_BAD_PACKET { + string $ACS_BAD_PACKET_STR +} + +itext $iTXT_ONLINE_URL { + string $ACS_ONLINE_URL_STR +} + +itext $iTXT_NOCD_MSG { + string $mchErr_NoCD +} + +itext $iTXT_EXE_ACTIVE { + string $mchErr_AlreadyLaunched +} diff --git a/MechoSoma/iScreen/SCRIPTS/lt_ISCREEN.SCR b/MechoSoma/iScreen/SCRIPTS/lt_ISCREEN.SCR new file mode 100644 index 00000000..4b71235b --- /dev/null +++ b/MechoSoma/iScreen/SCRIPTS/lt_ISCREEN.SCR @@ -0,0 +1,6519 @@ + +#include "ISCREEN\Scripts\common.inc" +#include "ISCREEN\Scripts\vkeys.inc" +#include "ISCREEN\aci_evnt.h" +#include "ISCREEN\I-WorldEvent.h" +#include "SOUND\snd_ids.h" + +#include "ISCREEN\Scripts\aci_ids.h" +#include "ISCREEN\controls.h" +#include "ISCREEN\Scripts\aci_str.inc" + +#define ACS_MOUSE_SELECT 0x800 + +#define MAIN_FNT 1 +#define SMALL_FNT 1 +#define WRLD_FNT 1 +#define PRM_FNT 1 +#define CONTROLS_FNT 2 +#define CD_FNT 2 + +#define MAIN_MENU_SX 240 +#define MAIN_MENU_SY 35 +#define MAIN_MENU_DELTA 1 + +#define HOTSEAT_MENU_SX 240 + +#define PRM_MENU_SX0 240 +#define PRM_MENU_SX 100 +#define PRM_MENU_SY 30 +#define PRM_MENU_DELTA 1 +#define PRM_MENU_START_Y 0 + +#define MENU_DX 0 +/* +#define MAIN_MENU_START_Y 40 +#define OPTIONS_MENU_START_Y 40 +#define HOTSEAT_MENU_START_Y 40 +*/ +#define MAIN_MENU_START_Y 0 + +#define OPTIONS_MENU_START_Y 0 +#define HOTSEAT_MENU_START_Y 0 + +#define OBJ_SX 50 +#define OBJ_SY 35 + +#define WORLD_MENU_SX 280 +#define WORLD_MENU_SY 35 +#define WORLD_MENU_DELTA 10 +#define WORLD_MENU_START_Y 0 + +#define TRACK_MENU_SX 280 +#define TRACK_MENU_SY 35 +#define TRACK_MENU_DELTA 10 +#define TRACK_MENU_START_Y 0 + +#define SCR_FRAME -1 +#define OPEN_FRAME 0 +#define CLOSE_FRAME -2 + +#define CREDITS_PX 100 +#define CREDITS_PY 80 + +#define CREDITS_SX 560 +#define CREDITS_SY 270 +#define CREDITS_DY 50 + +#define CONTROLS_SX 300 +#define CONTROLS_SY 310 + +#define CONTROLS_COORDS x 230 \ + y 160 + +num_fonts 3 +font_dir "FONTS" +font_prefix "font" +/* +#define ALPHA_SET0 alpha0 0 \ +alpha1 0 \ +alpha2 0 \ +d_alpha 8 +*/ +#define ALPHA_SET00 alpha0 0 \ +alpha1 0 \ +alpha2 0 \ +d_alpha 8 + +#define ALPHA_SET1 alpha0 0 \ +alpha1 0 \ +alpha2 0 \ +d_alpha 8 + + +#define ALPHA_SET0 alpha0 0 \ +alpha1 128 \ +alpha2 128 \ +d_alpha 16 + +/* +#define ALPHA_SET00 alpha0 10 \ +alpha1 128 \ +alpha2 32 \ +d_alpha 8 + +#define ALPHA_SET1 alpha0 1 \ +alpha1 1 \ +alpha2 1 \ +d_alpha 8 +*/ +#define BACK_COORDS x 30 \ + y 390 \ + size_x 170 \ + size_y $OBJ_SY + +// y 380 \ + +#define BACK_COORDS2 x 30 \ + y 350 \ + size_x 100 \ + size_y $OBJ_SY + +#define COLOR0_0_BASE 136 +#define COLOR0_0_BASE_S 145 +#define COLOR0_1_BASE 159 +#define COLOR0_2_BASE 159 + +#define COLOR0_0 "$COLOR0_0_BASE | (0 * 256)" +#define COLOR0_0_S "$COLOR0_0_BASE_S | (0 * 256)" +#define COLOR0_1 "$COLOR0_1_BASE | (0 * 256)" +#define COLOR0_2 "$COLOR0_2_BASE | (0 * 256)" + +#define COLOR_SET0 col0 $COLOR0_0 \ + col1 $COLOR0_1 \ + col2 $COLOR0_2 + +#define COLOR_SET0_S col0 $COLOR0_0_S \ + col1 $COLOR0_1 \ + col2 $COLOR0_2 + +#define COLOR_SET00 col0 $COLOR0_0 \ + col1 $COLOR0_0 \ + col2 $COLOR0_0 + +#define COLOR_SET1 col0 $COLOR0_1 \ + col1 $COLOR0_1 \ + col2 $COLOR0_1 + +#define COLOR_SET2 col0 $COLOR0_0 \ + col1 $COLOR0_0 \ + col2 $COLOR0_0 + +resource { + type $ACS_PAL + ID $ACS_MAIN_MENU_PAL0 + file "menu.pal" +} + +resource { + type $ACS_PAL + ID $ACS_MAIN_MENU_PAL1 + file "main.pal" +} + +#define NEW_GAME_EV event { \ + code $VK_MOUSE_LEFT \ + code $VK_MOUSE_RIGHT \ + \ + time 2 \ + \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_INTERFACE_AMBIENT 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_SET_GAME_MODE $MCH_SINGLE_GAME $SPLIT_MODE 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_SELECT_WORLD 7 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_ELECTIONARY_MODE 0 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_CHANGE_SCREEN_NEXT \ + ev_data 0 0 0 0 \ + start_time 1 \ + } \ + } + +// Startup screen with "CONTINUE WITH ..." and "CHANGE PLAYER" options... +screen { + ID $ACS_MAIN_MENU_SCR2 + + #define SPLIT_MODE 0 + + #define MAIN_MENU_SIZE 7 + + #define CONTINUE_Y 0 + #define LOAD_Y 1 + #define NEW_GAME_Y 2 + #define DEMO_Y 3 + #define MULTIPLAYER_Y 4 + #define OPTIONS_Y 5 + #define EXIT_Y 6 + + #define NG_UP $ACS_LOAD_OPTION + #define EXIT_DOWN $ACS_CONTINUE_OPTION + + #define ACS_NG_STR $ACS_ABORT_GAME_STR + #include "ISCREEN\Scripts\mainmenu.inc" + + object { + ID 83 // Demo option + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_DEMO_STR + font $MAIN_FNT + $COLOR_SET0 + + obj_index 0 0 + obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $DEMO_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_PLAY_DEMO 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_INTERFACE_AMBIENT 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_GAME_MODE $MCH_SINGLE_GAME 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_NEXT + ev_data 0 0 0 0 + start_time 1 + } + } +/* + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_PREV_SCR_ID $ACS_DEMO_SCR -1 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_DEMO_SCR 0 0 0 + start_time 0 + } + } +*/ + } + + object { + ID $ACS_EXIT_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_EXIT_STR + font $MAIN_FNT + $COLOR_SET0 + + obj_index 3 $EXIT_DOWN + obj_index 0 0 + obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $EXIT_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_MAIN_MENU_DUMMY_SCR2 0 0 0 + start_time 0 + } + } + } + + object { + ID $ACS_CONTINUE_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + obj_index 1 $ACS_EXIT_OPTION + + flag 0x04 + + str_len 25 + string $ACS_CONTINUE_WITH_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $CONTINUE_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_INTERFACE_AMBIENT 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_GAME_MODE $MCH_SINGLE_GAME 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SELECT_WORLD 7 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_LOAD_GAME 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_NEXT + ev_data 0 0 0 0 + start_time 1 + } + } + } + + object { + ID $ACS_LOAD_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_CHANGE_PLAYER_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $LOAD_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_INIT_SAVE_SCR 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_LOAD_GAME_SCR 0 0 0 + start_time 1 + } + } + } + + object { + ID $ACS_MULTIPLAYER_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_MULTIPLAYER_STR + font $MAIN_FNT + $COLOR_SET0 + + def_resource $ACS_MULTIPLAYER_OPTION + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $MULTIPLAYER_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_PREV_SCR_ID $ACS_MULTIPLAYER_SCR -1 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_MULTIPLAYER_SCR 0 0 0 + start_time 0 + } + } + } + + event { + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_PREV_SCR_ID $ACS_MAIN_MENU_DUMMY_SCR1 -1 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_MAIN_MENU_DUMMY_SCR1 0 0 0 + start_time 0 + } + } +} + + +// Startup screen with "CONTINUE WITH ..." option... +screen { + ID $ACS_MAIN_MENU_SCR1 + + #define SPLIT_MODE 0 + + #define MAIN_MENU_SIZE 6 + + #define CONTINUE_Y 0 + #define NEW_GAME_Y 1 + #define DEMO_Y 2 + #define MULTIPLAYER_Y 3 + #define OPTIONS_Y 4 + #define EXIT_Y 5 + + #define NG_UP $ACS_CONTINUE_OPTION + #define EXIT_DOWN $ACS_CONTINUE_OPTION + + #define ACS_NG_STR $ACS_ABORT_GAME_STR + #include "ISCREEN\Scripts\mainmenu.inc" + + object { + ID 83 // Demo option + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_DEMO_STR + font $MAIN_FNT + $COLOR_SET0 + + obj_index 0 0 + obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $DEMO_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_PLAY_DEMO 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_INTERFACE_AMBIENT 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_GAME_MODE $MCH_SINGLE_GAME 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_NEXT + ev_data 0 0 0 0 + start_time 1 + } + } +/* + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_PREV_SCR_ID $ACS_DEMO_SCR -1 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_DEMO_SCR 0 0 0 + start_time 0 + } + } +*/ + } + + object { + ID $ACS_EXIT_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_EXIT_STR + font $MAIN_FNT + $COLOR_SET0 + + obj_index 3 $EXIT_DOWN + obj_index 0 0 + obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $EXIT_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_MAIN_MENU_DUMMY_SCR2 0 0 0 + start_time 0 + } + } + } + + object { + ID $ACS_CONTINUE_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + obj_index 1 $ACS_EXIT_OPTION + + flag 0x04 + + str_len 25 + string $ACS_CONTINUE_WITH_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $CONTINUE_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_INTERFACE_AMBIENT 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_GAME_MODE $MCH_SINGLE_GAME 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SELECT_WORLD 7 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_LOAD_GAME 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_NEXT + ev_data 0 0 0 0 + start_time 1 + } + } + } + + object { + ID $ACS_MULTIPLAYER_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_MULTIPLAYER_STR + font $MAIN_FNT + $COLOR_SET0 + + def_resource $ACS_MULTIPLAYER_OPTION + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $MULTIPLAYER_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_PREV_SCR_ID $ACS_MULTIPLAYER_SCR -1 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_MULTIPLAYER_SCR 0 0 0 + start_time 0 + } + } + } + + event { + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_PREV_SCR_ID $ACS_MAIN_MENU_DUMMY_SCR1 -1 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_MAIN_MENU_DUMMY_SCR1 0 0 0 + start_time 0 + } + } +} + +// Startup screen without "CONTINUE" option... +screen { + ID $ACS_MAIN_MENU_SCR0 + + #define SPLIT_MODE 0 + + #define MAIN_MENU_SIZE 5 + + #define NEW_GAME_Y 0 + #define DEMO_Y 1 + #define MULTIPLAYER_Y 2 + #define OPTIONS_Y 3 + #define EXIT_Y 4 + + #define NG_UP $ACS_EXIT_OPTION + #define EXIT_DOWN $ACS_NEW_GAME_OPTION + + #define ACS_NG_STR $ACS_NEW_GAME_STR + #include "ISCREEN\Scripts\mainmenu.inc" + + object { + ID 83 // Demo option + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_DEMO_STR + font $MAIN_FNT + $COLOR_SET0 + + obj_index 0 0 + obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $DEMO_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_PLAY_DEMO 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_INTERFACE_AMBIENT 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_GAME_MODE $MCH_SINGLE_GAME 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_NEXT + ev_data 0 0 0 0 + start_time 1 + } + } +/* + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_PREV_SCR_ID $ACS_DEMO_SCR -1 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_DEMO_SCR 0 0 0 + start_time 0 + } + } +*/ + } + + object { + ID $ACS_EXIT_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_EXIT_STR + font $MAIN_FNT + $COLOR_SET0 + + obj_index 3 $EXIT_DOWN + obj_index 0 0 + obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $EXIT_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_MAIN_MENU_DUMMY_SCR2 0 0 0 + start_time 0 + } + } + } + + object { + ID $ACS_MULTIPLAYER_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_MULTIPLAYER_STR + font $MAIN_FNT + $COLOR_SET0 + + def_resource $ACS_MULTIPLAYER_OPTION + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $MULTIPLAYER_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_PREV_SCR_ID $ACS_MULTIPLAYER_SCR -1 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_MULTIPLAYER_SCR 0 0 0 + start_time 0 + } + } + } + + event { + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_PREV_SCR_ID $ACS_MAIN_MENU_DUMMY_SCR1 -1 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_MAIN_MENU_DUMMY_SCR1 0 0 0 + start_time 0 + } + } +} + +// Dummy screen +screen { + ID $ACS_MAIN_MENU_DUMMY_SCR0 + + event { + code $ACS_STARTUP_KEY + + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_MAIN_MENU_SCR0 0 0 0 + start_time 0 + } + } +} + +// Dummy screen #2 - exit +screen { + ID $ACS_MAIN_MENU_DUMMY_SCR1 + + #define MAIN_MENU_SIZE 2 + + object { + ID $ACS_EXIT_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET00 + + flag 0x04 + + str_len 25 + string $ACS_EXIT_Q_STR + font $MAIN_FNT + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX)/2" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * 0 - 20" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + } + + object { + ID $ACS_CONTINUE_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + obj_index 0 $ACS_ABORT_OPTION + obj_index 2 $ACS_ABORT_OPTION + + str_len 25 + string $ACS_NO_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "320 + 40" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * 1 + 20" + + size_x 50 + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_N + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_PREV + ev_data 0 0 0 0 + start_time 1 + } + } + } + object { + ID $ACS_ABORT_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + obj_index 0 $ACS_CONTINUE_OPTION + obj_index 2 $ACS_CONTINUE_OPTION + + flag 0x04 + + str_len 25 + string $ACS_YES_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "320 - 90" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * 1 + 20" + + size_x 50 + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_Y + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_MAIN_MENU_DUMMY_SCR2 0 0 0 + start_time 1 + } + } + } +} + +// Dummy screen #3 - exit +screen { + ID $ACS_MAIN_MENU_DUMMY_SCR2 + + event { + code $ACS_STARTUP_KEY + time 20 + + ev_comm { + code $ACS_EXIT + ev_data $ACS_EXIT_GAME 0 0 0 + start_time 19 + } + } +} + +// Dummy screen #4 - exit & launch online game +screen { + ID $ACS_MAIN_MENU_DUMMY_SCR3 + + event { + code $ACS_STARTUP_KEY + time 20 + + ev_comm { + code $ACS_EXIT + ev_data -1 0 0 0 + start_time 19 + } + } +} + +// Second main menu screen - with "CONTINUE" option... +screen { + ID $ACS_MAIN_MENU_SCR3 + + #define SPLIT_MODE -1 + + #define MAIN_MENU_SIZE 7 + + flag 0x20 + + #define CONTINUE_Y 0 + #define ABORT_Y 1 + #define RESTART_Y 2 + #define NEW_GAME_Y 4 + #define OPTIONS_Y 5 + #define EXIT_Y 6 + + #define NG_UP $ACS_RESTART_OPTION + #define EXIT_DOWN $ACS_CONTINUE_OPTION + + #define ACS_NG_STR $ACS_ABORT_GAME_STR + #include "ISCREEN\Scripts\mainmenu.inc" + + object { + ID $ACS_EXIT_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_QUIT_STR + font $MAIN_FNT + $COLOR_SET0 + + obj_index 3 $EXIT_DOWN + obj_index 0 0 + obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $EXIT_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_INTERFACE_AMBIENT 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_QUIT 0 0 0 + start_time 0 + } + } + } + + object { + ID $ACS_CONTINUE_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + obj_index 1 $ACS_EXIT_OPTION + obj_index 0 0 + obj_index 2 0 + + flag 0x04 + + str_len 25 + string $ACS_CONTINUE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX ) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $CONTINUE_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 2 + + ev_comm { + code $ACS_EXIT + ev_data $ACS_CONTINUE_GAME 0 0 0 + start_time 1 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + } + } + object { + ID $ACS_ABORT_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_ABORT_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX ) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $ABORT_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_ABORT_RACE 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SELECT_WORLD 7 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_NEXT + ev_data 0 0 0 0 + start_time 1 + } + } + } + + object { + ID $ACS_RESTART_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $RESTART_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + str_len 25 + string $ACS_RESTART_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_ABORT_RACE 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_NEXT + ev_data 0 0 0 0 + start_time 1 + } + } + } +} + +// I-World main menu screen - with "CONTINUE" option... +screen { + ID $ACS_MAIN_MENU_SCR4 + + #define SPLIT_MODE -1 + + #define MAIN_MENU_SIZE 4 + + #define CONTINUE_Y 0 + #define NEW_GAME_Y 1 + #define OPTIONS_Y 2 + #define EXIT_Y 3 + #define MODE_Y 5 + + #define NG_UP $ACS_CONTINUE_OPTION + #define EXIT_DOWN $ACS_CONTINUE_OPTION + + #define ACS_NG_STR $ACS_ABORT_GAME_STR + #include "ISCREEN\Scripts\mainmenu.inc" +/* + object { + ID 1 + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_QUIT_STR + font $MAIN_FNT + $COLOR_SET0 + + obj_index 3 $ACS_CONTINUE_OPTION + obj_index 0 0 + obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $MODE_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + max_state 1 + state_str $ACS_RT_MODE_STR + state_str $ACS_TB_MODE_STR + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_LEFT + code $VK_RIGHT + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_TURNBASED 1 0 0 + start_time 0 + } + } + } +*/ + object { + ID $ACS_EXIT_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_QUIT_STR + font $MAIN_FNT + $COLOR_SET0 + + obj_index 3 $EXIT_DOWN + obj_index 0 0 + obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $EXIT_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_INTERFACE_AMBIENT 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_QUIT 0 0 0 + start_time 1 + } + } + } + object { + ID $ACS_CONTINUE_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + obj_index 1 $ACS_EXIT_OPTION + obj_index 0 0 + obj_index 2 0 + + flag 0x04 + + str_len 25 + string $ACS_CONTINUE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX ) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $CONTINUE_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 2 + + ev_comm { + code $ACS_EXIT + ev_data $ACS_CONTINUE_GAME 0 0 0 + start_time 1 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + } + } +} + +#define NEW_GAME_EV event { \ + code $VK_MOUSE_LEFT \ + code $VK_MOUSE_RIGHT \ + \ + time 2 \ + \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_INTERFACE_AMBIENT 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_SET_GAME_MODE $MCH_ENTIRE_CONTROL_HS 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_CHANGE_SCREEN_NEXT \ + ev_data 0 0 0 0 \ + start_time 1 \ + } \ + } + +// Hotseat main menu screen... +screen { + ID $ACS_MAIN_MENU_SCR5 + + #define SPLIT_MODE -1 + + #define MAIN_MENU_SIZE 7 + + #define CONTINUE_Y 0 + #define ABORT_Y 1 + #define RESTART_Y 2 + #define NEW_GAME_Y 4 + #define OPTIONS_Y 5 + #define EXIT_Y 6 + + #define NG_UP $ACS_RESTART_OPTION + #define EXIT_DOWN $ACS_CONTINUE_OPTION + + #define ACS_NG_STR $ACS_ABORT_GAME_STR + #include "ISCREEN\Scripts\mainmenu.inc" + + object { + ID $ACS_EXIT_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_QUIT_STR + font $MAIN_FNT + $COLOR_SET0 + + obj_index 3 $EXIT_DOWN + obj_index 0 0 + obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $EXIT_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_INTERFACE_AMBIENT 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_QUIT 0 0 0 + start_time 1 + } + } + } + + object { + ID $ACS_CONTINUE_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + obj_index 1 $ACS_EXIT_OPTION + obj_index 0 0 + obj_index 2 0 + + flag 0x04 + + str_len 25 + string $ACS_CONTINUE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX ) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $CONTINUE_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 2 + + ev_comm { + code $ACS_EXIT + ev_data $ACS_CONTINUE_GAME 0 0 0 + start_time 1 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + } + } + object { + ID $ACS_ABORT_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_ABORT_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX ) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $ABORT_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_ABORT_RACE 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_SPLIT_HS_SCR 0 0 0 + start_time 1 + } + } + } + + object { + ID $ACS_RESTART_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $RESTART_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + str_len 25 + string $ACS_RESTART_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_ABORT_RACE 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_NEXT + ev_data 0 0 0 0 + start_time 1 + } + } + } +} + +// Online main menu screen... +screen { + ID $ACS_MAIN_MENU_SCR6 + + #define SPLIT_MODE -1 + + #define MAIN_MENU_SIZE 4 + + #define CONTINUE_Y 0 + #define CHANGE_Y 1 + #define OPTIONS_Y 2 + #define EXIT_Y 3 + + #define EXIT_DOWN $ACS_CONTINUE_OPTION + + object { + ID $ACS_OPTIONS_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + obj_index 0 0 + obj_index 2 0 + + str_len 25 + string $ACS_OPTIONS_STR + font $MAIN_FNT + $COLOR_SET0 + + def_resource $ACS_OPTIONS_OPTION + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $OPTIONS_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $ACS_STARTUP_KEY + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_INIT_ONLINE_MENU 0 0 0 + start_time 0 + } + } + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SAVE_SCREEN 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_OPTIONS_SCR 0 0 0 + start_time 0 + } + } + } + + object { + ID $ACS_LOAD_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + obj_index 0 0 + obj_index 2 0 + + str_len 25 + string $ACS_CHANGE_PLAYER_STR + font $MAIN_FNT + $COLOR_SET0 + + def_resource $ACS_OPTIONS_OPTION + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $CHANGE_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_CHANGE_PLAYER 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXIT + ev_data $ACS_CONTINUE_GAME 0 0 0 + start_time 1 + } + } + } + + object { + ID $ACS_EXIT_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_QUIT_STR + font $MAIN_FNT + $COLOR_SET0 + + obj_index 3 $EXIT_DOWN + obj_index 0 0 + obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $EXIT_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXIT + ev_data $ACS_EXIT_GAME 0 0 0 + start_time 1 + } + } + } + + object { + ID $ACS_CONTINUE_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + obj_index 1 $ACS_EXIT_OPTION + obj_index 0 0 + obj_index 2 0 + + flag 0x04 + + str_len 25 + string $ACS_CONTINUE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX ) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $CONTINUE_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 2 + + ev_comm { + code $ACS_EXIT + ev_data $ACS_CONTINUE_GAME 0 0 0 + start_time 1 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + } + } +} + +// Options screen... +screen { + ID $ACS_OPTIONS_SCR + + #include "ISCREEN\Scripts\options.inc" +} + +// Credits... +screen { + ID $ACS_CREDITS_SCR + + object { + ID $ACS_CREDITS_TEXT + type $ACS_INPUT_FIELD_OBJ + + alpha0 80 + + flag 0x04 + flag 0x100 + flag 0x400 + flag 0x200 + + str_len 2048 + string $ACS_CREDITS_TXT + font $MAIN_FNT + $COLOR_SET1 + + palette $ACS_MAIN_MENU_PAL0 + + x $CREDITS_PX + y $CREDITS_PY + + size_x $CREDITS_SX + size_y $CREDITS_SY + } + + object { + ID $ACS_CONTINUE_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + $BACK_COORDS +// x 10 +// y 10 + + str_len 25 + string $ACS_OK_STR + font $MAIN_FNT + + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + size_x 50 + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 2 + + ev_comm { + code $ACS_EXIT + ev_data $ACS_CONTINUE_GAME 0 0 0 + start_time 1 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_IWORLD_EVENT + ev_data $IW_MOVE_TO_PLACE 102 0 0 + start_time 0 + } + } + } +} + + +#define OPT_SY0 30 +#define OPT_FNT 1 +#define OPT_DY 10 + +#define OPT_SX0 290 +#define OPT_SX1 150 +#define OPT_X0 100 +#define OPT_DX 50 + +#define OPT_RES_BODY x $OPT_X \ +y "-30 + (480 - ($OPT_SY0 + $OPT_DY) * $OPT_MENU_SZ)/2 + $OPT_Y * ($OPT_SY0 + $OPT_DY)" \ +size_x $OPT_SX \ +size_y $OPT_SY0 + +#define OPT_RES_BODY2 x $OPT_X \ +y "-30 + (480 - ($OPT_SY0 + $OPT_DY) * $OPT_MENU_SZ)/2 + $OPT_Y * ($OPT_SY0 + $OPT_DY)" \ +size_x $OPT_SX \ +size_y "$OPT_SY0" + +#define OPT_OBJ_BODY ID $OPT_ID \ +type $ACS_INPUT_FIELD_OBJ \ +$ALPHA_SET1 \ + \ +flag 0x04 \ +flag $ACS_MOUSE_SELECT \ + \ +str_len 25 \ +string $OPT_STR \ +font $OPT_FNT \ +$OPT_COLOR_SET \ + \ +palette $ACS_MAIN_MENU_PAL0 + +#define OPT_EV $ALPHA_SET0 \ +event { \ + code $VK_MOUSE_LEFT \ + code $VK_RIGHT \ + \ + time 1 \ + \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_INC_STATE \ + ev_data $OPT_ID 0 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_GET_OPTION $OPT_CODE 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_UPDATE_OPTION $OPT_CODE 0 0 \ + start_time 0 \ + } \ +} \ +event { \ + code $VK_MOUSE_RIGHT \ + code $VK_LEFT \ + \ + time 1 \ + \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_DEC_STATE \ + ev_data $OPT_ID 0 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_GET_OPTION $OPT_CODE 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_UPDATE_OPTION $OPT_CODE 0 0 \ + start_time 0 \ + } \ +} + + +#define PRM_EV event { \ + code $VK_MOUSE_LEFT \ + code $VK_RIGHT \ + \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_INC_MM_OPTION $ACS_GRAPHICS_SCR $PRM_ID 0 \ + start_time 0 \ + } \ + } \ + event { \ + code $VK_MOUSE_RIGHT \ + code $VK_LEFT \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_DEC_MM_OPTION $ACS_GRAPHICS_SCR $PRM_ID 0 \ + start_time 0 \ + } \ + } + +// Options Screens... +#define OPT_X0 50 +screen { + ID $ACS_GRAPHICS_SCR + + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + obj_index 3 $ACS_GR_SCREEN_RES1 + + str_len 25 + string $ACS_DONE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + #define OPT_CODE $ACS_OPT_FULLSCREEN + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_GET_OPTION $OPT_CODE 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_UPDATE_OPTION $OPT_CODE 0 0 + start_time 0 + } + #define OPT_CODE $ACS_OPT_COLOR_DEPTH + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_GET_OPTION $OPT_CODE 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_UPDATE_OPTION $OPT_CODE 0 0 + start_time 0 + } + #define OPT_CODE $ACS_OPT_RESOLUTION + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_GET_OPTION $OPT_CODE 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_UPDATE_OPTION $OPT_CODE 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_OPTIONS_SCR 0 0 0 + start_time 0 + } + } + event { + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + #define OPT_CODE $ACS_OPT_FULLSCREEN + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_OPTION $OPT_CODE 0 0 + start_time 0 + } + #define OPT_CODE $ACS_OPT_COLOR_DEPTH + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_OPTION $OPT_CODE 0 0 + start_time 0 + } + #define OPT_CODE $ACS_OPT_RESOLUTION + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_OPTION $OPT_CODE 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_OPTIONS_SCR 0 0 0 + start_time 0 + } + } + } + + #define OPT_MENU_SZ 10 + + #define INTRO_Y 8 + + #define PRM_X0 120 + #define PRM_X "$OPT_X0 + $OPT_DX + $OPT_SX0" + + object { + ID $ACS_INTRO_TXT + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET00 + + flag 0x04 + + str_len 25 + string $ACS_IntroStr + font $PRM_FNT + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X0 + y "-30 + (480 - ($OPT_SY0 + $OPT_DY) * $OPT_MENU_SZ)/2 + $INTRO_Y * ($OPT_SY0 + $OPT_DY)" + + size_x $PRM_MENU_SX0 + size_y $PRM_MENU_SY + } + object { + ID $ACS_INTRO_PRM + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + str_len 5 + + max_state 1 + state_str $ACS_OFF_STR + state_str $ACS_ON_STR + + font $PRM_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X + y "-30 + (480 - ($OPT_SY0 + $OPT_DY) * $OPT_MENU_SZ)/2 + $INTRO_Y * ($OPT_SY0 + $OPT_DY)" + + size_x $OPT_SX1 + size_y $PRM_MENU_SY + + flag $ACS_MOUSE_SELECT + + #define PRM_ID $ACS_INTRO_PRM + $PRM_EV + } + + #define OPT_ID $ACS_GR_SCREEN_RES + #define OPT_SX $OPT_SX0 + #define OPT_X $OPT_X0 + #define OPT_Y 0 + #define OPT_STR $ACS_GR_SCREEN_RES_STR + #define OPT_COLOR_SET $COLOR_SET2 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + } + + #define OPT_ID $ACS_GR_SCREEN_RES1 + #define OPT_SX $OPT_SX1 + #define OPT_X "$OPT_X0 + $OPT_DX + $OPT_SX0" + #define OPT_Y 0 + #define OPT_STR $ACS_1280_STR + #define OPT_COLOR_SET $COLOR_SET0 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + + max_state 5 + + obj_index 1 $ACS_BACK_OPTION + + state_str $ACS_640_STR + state_str $ACS_800_STR + state_str $ACS_1024_STR + state_str $ACS_1152_STR + state_str $ACS_1280_STR + state_str $ACS_1600_STR + + #define OPT_CODE $ACS_OPT_RESOLUTION + $ALPHA_SET0 + event { + code $VK_MOUSE_LEFT + code $VK_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_INC_STATE + ev_data $OPT_ID 0 0 0 + start_time 0 + } + } + event { + code $VK_MOUSE_RIGHT + code $VK_LEFT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_DEC_STATE + ev_data $OPT_ID 0 0 0 + start_time 0 + } + } + } + + #define OPT_ID $ACS_GR_COLOR_DEPTH + #define OPT_SX $OPT_SX0 + #define OPT_X $OPT_X0 + #define OPT_Y 1 + #define OPT_STR $ACS_GR_COLOR_DEPTH_STR + #define OPT_COLOR_SET $COLOR_SET2 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + } + + #define OPT_ID $ACS_GR_COLOR_DEPTH1 + #define OPT_SX $OPT_SX1 + #define OPT_X "$OPT_X0 + $OPT_DX + $OPT_SX0" + #define OPT_Y 1 + #define OPT_STR $ACS_GR_COLOR_DEPTH_STR16 + #define OPT_COLOR_SET $COLOR_SET0 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + + max_state 1 + +// obj_index 1 $ACS_BACK_OPTION + + state_str $ACS_GR_COLOR_DEPTH_STR16 + state_str $ACS_GR_COLOR_DEPTH_STR32 + + #define OPT_CODE $ACS_OPT_COLOR_DEPTH + $ALPHA_SET0 + event { + code $VK_MOUSE_LEFT + code $VK_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_INC_STATE + ev_data $OPT_ID 0 0 0 + start_time 0 + } + } + event { + code $VK_MOUSE_RIGHT + code $VK_LEFT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_DEC_STATE + ev_data $OPT_ID 0 0 0 + start_time 0 + } + } + } + + #define OPT_ID $ACS_GR_FULLSCR + #define OPT_SX $OPT_SX0 + #define OPT_X $OPT_X0 + #define OPT_Y 2 + #define OPT_STR $ACS_GR_FULLSCR_STR + #define OPT_COLOR_SET $COLOR_SET2 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + } + + #define OPT_ID $ACS_GR_FULLSCR1 + #define OPT_SX $OPT_SX1 + #define OPT_X "$OPT_X0 + $OPT_DX + $OPT_SX0" + #define OPT_Y 2 + #define OPT_STR $ACS_GR_FULLSCR_MODE_STR + #define OPT_COLOR_SET $COLOR_SET0 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + + max_state 1 + +// obj_index 1 $ACS_BACK_OPTION + + state_str $ACS_GR_WINDOW_MODE_STR + state_str $ACS_GR_FULLSCR_MODE_STR + + #define OPT_CODE $ACS_OPT_FULLSCR + $ALPHA_SET0 + event { + code $VK_MOUSE_LEFT + code $VK_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_INC_STATE + ev_data $OPT_ID 0 0 0 + start_time 0 + } + } + event { + code $VK_MOUSE_RIGHT + code $VK_LEFT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_DEC_STATE + ev_data $OPT_ID 0 0 0 + start_time 0 + } + } + } + + #define OPT_ID $ACS_GR_SHADOWS + #define OPT_SX $OPT_SX0 + #define OPT_X $OPT_X0 + #define OPT_Y 4 + #define OPT_STR $ACS_GR_SHADOWS_STR + #define OPT_COLOR_SET $COLOR_SET2 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + } + + #define OPT_ID $ACS_GR_SHADOWS1 + #define OPT_SX $OPT_SX1 + #define OPT_X "$OPT_X0 + $OPT_DX + $OPT_SX0" + #define OPT_Y 4 + #define OPT_STR $ACS_OFF_STR + #define OPT_COLOR_SET $COLOR_SET0 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + max_state 1 + state_str $ACS_OFF_STR + state_str $ACS_ON_STR + + #define OPT_CODE $ACS_OPT_SHADOWS + $OPT_EV + } + + #define OPT_ID $ACS_GR_SKY + #define OPT_SX $OPT_SX0 + #define OPT_X $OPT_X0 + #define OPT_Y 5 + #define OPT_STR $ACS_GR_SKY_STR + #define OPT_COLOR_SET $COLOR_SET2 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + } + + #define OPT_ID $ACS_GR_SKY1 + #define OPT_SX $OPT_SX1 + #define OPT_X "$OPT_X0 + $OPT_DX + $OPT_SX0" + #define OPT_Y 5 + #define OPT_STR $ACS_HIGH_STR + #define OPT_COLOR_SET $COLOR_SET0 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + max_state 1 + state_str $ACS_LOW_STR + state_str $ACS_HIGH_STR + + #define OPT_CODE $ACS_OPT_SKY + $OPT_EV + } + + #define OPT_ID $ACS_GR_FURROWS + #define OPT_SX $OPT_SX0 + #define OPT_X $OPT_X0 + #define OPT_Y 6 + #define OPT_STR $ACS_GR_FURROWS_STR + #define OPT_COLOR_SET $COLOR_SET2 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + } + + #define OPT_ID $ACS_GR_FURROWS1 + #define OPT_SX $OPT_SX1 + #define OPT_X "$OPT_X0 + $OPT_DX + $OPT_SX0" + #define OPT_Y 6 + #define OPT_STR $ACS_OFF_STR + #define OPT_COLOR_SET $COLOR_SET0 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + max_state 1 + state_str $ACS_OFF_STR + state_str $ACS_ON_STR + + #define OPT_CODE $ACS_OPT_FURROWS + $OPT_EV + } + + #define OPT_ID $ACS_GR_CHROME + #define OPT_SX $OPT_SX0 + #define OPT_X $OPT_X0 + #define OPT_Y 7 + #define OPT_STR $ACS_GR_CHROME_STR + #define OPT_COLOR_SET $COLOR_SET2 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + } + + #define OPT_ID $ACS_GR_CHROME1 + #define OPT_SX $OPT_SX1 + #define OPT_X "$OPT_X0 + $OPT_DX + $OPT_SX0" + #define OPT_Y 7 + #define OPT_STR $ACS_OFF_STR + #define OPT_COLOR_SET $COLOR_SET0 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + max_state 1 + state_str $ACS_OFF_STR + state_str $ACS_ON_STR + + #define OPT_CODE $ACS_OPT_CHROME + $OPT_EV + } + + #define OPT_ID $ACS_GR_GAMMA + #define OPT_SX $OPT_SX0 + #define OPT_X $OPT_X0 + #define OPT_Y 3 + #define OPT_STR $ACS_GR_GAMMA_STR + #define OPT_COLOR_SET $COLOR_SET2 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + } + + #define OPT_ID $ACS_GR_GAMMA1 + #define OPT_SX $OPT_SX1 + #define OPT_X "$OPT_X0 + $OPT_DX + $OPT_SX0" + #define OPT_Y 3 + #define OPT_COLOR_SET $COLOR_SET0 + object { + type $ACS_SCROLLER_OBJ + flag 0x10 + $OPT_RES_BODY2 + $OPT_OBJ_BODY + + flag $ACS_MOUSE_SELECT + + $ALPHA_SET0 + $COLOR_SET0_S + + max_value 256 + cur_value 128 + + event { + code $VK_LEFT + + time 1 + + ev_comm { + code $ACS_DEC_SCROLLER + ev_data $OPT_ID 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_GET_OPTION $ACS_OPT_GAMMA 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_UPDATE_OPTION $ACS_OPT_GAMMA 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + } + event { + code $VK_RIGHT + + time 1 + + ev_comm { + code $ACS_INC_SCROLLER + ev_data $OPT_ID 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_GET_OPTION $ACS_OPT_GAMMA 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_UPDATE_OPTION $ACS_OPT_GAMMA 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + } + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_CHANGE_SCROLLER + ev_data $OPT_ID 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_GET_OPTION $ACS_OPT_GAMMA 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_UPDATE_OPTION $ACS_OPT_GAMMA 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + } + } +} +#define OPT_X0 100 + +screen { + ID $ACS_SOUND_SCR + + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + obj_index 3 $ACS_SND_EFFECTS1 + + flag 0x04 + + str_len 25 + string $ACS_DONE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_OPTIONS_SCR 0 0 0 + start_time 0 + } + } + } + + #define OPT_MENU_SZ 4 + + #define OPT_ID $ACS_SND_EFFECTS + #define OPT_SX $OPT_SX0 + #define OPT_X $OPT_X0 + #define OPT_Y 0 + #define OPT_STR $ACS_SND_EFFECTS_STR + #define OPT_COLOR_SET $COLOR_SET2 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + } + + #define OPT_ID $ACS_SND_EFFECTS1 + #define OPT_SX $OPT_SX1 + #define OPT_X "$OPT_X0 + $OPT_DX + $OPT_SX0" + #define OPT_Y 0 + #define OPT_STR $ACS_OFF_STR + #define OPT_COLOR_SET $COLOR_SET0 + object { + obj_index 1 $ACS_BACK_OPTION + + $OPT_RES_BODY + $OPT_OBJ_BODY + max_state 1 + state_str $ACS_OFF_STR + state_str $ACS_ON_STR + + #define OPT_CODE $ACS_OPT_SOUND + $OPT_EV + } + + #define OPT_ID $ACS_SND_EFF_VOL + #define OPT_SX $OPT_SX0 +// #define OPT_X $OPT_X0 + #define OPT_X "$OPT_X0 - 10" + #define OPT_Y 1 + #define OPT_STR $ACS_SND_EFF_VOL_STR + #define OPT_COLOR_SET $COLOR_SET2 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + } + + #define OPT_ID $ACS_SND_EFF_VOL1 + #define OPT_SX $OPT_SX1 +// #define OPT_X "$OPT_X0 + $OPT_DX + $OPT_SX0" + #define OPT_X "$OPT_X0 + $OPT_DX + $OPT_SX0 + 30" + #define OPT_Y 1 + #define OPT_STR $ACS_SND_MUS_VOL_STR + #define OPT_COLOR_SET $COLOR_SET0 + object { + type $ACS_SCROLLER_OBJ + flag 0x10 + $OPT_RES_BODY2 + $OPT_OBJ_BODY + + $ALPHA_SET0 + $COLOR_SET0_S + + flag $ACS_MOUSE_SELECT + + max_value 256 + cur_value 128 + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_CHANGE_SCROLLER + ev_data $OPT_ID 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_GET_OPTION $ACS_OPT_SOUND_VOL 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_UPDATE_OPTION $ACS_OPT_SOUND_VOL 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + } + event { + code $VK_LEFT + + time 1 + + ev_comm { + code $ACS_DEC_SCROLLER + ev_data $OPT_ID 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_GET_OPTION $ACS_OPT_SOUND_VOL 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_UPDATE_OPTION $ACS_OPT_SOUND_VOL 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + } + event { + code $VK_RIGHT + + time 1 + + ev_comm { + code $ACS_INC_SCROLLER + ev_data $OPT_ID 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_GET_OPTION $ACS_OPT_SOUND_VOL 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_UPDATE_OPTION $ACS_OPT_SOUND_VOL 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + } + } + + #define OPT_ID $ACS_SND_MUSIC + #define OPT_SX $OPT_SX0 + #define OPT_X $OPT_X0 + #define OPT_Y 2 + #define OPT_STR $ACS_SND_MUSIC_STR + #define OPT_COLOR_SET $COLOR_SET2 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + } + + #define OPT_ID $ACS_SND_MUSIC1 + #define OPT_SX $OPT_SX1 + #define OPT_X "$OPT_X0 + $OPT_DX + $OPT_SX0" + #define OPT_Y 2 + #define OPT_STR $ACS_OFF_STR + #define OPT_COLOR_SET $COLOR_SET0 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + max_state 1 + state_str $ACS_OFF_STR + state_str $ACS_ON_STR + + #define OPT_CODE $ACS_OPT_MUSIC + $OPT_EV + } + + #define OPT_ID $ACS_SND_MUS_VOL + #define OPT_SX $OPT_SX0 +// #define OPT_X $OPT_X0 + #define OPT_X "$OPT_X0 - 10" + #define OPT_Y 3 + #define OPT_STR $ACS_SND_MUS_VOL_STR + #define OPT_COLOR_SET $COLOR_SET2 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + } + + #define OPT_ID $ACS_SND_MUS_VOL1 + #define OPT_SX $OPT_SX1 +// #define OPT_X "$OPT_X0 + $OPT_DX + $OPT_SX0" + #define OPT_X "$OPT_X0 + $OPT_DX + $OPT_SX0 + 30" + #define OPT_Y 3 + #define OPT_STR $ACS_SND_MUS_VOL_STR + #define OPT_COLOR_SET $COLOR_SET0 + object { + type $ACS_SCROLLER_OBJ + flag 0x10 + $OPT_RES_BODY2 + $OPT_OBJ_BODY + + $ALPHA_SET0 + $COLOR_SET0_S + + flag $ACS_MOUSE_SELECT + + max_value 256 + cur_value 128 + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_CHANGE_SCROLLER + ev_data $OPT_ID 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_GET_OPTION $ACS_OPT_MUSIC_VOL 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_UPDATE_OPTION $ACS_OPT_MUSIC_VOL 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + } + event { + code $VK_LEFT + + time 1 + + ev_comm { + code $ACS_DEC_SCROLLER + ev_data $OPT_ID 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_GET_OPTION $ACS_OPT_MUSIC_VOL 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_UPDATE_OPTION $ACS_OPT_MUSIC_VOL 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + } + event { + code $VK_RIGHT + + time 1 + + ev_comm { + code $ACS_INC_SCROLLER + ev_data $OPT_ID 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_GET_OPTION $ACS_OPT_MUSIC_VOL 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_UPDATE_OPTION $ACS_OPT_MUSIC_VOL 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + } + } +/* + object { + ID $ACS_SOUNDTRACK + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_SOUNDTRACK_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x 380 + y 430 + + size_x 250 + size_y $OBJ_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_CD_SCR 0 0 0 + start_time 0 + } + } + } +*/ +} + +#define PRM_EV event { \ + code $VK_MOUSE_LEFT \ + code $VK_RIGHT \ + \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_INC_MM_OPTION $ACS_RACE_CFG_SCR $PRM_ID 0 \ + start_time 0 \ + } \ + } \ + event { \ + code $VK_MOUSE_RIGHT \ + code $VK_LEFT \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_DEC_MM_OPTION $ACS_RACE_CFG_SCR $PRM_ID 0 \ + start_time 0 \ + } \ + } +/* +screen { + ID $ACS_RACE_CFG_SCR + + #define PRM_MENU_SIZE 5 + + #define LAPS_Y 0 + #define ROBOTS_Y 1 + #define ARCANES_Y 2 + #define TS_Y 3 + #define ESS_Y 4 + + #define PRM_X0 120 + #define PRM_X 430 + + object { + ID $ACS_NUM_LAPS_TXT + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET00 + + flag 0x04 + + str_len 25 + string $ACS_NumLapsStr + font $PRM_FNT + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X0 + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $LAPS_Y" + + size_x $PRM_MENU_SX0 + size_y $PRM_MENU_SY + } + object { + ID $ACS_NUM_LAPS_PRM + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + obj_index 1 $ACS_BACK_OPTION + + flag 0x04 + + str_len 3 + + string "1" + + font $PRM_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $LAPS_Y" + + size_x $PRM_MENU_SX + size_y $PRM_MENU_SY + + flag $ACS_MOUSE_SELECT + + #define PRM_ID $ACS_NUM_LAPS_PRM + $PRM_EV + } + object { + ID $ACS_NUM_ROBOTS_TXT + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET00 + + flag 0x04 + + str_len 25 + string $ACS_NumRobotsStr + font $PRM_FNT + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X0 + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $ROBOTS_Y" + + size_x $PRM_MENU_SX0 + size_y $PRM_MENU_SY + } + object { + ID $ACS_NUM_ROBOTS_PRM + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + str_len 3 + + string "1" + + font $PRM_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $ROBOTS_Y" + + size_x $PRM_MENU_SX + size_y $PRM_MENU_SY + + flag $ACS_MOUSE_SELECT + + #define PRM_ID $ACS_NUM_ROBOTS_PRM + $PRM_EV + } + object { + ID $ACS_BOT_ARCANES_TXT + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET00 + + flag 0x04 + + str_len 25 + string $ACS_BotArcanesStr + font $PRM_FNT + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X0 + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $ARCANES_Y" + + size_x $PRM_MENU_SX0 + size_y $PRM_MENU_SY + } + object { + ID $ACS_BOT_ARCANES_PRM + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + str_len 5 + + max_state 1 + state_str $ACS_NO_STR + state_str $ACS_YES_STR + + font $PRM_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $ARCANES_Y" + + size_x $PRM_MENU_SX + size_y $PRM_MENU_SY + + flag $ACS_MOUSE_SELECT + + #define PRM_ID $ACS_BOT_ARCANES_PRM + $PRM_EV + } + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_DONE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + obj_index 3 $ACS_NUM_LAPS_PRM + + $BACK_COORDS + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_OPTIONS_SCR 0 0 0 + start_time 1 + } + } + } +} +*/ +#define PRM_EV event { \ + code $VK_MOUSE_LEFT \ + code $VK_RIGHT \ + \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_INC_MM_OPTION $ACS_TB_CFG_SCR $PRM_ID 0 \ + start_time 0 \ + } \ + } \ + event { \ + code $VK_MOUSE_RIGHT \ + code $VK_LEFT \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_DEC_MM_OPTION $ACS_TB_CFG_SCR $PRM_ID 0 \ + start_time 0 \ + } \ + } + +screen { + ID $ACS_TB_CFG_SCR + + #define PRM_MENU_SIZE 1 + + #define TIPS_Y 0 + + #define PRM_X0 120 + #define PRM_X 430 + + object { + ID $ACS_TIPS_TXT + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET00 + + flag 0x04 + + str_len 25 + string $ACS_TipsStr + font $PRM_FNT + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X0 + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $TIPS_Y" + + size_x $PRM_MENU_SX0 + size_y $PRM_MENU_SY + } + object { + ID $ACS_TIPS_PRM + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + str_len 5 + + max_state 1 + state_str $ACS_OFF_STR + state_str $ACS_ON_STR + + font $PRM_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $TIPS_Y" + + size_x $PRM_MENU_SX + size_y $PRM_MENU_SY + + flag $ACS_MOUSE_SELECT + + #define PRM_ID $ACS_TIPS_PRM + $PRM_EV + + obj_index 1 $ACS_BACK_OPTION + } + + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_DONE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + obj_index 3 $ACS_TIPS_PRM + + $BACK_COORDS + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_OPTIONS_SCR 0 0 0 + start_time 1 + } + } + } +} + +#define CONTROL_OBJS object { \ + ID $CTL_TXT_ID \ + type $ACS_INPUT_FIELD_OBJ \ + $ALPHA_SET1 \ + \ + flag 0x04 \ + \ + str_len 25 \ + string $CTL_TXT_STR \ + font $CONTROLS_FNT \ + $COLOR_SET00 \ + \ + palette $ACS_MAIN_MENU_PAL0 \ + \ + x $CTL_TXT_X \ + y "$CTL_MENU_START_Y + (480 - ($CTL_SY + $CTL_DELTA) * $CTL_MENU_SZ)/2 + ($CTL_SY + $CTL_DELTA ) * $CTL_Y" \ + \ + size_x $CTL_TXT_SX \ + size_y $CTL_SY \ + } \ + \ + object { \ + ID $CTL_ID \ + type $ACS_INPUT_FIELD_OBJ \ + $ALPHA_SET0 \ + \ + obj_index 1 $CTL_UP \ + \ + flag 0x04 \ + \ + str_len 25 \ + string $ACS_NoneStr \ + font $CONTROLS_FNT \ + $COLOR_SET0 \ + \ + palette $ACS_MAIN_MENU_PAL0 \ + \ + x $CTL_X \ + y "$CTL_MENU_START_Y + (480 - ($CTL_SY + $CTL_DELTA) * $CTL_MENU_SZ)/2 + ($CTL_SY + $CTL_DELTA ) * $CTL_Y" \ + \ + size_x $CTL_SX \ + size_y $CTL_SY \ + event { \ + code $VK_MOUSE_LEFT \ + code $VK_MOUSE_RIGHT \ + \ + time 2 \ + \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_INPUT_KEYNAME \ + ev_data $CTL_ID 0 0 0 \ + start_time 1 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_UPDATE_MM_OPTION $SCR_ID $CTL_ID 0 \ + start_time 2 \ + } \ + } \ + } + + +screen { + ID $ACS_CONTROLS_SCR + #define SCR_ID $ACS_CONTROLS_SCR + + #define CTL_MENU_SZ 15 + #define CTL_MENU_START_Y -50 + + #define CTL_DELTA 3 + #define CTL_MENU_START_Y 0 + + #define CTL_SX 100 + #define CTL_SY 20 + #define CTL_TXT_SX 200 + + #define CTL_TXT_X 100 + #define CTL_X 450 + + #define OPTIONS_MENU_SIZE 7 +/* + object { + ID 1 + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_RESET_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2" + y "$OPTIONS_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $OPTIONS_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * 6" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 3 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_RESET_CONTROLS 0 0 0 + start_time 0 + } + } + } +*/ + object { + ID $ACS_CONTROLS_SINGLE_SCR + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + obj_index 1 $ACS_BACK_OPTION + + str_len 25 + string $MCH_CONTROLS_SINGLE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2" + y "$OPTIONS_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $OPTIONS_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * 1" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 3 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SELECT_CONTROLLER 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_PREV_SCR_ID $ACS_CONTROLS_SINGLE_SCR $ACS_CONTROLS_SCR 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_CONTROLS_SINGLE_SCR 0 0 0 + start_time 0 + } + } + } + + object { + ID $ACS_CONTROLS_SPLIT_SCR + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $MCH_CONTROLS_SPLIT_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2" + y "$OPTIONS_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $OPTIONS_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * 2" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 3 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_CONTROLS_SPLIT_SCR 0 0 0 + start_time 0 + } + } + } + + object { + ID $ACS_CONTROLS_HOTSEAT_SCR + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + obj_index 3 $ACS_JOY_PRM2 + + str_len 25 + string $MCH_CONTROLS_HOTSEAT_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2" + y "$OPTIONS_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $OPTIONS_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * 3" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 3 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_CONTROLS_HOTSEAT_SCR 0 0 0 + start_time 0 + } + } + } + + #define CTL_Y 10 + #define CTL_UP $ACS_CONTROLS_HOTSEAT_SCR + + object { // Joystick on/off + ID $ACS_JOY_TXT2 + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET1 + + flag 0x04 + + str_len 25 + string $ACS_JOYSTICK_STR + font 1 + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x $CTL_TXT_X + y "$CTL_MENU_START_Y + (480 - ($CTL_SY + $CTL_DELTA) * $CTL_MENU_SZ)/2 + ($CTL_SY + $CTL_DELTA ) * $CTL_Y" + + size_x $CTL_TXT_SX + size_y $CTL_SY + } + + object { + ID $ACS_JOY_PRM2 + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + obj_index 1 $CTL_UP + + flag 0x04 + + max_state 1 + state_str $ACS_OFF_STR + state_str $ACS_ON_STR + + str_len 25 + string $ACS_OFF_STR + font 1 + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x $CTL_X + y "$CTL_MENU_START_Y + (480 - ($CTL_SY + $CTL_DELTA) * $CTL_MENU_SZ)/2 + ($CTL_SY + $CTL_DELTA ) * $CTL_Y" + + size_x $CTL_SX + size_y $CTL_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_INC_MM_OPTION $SCR_ID $ACS_JOY_PRM2 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_UPDATE_MM_OPTION $SCR_ID $ACS_JOY_PRM2 0 + start_time 1 + } + } + } + + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + obj_index 1 $ACS_JOY_PRM2 + obj_index 3 $ACS_CONTROLS_SINGLE_SCR + + flag 0x04 + + str_len 25 + string $ACS_DONE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_OPTIONS_SCR 0 0 0 + start_time 0 + } + } + } +} + +screen { + ID $ACS_CONTROLS_SPLIT_SCR + + #define OPTIONS_MENU_SIZE 2 + + object { + ID 1 + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + obj_index 1 $ACS_BACK_OPTION + + str_len 25 + string $ACS_PLAYER1_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2" + y "$OPTIONS_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $OPTIONS_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * 0" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 3 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SELECT_CONTROLLER 1 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_PREV_SCR_ID $ACS_CONTROLS_SINGLE_SCR $ACS_CONTROLS_SPLIT_SCR 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_CONTROLS_SINGLE_SCR 0 0 0 + start_time 0 + } + } + } + + object { + ID 2 + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_PLAYER2_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2" + y "$OPTIONS_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $OPTIONS_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * 1" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 3 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SELECT_CONTROLLER 2 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_PREV_SCR_ID $ACS_CONTROLS_SINGLE_SCR $ACS_CONTROLS_SPLIT_SCR 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_CONTROLS_SINGLE_SCR 0 0 0 + start_time 0 + } + } + } + + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + obj_index 3 1 + + flag 0x04 + + str_len 25 + string $ACS_DONE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_CONTROLS_SCR 0 0 0 + start_time 0 + } + } + } +} + +screen { + ID $ACS_CONTROLS_SINGLE_SCR + #define SCR_ID $ACS_CONTROLS_SINGLE_SCR + + #define CTL_MENU_SZ 15 + + #define CTL_MENU_START_Y -50 + + #define CTL_UP $ACS_BACK_OPTION + #define CTL_Y 0 + #define CTL_ID $MCH_KEY_MOVE_FORWARD + #define CTL_TXT_ID $MCH_KEY_MOVE_FORWARD_TXT + #define CTL_TXT_STR $MCH_KEY_MOVE_FORWARD_STR + $CONTROL_OBJS + + #define CTL_UP -1 + + #define CTL_Y 1 + #define CTL_ID $MCH_KEY_MOVE_BACKWARD + #define CTL_TXT_ID $MCH_KEY_MOVE_BACKWARD_TXT + #define CTL_TXT_STR $MCH_KEY_MOVE_BACKWARD_STR + $CONTROL_OBJS + + #define CTL_Y 2 + #define CTL_ID $MCH_KEY_TURN_LEFT + #define CTL_TXT_ID $MCH_KEY_TURN_LEFT_TXT + #define CTL_TXT_STR $MCH_KEY_TURN_LEFT_STR + $CONTROL_OBJS + + #define CTL_Y 3 + #define CTL_ID $MCH_KEY_TURN_RIGHT + #define CTL_TXT_ID $MCH_KEY_TURN_RIGHT_TXT + #define CTL_TXT_STR $MCH_KEY_TURN_RIGHT_STR + $CONTROL_OBJS + + #define CTL_Y 4 + #define CTL_ID $MCH_KEY_ZOOM_IN + #define CTL_TXT_ID $MCH_KEY_ZOOM_IN_TXT + #define CTL_TXT_STR $MCH_KEY_ZOOM_IN_STR + $CONTROL_OBJS + + #define CTL_Y 5 + #define CTL_ID $MCH_KEY_ZOOM_OUT + #define CTL_TXT_ID $MCH_KEY_ZOOM_OUT_TXT + #define CTL_TXT_STR $MCH_KEY_ZOOM_OUT_STR + $CONTROL_OBJS + + #define CTL_Y 6 + #define CTL_ID $MCH_KEY_CENTER_VIEW + #define CTL_TXT_ID $MCH_KEY_CENTER_VIEW_TXT + #define CTL_TXT_STR $MCH_KEY_CENTER_VIEW_STR + $CONTROL_OBJS + + #define CTL_Y 7 + #define CTL_ID $MCH_KEY_SET_ARCANE0 + #define CTL_TXT_ID $MCH_KEY_SET_ARCANE0_TXT + #define CTL_TXT_STR $MCH_KEY_SET_ARCANE0_STR + $CONTROL_OBJS + + #define CTL_Y 8 + #define CTL_ID $MCH_KEY_SET_ARCANE1 + #define CTL_TXT_ID $MCH_KEY_SET_ARCANE1_TXT + #define CTL_TXT_STR $MCH_KEY_SET_ARCANE1_STR + $CONTROL_OBJS + + #define CTL_Y 9 + #define CTL_ID $MCH_KEY_SET_ARCANE2 + #define CTL_TXT_ID $MCH_KEY_SET_ARCANE2_TXT + #define CTL_TXT_STR $MCH_KEY_SET_ARCANE2_STR + $CONTROL_OBJS + + #define CTL_Y 10 + #define CTL_ID $MCH_KEY_OK + #define CTL_TXT_ID $MCH_KEY_OK_TXT + #define CTL_TXT_STR $MCH_KEY_OK_STR + $CONTROL_OBJS + + #define CTL_Y 11 + #define CTL_ID $MCH_KEY_CANCEL + #define CTL_TXT_ID $MCH_KEY_CANCEL_TXT + #define CTL_TXT_STR $MCH_KEY_CANCEL_STR + $CONTROL_OBJS + + #define CTL_Y 12 + #define CTL_ID $MCH_KEY_SLOPE_CAM + #define CTL_TXT_ID $MCH_KEY_SLOPE_CAM_TXT + #define CTL_TXT_STR $MCH_KEY_SLOPE_CAM_STR + $CONTROL_OBJS + + #define CTL_Y 13 + #define CTL_ID $MCH_KEY_HORN + #define CTL_TXT_ID $MCH_KEY_HORN_TXT + #define CTL_TXT_STR $MCH_KEY_HORN_STR + $CONTROL_OBJS + + #define CTL_Y 14 + #define CTL_ID $MCH_KEY_MAP + #define CTL_TXT_ID $MCH_KEY_MAP_TXT + #define CTL_TXT_STR $MCH_KEY_MAP_STR + $CONTROL_OBJS + + + #define CTL_Y 16 + + object { // Joystick on/off + ID $ACS_JOY_TXT + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET1 + + flag 0x04 + + str_len 25 + string $ACS_JOYSTICK_STR + font 1 + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x $CTL_TXT_X + y "$CTL_MENU_START_Y + (480 - ($CTL_SY + $CTL_DELTA) * $CTL_MENU_SZ)/2 + ($CTL_SY + $CTL_DELTA ) * $CTL_Y" + + size_x $CTL_TXT_SX + size_y $CTL_SY + } + + object { + ID $ACS_JOY_PRM + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + obj_index 1 $CTL_UP + + flag 0x04 + + max_state 1 + state_str $ACS_OFF_STR + state_str $ACS_ON_STR + + str_len 25 + string $ACS_OFF_STR + font 1 + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x $CTL_X + y "$CTL_MENU_START_Y + (480 - ($CTL_SY + $CTL_DELTA) * $CTL_MENU_SZ)/2 + ($CTL_SY + $CTL_DELTA ) * $CTL_Y" + + size_x $CTL_SX + size_y $CTL_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_INC_MM_OPTION $SCR_ID $ACS_JOY_PRM 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_UPDATE_MM_OPTION $SCR_ID $ACS_JOY_PRM 0 + start_time 1 + } + } + } + + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + obj_index 3 $MCH_KEY_MOVE_FORWARD + obj_index 0 1 + obj_index 2 1 + + flag 0x04 + + str_len 25 + string $ACS_DONE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS + y 420 + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SELECT_CONTROLLER 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_PREV + ev_data 0 0 0 0 + start_time 0 + } + } + } + object { + ID 1 + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_RESET_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS + x 320 + y 420 + + obj_index 0 $ACS_BACK_OPTION + obj_index 2 $ACS_BACK_OPTION + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 3 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_RESET_CONTROLS $ACS_CONTROLS_SINGLE_SCR 0 0 + start_time 0 + } + } + } +} + +screen { + ID $ACS_CONTROLS_HOTSEAT_SCR + #define SCR_ID $ACS_CONTROLS_HOTSEAT_SCR + + #define CTL_TXT_X 110 + + #define CTL_MENU_SZ 7 + + #define CTL_UP $ACS_BACK_OPTION + #define CTL_Y 0 + #define CTL_ID $MCH_KEY_START_TIME + #define CTL_TXT_ID $MCH_KEY_START_TIME_TXT + #define CTL_TXT_STR $MCH_KEY_START_TIME_STR + $CONTROL_OBJS + + #define CTL_UP -1 + + #define CTL_Y 1 + #define CTL_ID $MCH_KEY_REMOVE_SEED + #define CTL_TXT_ID $MCH_KEY_REMOVE_SEED_TXT + #define CTL_TXT_STR $MCH_KEY_REMOVE_SEED_STR + $CONTROL_OBJS + + #define CTL_Y 2 + #define CTL_ID $MCH_KEY_ROTATE_CAM + #define CTL_TXT_ID $MCH_KEY_ROTATE_CAM_TXT + #define CTL_TXT_STR $MCH_KEY_ROTATE_CAM_STR + $CONTROL_OBJS + + #define CTL_Y 3 + #define CTL_ID $MCH_KEY_REPLAY + #define CTL_TXT_ID $MCH_KEY_REPLAY_TXT + #define CTL_TXT_STR $MCH_KEY_REPLAY_STR + $CONTROL_OBJS + + #define CTL_Y 4 + #define CTL_ID $MCH_KEY_REPLAY_ALL + #define CTL_TXT_ID $MCH_KEY_REPLAY_ALL_TXT + #define CTL_TXT_STR $MCH_KEY_REPLAY_ALL_STR + $CONTROL_OBJS + + #define CTL_Y 5 + #define CTL_ID $MCH_KEY_SLOW_TIME + #define CTL_TXT_ID $MCH_KEY_SLOW_TIME_TXT + #define CTL_TXT_STR $MCH_KEY_SLOW_TIME_STR + $CONTROL_OBJS + + #define CTL_Y 6 + #define CTL_ID $MCH_KEY_FAST_TIME + #define CTL_TXT_ID $MCH_KEY_FAST_TIME_TXT + #define CTL_TXT_STR $MCH_KEY_FAST_TIME_STR + $CONTROL_OBJS + +/* + #define CTL_Y 2 + #define CTL_ID $MCH_KEY_NEXT_SEED + #define CTL_TXT_ID $MCH_KEY_NEXT_SEED_TXT + #define CTL_TXT_STR $MCH_KEY_NEXT_SEED_STR + $CONTROL_OBJS +*/ + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + obj_index 3 $MCH_KEY_START_TIME + obj_index 1 $MCH_KEY_FAST_TIME + obj_index 0 1 + obj_index 2 1 + + flag 0x04 + + str_len 25 + string $ACS_DONE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_CONTROLS_SCR 0 0 0 + start_time 0 + } + } + } + object { + ID 1 + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_RESET_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS +// x 340 + x 320 + + obj_index 0 $ACS_BACK_OPTION + obj_index 2 $ACS_BACK_OPTION + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 3 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_RESET_CONTROLS $ACS_CONTROLS_HOTSEAT_SCR 0 0 + start_time 0 + } + } + } + + #define CTL_TXT_X 100 +} + +#define ESSENCE_OBJ object { \ + ID "$ACS_ESSENCE_OBJ + $ESS_ID" \ + \ + $ALPHA_SET0 \ + \ + x 20 \ + y 20 \ + \ + size_x 80 \ + size_y 80 \ + \ + flag 0x2000 \ + \ + event { \ + code $VK_MOUSE_LEFT \ + code $VK_MOUSE_RIGHT \ + \ + time 2 \ + \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_ESSENCE_EVENT $ESS_ID 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_CHANGE_SCREEN \ + ev_data $ACS_MAIN_MENU_SCR2 0 0 0 \ + start_time 1 \ + } \ + } \ + } + +screen { + ID $ACS_ESSENCE_SCR + + event { + code $ACS_STARTUP_KEY + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_INIT_ESSENCES 0 0 0 + } + } + event { + code $VK_ESCAPE + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_MAIN_MENU_SCR2 0 0 0 + start_time 2 + } + } + + #define ESS_ID 0 + $ESSENCE_OBJ + + #define ESS_ID 1 + $ESSENCE_OBJ + + #define ESS_ID 2 + $ESSENCE_OBJ + + #define ESS_ID 3 + $ESSENCE_OBJ + + #define ESS_ID 4 + $ESSENCE_OBJ + + #define ESS_ID 5 + $ESSENCE_OBJ + + #define ESS_ID 6 + $ESSENCE_OBJ +} + +#include "ISCREEN\Scripts\I-World.inc" + +#define SAVE_OBJS object { \ + ID $SAVE_ID \ + type $ACS_INPUT_FIELD_OBJ \ + obj_index 1 "$UP_OBJ" \ + obj_index 3 "$DN_OBJ" \ + obj_index 0 "$SAVE_ID + 10" \ + obj_index 2 "$SAVE_ID + 10" \ + $ALPHA_SET0 \ + $COLOR_SET0 \ + \ + flag 0x04 \ + \ + str_len 10 \ + string "Mechosh" \ + font 1 \ + \ + palette $ACS_MAIN_MENU_PAL0 \ + \ + x 170 \ + y "70 + ($SAVE_ID - 1) * 40" \ + size_x 150 \ + size_y 40 \ + event { \ + code $VK_MOUSE_LEFT \ + code $VK_MOUSE_RIGHT \ + \ + time 1 \ + \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_SELECT_SAVE "$SAVE_ID - 1" 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_CHANGE_SCREEN \ + ev_data $ACS_MAIN_MENU_SCR2 0 0 0 \ + start_time 0 \ + } \ + } \ +} \ +object { \ + ID "$SAVE_ID + 10" \ + type $ACS_INPUT_FIELD_OBJ \ + obj_index 1 "$UP_OBJ2" \ + obj_index 3 "$DN_OBJ2" \ + obj_index 0 "$SAVE_ID" \ + obj_index 2 "$SAVE_ID" \ + $ALPHA_SET0 \ + $COLOR_SET0 \ + \ + flag 0x04 \ + \ + str_len 10 \ + string $ACS_DELETE_STR \ + font 2 \ + \ + palette $ACS_MAIN_MENU_PAL0 \ + \ + x 370 \ + y "70 + ($SAVE_ID - 1) * 40" \ + size_x 150 \ + size_y 40 \ + event { \ + code $VK_MOUSE_LEFT \ + code $VK_MOUSE_RIGHT \ + \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_DELETE_SAVE "$SAVE_ID - 1" 0 0 \ + start_time 0 \ + } \ + } \ +} + +screen { + ID $ACS_LOAD_GAME_SCR + + #define UP_OBJ 100 + #define UP_OBJ2 100 + #define DN_OBJ 2 + #define DN_OBJ2 12 + #define SAVE_ID 1 + $SAVE_OBJS + + #define UP_OBJ 1 + #define UP_OBJ2 11 + #define DN_OBJ 3 + #define DN_OBJ2 13 + #define SAVE_ID 2 + $SAVE_OBJS + + #define UP_OBJ 2 + #define UP_OBJ2 12 + #define DN_OBJ 4 + #define DN_OBJ2 14 + #define SAVE_ID 3 + $SAVE_OBJS + + #define UP_OBJ 3 + #define UP_OBJ2 13 + #define DN_OBJ 5 + #define DN_OBJ2 15 + #define SAVE_ID 4 + $SAVE_OBJS + + #define UP_OBJ 4 + #define UP_OBJ2 14 + #define DN_OBJ 6 + #define DN_OBJ2 16 + #define SAVE_ID 5 + $SAVE_OBJS + + #define UP_OBJ 5 + #define UP_OBJ2 15 + #define DN_OBJ 101 + #define DN_OBJ2 101 + #define SAVE_ID 6 + $SAVE_OBJS + + object { + ID 100 + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + obj_index 1 101 + obj_index 3 0 + obj_index 0 -1 + obj_index 2 -1 + + flag 0x04 + + str_len 25 + string $ACS_MORE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - 70) / 2" + y 20 + size_x 70 + size_y 40 + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SCROLL_SAVES 0 0 0 + start_time 0 + } + } + } + + object { + ID 101 + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + obj_index 1 5 + obj_index 3 100 + obj_index 0 -1 + obj_index 2 -1 + + flag 0x04 + + str_len 25 + string $ACS_MORE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - 70) / 2" + y 320 + size_x 70 + size_y 40 + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SCROLL_SAVES 1 0 0 + start_time 0 + } + } + } + + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + obj_index 0 -1 + obj_index 2 -1 + + str_len 25 + string $ACS_CANCEL_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_PREV + ev_data 0 0 0 0 + start_time 1 + } + } + } +} + +#define PRM_EV event { \ + code $VK_MOUSE_LEFT \ + code $VK_RIGHT \ + \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_INC_MM_OPTION $ACS_SPLIT_CFG_SCR $PRM_ID 0 \ + start_time 0 \ + } \ + } \ + event { \ + code $VK_MOUSE_RIGHT \ + code $VK_LEFT \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_DEC_MM_OPTION $ACS_SPLIT_CFG_SCR $PRM_ID 0 \ + start_time 0 \ + } \ + } + +#define PRM_FNT 2 + +screen { + ID $ACS_SPLIT_CFG_SCR + + #define PRM_MENU_SIZE 2 + + #define MODE_Y 0 + #define BOTS_Y 1 + + #define PRM_X0 50 + #define PRM_X 420 + + object { + ID $ACS_SPLIT_MODE_TXT + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET00 + + flag 0x04 + + str_len 25 + string $ACS_SPLIT_MODE_STR + font $PRM_FNT + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X0 + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $MODE_Y" + + size_x $PRM_MENU_SX0 + size_y $PRM_MENU_SY + } + object { + ID $ACS_SPLIT_MODE_PRM + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + obj_index 1 $ACS_BACK_OPTION + + flag 0x04 + + str_len 20 + + string "1" + + font $PRM_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $MODE_Y" + + size_x $PRM_MENU_SX + size_y $PRM_MENU_SY + + flag $ACS_MOUSE_SELECT + + max_state 1 + state_str $ACS_VERTICAL_STR + state_str $ACS_HORIZONTAL_STR + + #define PRM_ID $ACS_SPLIT_MODE_PRM + $PRM_EV + } + + object { + ID $ACS_SPLIT_BOTS_TXT + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET00 + + flag 0x04 + + str_len 25 + string $ACS_SPLIT_BOTS_STR + font $PRM_FNT + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X0 + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $BOTS_Y" + + size_x $PRM_MENU_SX0 + size_y $PRM_MENU_SY + } + object { + ID $ACS_SPLIT_BOTS_PRM + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + obj_index 3 $ACS_BACK_OPTION + + flag 0x04 + + str_len 20 + + string "1" + + font $PRM_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $BOTS_Y" + + size_x $PRM_MENU_SX + size_y $PRM_MENU_SY + + flag $ACS_MOUSE_SELECT + + max_state 1 + state_str $ACS_OFF_STR + state_str $ACS_ON_STR + + #define PRM_ID $ACS_SPLIT_BOTS_PRM + $PRM_EV + } + + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_DONE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + obj_index 1 $ACS_SPLIT_BOTS_PRM + obj_index 3 $ACS_SPLIT_MODE_PRM + + $BACK_COORDS + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_OPTIONS_SCR 0 0 0 + start_time 1 + } + } + } +} + +#define PRM_FNT 1 + +screen { + ID $ACS_MULTIPLAYER_SCR + + #define MAIN_MENU_SIZE 5 + + #define SPLIT_Y 2 + #define HS_Y 0 + #define HS2_Y 1 + #define OL_Y 4 + + object { + ID 3 + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_HOT_SEAT2_STR + font $MAIN_FNT + $COLOR_SET0 + +// obj_index 0 0 +// obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $HS2_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY +/* + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_NA_SCR 0 0 0 + start_time 0 + } + } +*/ + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_GAME_MODE $MCH_ENTIRE_CONTROL_HS 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_SPLIT_HS_SCR 0 0 0 + start_time 0 + } + } + } + +/* + object { + ID 4 + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_PBEM_STR + font $MAIN_FNT + $COLOR_SET0 + + obj_index 0 0 + obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $PBEM_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_NA_SCR 0 0 0 + start_time 0 + } + } + } +*/ + object { + ID 1 + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_SPLIT_SCREEN_STR + font $MAIN_FNT + $COLOR_SET0 + +// obj_index 0 0 +// obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $SPLIT_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_GAME_MODE $MCH_SINGLE_GAME 1 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SELECT_WORLD 7 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_ELECTIONARY_MODE 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_NEXT + ev_data 0 0 0 0 + start_time 1 + } + } + } + object { + ID 2 + type $ACS_INPUT_FIELD_OBJ + + obj_index 1 $ACS_BACK_OPTION + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_HOT_SEAT_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $HS_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_GAME_MODE $MCH_SPLIT_CONTROL_HS 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_SPLIT_HS_SCR 0 0 0 + start_time 0 + } + } + } + object { + ID 4 + type $ACS_INPUT_FIELD_OBJ + +// obj_index 1 $ACS_BACK_OPTION + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_ONLINE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $OL_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_MAIN_MENU_DUMMY_SCR3 0 0 0 + start_time 0 + } + } + } + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + obj_index 3 2 + obj_index 1 4 + + str_len 25 + string $ACS_BACK_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS +// x 90 + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_PREV + ev_data 0 0 0 0 + start_time 1 + } + } + } +} + +screen { + ID $ACS_SPLIT_HS_SCR + #define CUR_SCR $ACS_SPLIT_HS_SCR + + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + obj_index 1 $ACS_PLAYER4_MECHOS + obj_index 3 $ACS_PLAYER0_MECHOS + obj_index 0 $ACS_NEW_GAME_OPTION + obj_index 2 2 + + str_len 25 + string $ACS_BACK_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_MULTIPLAYER_SCR 0 0 0 + start_time 0 + } + } + } + object { + ID $ACS_NEW_GAME_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_START_STR + font $MAIN_FNT + $COLOR_SET0 + + obj_index 1 $ACS_PLAYER4_TYPE + obj_index 3 $ACS_PLAYER0_TYPE + obj_index 0 3 + obj_index 2 $ACS_BACK_OPTION + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS + x 470 + + size_x 100 + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_INIT_RACERS 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_NEXT + ev_data 0 0 0 0 + start_time 1 + } + } + } + + object { + ID 2 + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + flag 0x1000 + + obj_index 1 $ACS_PLAYER4_NAME + obj_index 3 $ACS_PLAYER0_NAME + obj_index 0 $ACS_BACK_OPTION + obj_index 2 3 + + str_len 10 + string " " + font $MAIN_FNT + $COLOR_SET0 +/* + obj_index 1 $ACS_PLAYER4_TYPE + obj_index 3 $ACS_PLAYER0_TYPE + obj_index 0 $ACS_BACK_OPTION + obj_index 2 $ACS_BACK_OPTION +*/ + palette $ACS_MAIN_MENU_PAL0 + + #define WSX 30 + + x "320 - $WSX - 5" + y 330 + + size_x $WSX + size_y 30 + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_CHANGE_HS_WORLD 0 0 0 + start_time 0 + } + } + } + + object { + ID 3 + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + flag 0x1000 + + obj_index 1 $ACS_PLAYER4_NAME + obj_index 3 $ACS_PLAYER0_NAME + obj_index 0 2 + obj_index 2 $ACS_NEW_GAME_OPTION + + str_len 10 + string " " + font $MAIN_FNT + $COLOR_SET0 +/* + obj_index 1 $ACS_PLAYER4_TYPE + obj_index 3 $ACS_PLAYER0_TYPE + obj_index 0 $ACS_BACK_OPTION + obj_index 2 $ACS_BACK_OPTION +*/ + palette $ACS_MAIN_MENU_PAL0 + + x "320 + 5" + y 330 + + size_x $WSX + size_y 30 + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_CHANGE_HS_WORLD 1 0 0 + start_time 0 + } + } + } + + object { + ID 1 + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET00 + + flag 0x04 + flag 0x1000 + + str_len 100 + string " " + font $MAIN_FNT + $COLOR_SET00 +/* + obj_index 1 $ACS_PLAYER4_TYPE + obj_index 3 $ACS_PLAYER0_TYPE + obj_index 0 $ACS_BACK_OPTION + obj_index 2 $ACS_BACK_OPTION +*/ + palette $ACS_MAIN_MENU_PAL0 + + #define WSX 100 + + x "(640 - $WSX)/2" + y 300 + + size_x $WSX + size_y 30 + } + + #define CTL_MENU_SZ 5 + #define CTL_MENU_START_Y -70 + #define CTL_SY 30 + #define CTL_DELTA 15 + + #define MECHOS_X 30 + #define MECHOS_SX 150 + #define MECHOS_SY 30 + + #define NAME_X 210 + #define NAME_SX 200 + + #define TYPE_X 460 + #define TYPE_SX 130 + + #define CTL_UP $ACS_NEW_GAME_OPTION + #define CTL_DOWN -1 + #define CTL_UP1 2 + #define CTL_DOWN1 -1 + #define CTL_UP2 $ACS_BACK_OPTION + #define CTL_DOWN2 -1 + + #define CTL_Y 0 + #define NAME_ID $ACS_PLAYER0_NAME + #define TYPE_ID $ACS_PLAYER0_TYPE + #define MECHOS_ID $ACS_PLAYER0_MECHOS + #include "iScreen\Scripts\player_cfg.inc" + + #define CTL_UP -1 + #define CTL_UP1 -1 + #define CTL_UP2 -1 + #define CTL_DOWN -1 + + #define CTL_Y 1 + #define NAME_ID $ACS_PLAYER1_NAME + #define TYPE_ID $ACS_PLAYER1_TYPE + #define MECHOS_ID $ACS_PLAYER1_MECHOS + #include "iScreen\Scripts\player_cfg.inc" + + #define CTL_Y 2 + #define NAME_ID $ACS_PLAYER2_NAME + #define TYPE_ID $ACS_PLAYER2_TYPE + #define MECHOS_ID $ACS_PLAYER2_MECHOS + #include "iScreen\Scripts\player_cfg.inc" + + #define CTL_Y 3 + #define NAME_ID $ACS_PLAYER3_NAME + #define TYPE_ID $ACS_PLAYER3_TYPE + #define MECHOS_ID $ACS_PLAYER3_MECHOS + #include "iScreen\Scripts\player_cfg.inc" + + #define CTL_UP -1 + #define CTL_DOWN $ACS_NEW_GAME_OPTION + #define CTL_DOWN2 $ACS_BACK_OPTION + #define CTL_UP1 -1 + #define CTL_DOWN1 2 + + #define CTL_Y 4 + #define NAME_ID $ACS_PLAYER4_NAME + #define TYPE_ID $ACS_PLAYER4_TYPE + #define MECHOS_ID $ACS_PLAYER4_MECHOS + #include "iScreen\Scripts\player_cfg.inc" +} + +#define BT_OBJ object { \ + ID "2 + $BT_ID" \ + type $ACS_INPUT_FIELD_OBJ \ + \ + $ALPHA_SET0 \ + obj_index 1 0 \ + obj_index 3 0 \ + obj_index 0 $BT_L \ + obj_index 2 $BT_R \ + \ + flag 0x04 \ + flag 0x800 \ + flag 0x1000 \ + \ + str_len 2 \ + string " " \ + font $MAIN_FNT \ + $COLOR_SET0 \ + \ + palette $ACS_MAIN_MENU_PAL0 \ + \ + x "200 + $WSX * $BT_ID + $BT_DX" \ + y 390 \ + \ + size_x $WSX \ + size_y $WSX \ + \ + event { \ + code $VK_MOUSE_LEFT \ + code $VK_SPACE \ + \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_CHANGE_PART $BT_ID 1 0 \ + start_time 0 \ + } \ + } \ + event { \ + code $VK_MOUSE_RIGHT \ + \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_CHANGE_PART $BT_ID 0 0 \ + start_time 0 \ + } \ + } \ + } + +screen { + ID $ACS_CONSTRUCT_SCR + + #define WSX 50 + + #define BT_ID 0 + #define BT_DX -15 + #define BT_L 100 + #define BT_R 3 + $BT_OBJ + + #define BT_ID 1 + #define BT_L 2 + #define BT_R 4 + #define BT_DX 0 + $BT_OBJ + #define BT_ID 2 + #define BT_L 3 + #define BT_R 5 + $BT_OBJ + #define BT_ID 3 + #define BT_L 4 + #define BT_R $ACS_BACK_OPTION + $BT_OBJ + + object { + ID 10 + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET00 + + obj_index 0 0 + obj_index 1 0 + obj_index 2 0 + obj_index 3 0 + + str_len 2 + string " " + font $MAIN_FNT + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x 300 + y 350 + + flag 0x1000 + + size_x 1 + size_y 1 + } + + object { + ID 1 + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + obj_index 0 0 + obj_index 1 0 + obj_index 2 0 + obj_index 3 0 + + flag 0x04 + flag 0x1000 + + str_len 2 + string " " + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + #define WSX 200 + + x "(640 - $WSX)/2" + y "(480 - $WSX)/2 - 90" + + size_x $WSX + size_y $WSX + } + + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + obj_index 0 5 + obj_index 1 0 + obj_index 2 100 + obj_index 3 0 + + flag 0x04 + + str_len 25 + string $ACS_CANCEL_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS + x 430 + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FINIT_SHOP 1 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_SPLIT_HS_SCR 0 0 0 + start_time 0 + } + } + } + object { + ID 100 + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + obj_index 0 $ACS_BACK_OPTION + obj_index 1 0 + obj_index 2 2 + obj_index 3 0 + + flag 0x04 + + str_len 25 + string $ACS_OK_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS +// x 470 + + event { + code $ACS_STARTUP_KEY + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_ZBUF 1 0 0 + } + } + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_RETURN + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_ZBUF 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FINIT_SHOP 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_SPLIT_HS_SCR 0 0 0 + start_time 0 + } + } + } +} + +#define PRM_EV event { \ + code $VK_MOUSE_LEFT \ + code $VK_RIGHT \ + \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_INC_MM_OPTION $ACS_HOTSEAT_CFG_SCR $PRM_ID 0 \ + start_time 0 \ + } \ + } \ + event { \ + code $VK_MOUSE_RIGHT \ + code $VK_LEFT \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_DEC_MM_OPTION $ACS_HOTSEAT_CFG_SCR $PRM_ID 0 \ + start_time 0 \ + } \ + } + + +#define PRM_FNT 2 + +screen { + ID $ACS_HOTSEAT_CFG_SCR + + #define PRM_MENU_SIZE 4 + + #define SEEDS_MAX_Y 0 + #define TURN_TIME_Y 1 + #define WAIT_TURN_TIME_Y 2 + #define SEEDS_ACCUMULATION_Y 3 + #define LAPS_Y 3 + + #define PRM_X0 130 + #define PRM_X 520 + + object { + ID $ACS_NUM_LAPS_TXT + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET00 + + flag 0x04 + + str_len 25 + string $ACS_NumLapsStr + font $PRM_FNT + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X0 + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $LAPS_Y" + + size_x $PRM_MENU_SX0 + size_y $PRM_MENU_SY + } + object { + ID $ACS_NUM_LAPS_PRM + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + obj_index 3 $ACS_BACK_OPTION + + flag 0x04 + + str_len 3 + + string "1" + + font $PRM_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $LAPS_Y" + + size_x $PRM_MENU_SX + size_y $PRM_MENU_SY + + flag $ACS_MOUSE_SELECT + + #define PRM_ID $ACS_NUM_LAPS_PRM + $PRM_EV + } +/* + object { + ID $ACS_SEEDS_ACCUMULATION_TXT + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET00 + + flag 0x04 + + str_len 25 + string $ACS_SeedsAccumulationStr + font $PRM_FNT + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X0 + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $SEEDS_ACCUMULATION_Y" + + size_x $PRM_MENU_SX0 + size_y $PRM_MENU_SY + } + object { + ID $ACS_SEEDS_ACCUMULATION_PRM + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + flag 0x800 + + str_len 25 + + max_state 1 + state_str $ACS_OFF_STR + state_str $ACS_ON_STR + + font $PRM_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $SEEDS_ACCUMULATION_Y" + + size_x $PRM_MENU_SX + size_y $PRM_MENU_SY + + #define PRM_ID $ACS_SEEDS_ACCUMULATION_PRM + $PRM_EV + } +*/ + object { + ID $ACS_WAIT_TURN_TIME_TXT + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET00 + + flag 0x04 + + str_len 25 + string $ACS_WaitTurnTimeStr + font $PRM_FNT + $COLOR_SET00 + + x $PRM_X0 + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $WAIT_TURN_TIME_Y" + + size_x $PRM_MENU_SX0 + size_y $PRM_MENU_SY + + palette $ACS_MAIN_MENU_PAL0 + } + object { + ID $ACS_WAIT_TURN_TIME_PRM + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + flag 0x800 + + str_len 25 + + string "0000" + + font $PRM_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $WAIT_TURN_TIME_Y" + + size_x $PRM_MENU_SX + size_y $PRM_MENU_SY + + #define PRM_ID $ACS_WAIT_TURN_TIME_PRM + $PRM_EV + } + object { + ID $ACS_TURN_TIME_TXT + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET00 + + flag 0x04 + + str_len 25 + string $ACS_TurnTimeStr + font $PRM_FNT + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X0 + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $TURN_TIME_Y" + + size_x $PRM_MENU_SX0 + size_y $PRM_MENU_SY + } + object { + ID $ACS_TURN_TIME_PRM + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + flag 0x800 + + str_len 25 + + string "0000" + + font $PRM_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $TURN_TIME_Y" + + size_x $PRM_MENU_SX + size_y $PRM_MENU_SY + + #define PRM_ID $ACS_TURN_TIME_PRM + $PRM_EV + } + object { + ID $ACS_SEEDS_MAX_TXT + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET00 + + flag 0x04 + + str_len 25 + string $ACS_SeedsMaxStr + font $PRM_FNT + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X0 + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $SEEDS_MAX_Y" + + size_x $PRM_MENU_SX0 + size_y $PRM_MENU_SY + } + object { + ID $ACS_SEEDS_MAX_PRM + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + flag 0x800 + + str_len 25 + + obj_index 1 $ACS_BACK_OPTION + + string "00" + + font $PRM_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $SEEDS_MAX_Y" + + size_x $PRM_MENU_SX + size_y $PRM_MENU_SY + + #define PRM_ID $ACS_SEEDS_MAX_PRM + $PRM_EV + } + + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + obj_index 3 $ACS_SEEDS_MAX_PRM + + str_len 25 + string $ACS_DONE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_OPTIONS_SCR 0 0 0 + start_time 0 + } + } + } +} + +#define PRM_FNT 1 + +screen { + ID $ACS_DEMO_SCR + + #define MAIN_MENU_SIZE 2 + + #define RT_Y 0 + #define TB_Y 1 + #define IF_Y 2 + + object { // Realtime option... + ID 1 + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_RT_MODE_STR + font $MAIN_FNT + $COLOR_SET0 + + obj_index 0 0 + obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $RT_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_PLAY_DEMO 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_INTERFACE_AMBIENT 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_GAME_MODE $MCH_SINGLE_GAME 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_NEXT + ev_data 0 0 0 0 + start_time 1 + } + } + } + object { + ID 2 // Turnbased option... + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_TB_MODE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $TB_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_PLAY_DEMO 1 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_INTERFACE_AMBIENT 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_GAME_MODE $MCH_SINGLE_GAME 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_NEXT + ev_data 0 0 0 0 + start_time 1 + } + } + } +/* + object { + ID 2 // Interface option... + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_TB_MODE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $TB_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_PLAY_DEMO 1 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_INTERFACE_AMBIENT 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_GAME_MODE $MCH_SINGLE_GAME 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_NEXT + ev_data 0 0 0 0 + start_time 1 + } + } + } +*/ + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + obj_index 3 1 + + str_len 25 + string $ACS_BACK_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS +// x 90 + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_PREV + ev_data 0 0 0 0 + start_time 1 + } + } + } +} + + +screen { + ID $ACS_NA_SCR + + #define MAIN_MENU_SIZE 2 + + object { + ID 1 + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET00 + + flag 0x04 + + str_len 25 + string $ACS_NA_STR1 + font $MAIN_FNT + $COLOR_SET00 + + obj_index 0 0 + obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * 0" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + } + object { + ID 2 + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET00 + + flag 0x04 + + str_len 25 + string $ACS_NA_STR2 + font $MAIN_FNT + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * 1" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + } + + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + obj_index 3 1 + + str_len 25 + string $ACS_BACK_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS +// x 90 + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_MULTIPLAYER_SCR 0 0 0 + start_time 0 + } + } + } +} diff --git a/MechoSoma/iScreen/SCRIPTS/ru_ISCREEN.SCR b/MechoSoma/iScreen/SCRIPTS/ru_ISCREEN.SCR new file mode 100644 index 00000000..4b71235b --- /dev/null +++ b/MechoSoma/iScreen/SCRIPTS/ru_ISCREEN.SCR @@ -0,0 +1,6519 @@ + +#include "ISCREEN\Scripts\common.inc" +#include "ISCREEN\Scripts\vkeys.inc" +#include "ISCREEN\aci_evnt.h" +#include "ISCREEN\I-WorldEvent.h" +#include "SOUND\snd_ids.h" + +#include "ISCREEN\Scripts\aci_ids.h" +#include "ISCREEN\controls.h" +#include "ISCREEN\Scripts\aci_str.inc" + +#define ACS_MOUSE_SELECT 0x800 + +#define MAIN_FNT 1 +#define SMALL_FNT 1 +#define WRLD_FNT 1 +#define PRM_FNT 1 +#define CONTROLS_FNT 2 +#define CD_FNT 2 + +#define MAIN_MENU_SX 240 +#define MAIN_MENU_SY 35 +#define MAIN_MENU_DELTA 1 + +#define HOTSEAT_MENU_SX 240 + +#define PRM_MENU_SX0 240 +#define PRM_MENU_SX 100 +#define PRM_MENU_SY 30 +#define PRM_MENU_DELTA 1 +#define PRM_MENU_START_Y 0 + +#define MENU_DX 0 +/* +#define MAIN_MENU_START_Y 40 +#define OPTIONS_MENU_START_Y 40 +#define HOTSEAT_MENU_START_Y 40 +*/ +#define MAIN_MENU_START_Y 0 + +#define OPTIONS_MENU_START_Y 0 +#define HOTSEAT_MENU_START_Y 0 + +#define OBJ_SX 50 +#define OBJ_SY 35 + +#define WORLD_MENU_SX 280 +#define WORLD_MENU_SY 35 +#define WORLD_MENU_DELTA 10 +#define WORLD_MENU_START_Y 0 + +#define TRACK_MENU_SX 280 +#define TRACK_MENU_SY 35 +#define TRACK_MENU_DELTA 10 +#define TRACK_MENU_START_Y 0 + +#define SCR_FRAME -1 +#define OPEN_FRAME 0 +#define CLOSE_FRAME -2 + +#define CREDITS_PX 100 +#define CREDITS_PY 80 + +#define CREDITS_SX 560 +#define CREDITS_SY 270 +#define CREDITS_DY 50 + +#define CONTROLS_SX 300 +#define CONTROLS_SY 310 + +#define CONTROLS_COORDS x 230 \ + y 160 + +num_fonts 3 +font_dir "FONTS" +font_prefix "font" +/* +#define ALPHA_SET0 alpha0 0 \ +alpha1 0 \ +alpha2 0 \ +d_alpha 8 +*/ +#define ALPHA_SET00 alpha0 0 \ +alpha1 0 \ +alpha2 0 \ +d_alpha 8 + +#define ALPHA_SET1 alpha0 0 \ +alpha1 0 \ +alpha2 0 \ +d_alpha 8 + + +#define ALPHA_SET0 alpha0 0 \ +alpha1 128 \ +alpha2 128 \ +d_alpha 16 + +/* +#define ALPHA_SET00 alpha0 10 \ +alpha1 128 \ +alpha2 32 \ +d_alpha 8 + +#define ALPHA_SET1 alpha0 1 \ +alpha1 1 \ +alpha2 1 \ +d_alpha 8 +*/ +#define BACK_COORDS x 30 \ + y 390 \ + size_x 170 \ + size_y $OBJ_SY + +// y 380 \ + +#define BACK_COORDS2 x 30 \ + y 350 \ + size_x 100 \ + size_y $OBJ_SY + +#define COLOR0_0_BASE 136 +#define COLOR0_0_BASE_S 145 +#define COLOR0_1_BASE 159 +#define COLOR0_2_BASE 159 + +#define COLOR0_0 "$COLOR0_0_BASE | (0 * 256)" +#define COLOR0_0_S "$COLOR0_0_BASE_S | (0 * 256)" +#define COLOR0_1 "$COLOR0_1_BASE | (0 * 256)" +#define COLOR0_2 "$COLOR0_2_BASE | (0 * 256)" + +#define COLOR_SET0 col0 $COLOR0_0 \ + col1 $COLOR0_1 \ + col2 $COLOR0_2 + +#define COLOR_SET0_S col0 $COLOR0_0_S \ + col1 $COLOR0_1 \ + col2 $COLOR0_2 + +#define COLOR_SET00 col0 $COLOR0_0 \ + col1 $COLOR0_0 \ + col2 $COLOR0_0 + +#define COLOR_SET1 col0 $COLOR0_1 \ + col1 $COLOR0_1 \ + col2 $COLOR0_1 + +#define COLOR_SET2 col0 $COLOR0_0 \ + col1 $COLOR0_0 \ + col2 $COLOR0_0 + +resource { + type $ACS_PAL + ID $ACS_MAIN_MENU_PAL0 + file "menu.pal" +} + +resource { + type $ACS_PAL + ID $ACS_MAIN_MENU_PAL1 + file "main.pal" +} + +#define NEW_GAME_EV event { \ + code $VK_MOUSE_LEFT \ + code $VK_MOUSE_RIGHT \ + \ + time 2 \ + \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_INTERFACE_AMBIENT 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_SET_GAME_MODE $MCH_SINGLE_GAME $SPLIT_MODE 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_SELECT_WORLD 7 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_ELECTIONARY_MODE 0 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_CHANGE_SCREEN_NEXT \ + ev_data 0 0 0 0 \ + start_time 1 \ + } \ + } + +// Startup screen with "CONTINUE WITH ..." and "CHANGE PLAYER" options... +screen { + ID $ACS_MAIN_MENU_SCR2 + + #define SPLIT_MODE 0 + + #define MAIN_MENU_SIZE 7 + + #define CONTINUE_Y 0 + #define LOAD_Y 1 + #define NEW_GAME_Y 2 + #define DEMO_Y 3 + #define MULTIPLAYER_Y 4 + #define OPTIONS_Y 5 + #define EXIT_Y 6 + + #define NG_UP $ACS_LOAD_OPTION + #define EXIT_DOWN $ACS_CONTINUE_OPTION + + #define ACS_NG_STR $ACS_ABORT_GAME_STR + #include "ISCREEN\Scripts\mainmenu.inc" + + object { + ID 83 // Demo option + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_DEMO_STR + font $MAIN_FNT + $COLOR_SET0 + + obj_index 0 0 + obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $DEMO_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_PLAY_DEMO 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_INTERFACE_AMBIENT 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_GAME_MODE $MCH_SINGLE_GAME 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_NEXT + ev_data 0 0 0 0 + start_time 1 + } + } +/* + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_PREV_SCR_ID $ACS_DEMO_SCR -1 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_DEMO_SCR 0 0 0 + start_time 0 + } + } +*/ + } + + object { + ID $ACS_EXIT_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_EXIT_STR + font $MAIN_FNT + $COLOR_SET0 + + obj_index 3 $EXIT_DOWN + obj_index 0 0 + obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $EXIT_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_MAIN_MENU_DUMMY_SCR2 0 0 0 + start_time 0 + } + } + } + + object { + ID $ACS_CONTINUE_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + obj_index 1 $ACS_EXIT_OPTION + + flag 0x04 + + str_len 25 + string $ACS_CONTINUE_WITH_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $CONTINUE_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_INTERFACE_AMBIENT 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_GAME_MODE $MCH_SINGLE_GAME 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SELECT_WORLD 7 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_LOAD_GAME 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_NEXT + ev_data 0 0 0 0 + start_time 1 + } + } + } + + object { + ID $ACS_LOAD_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_CHANGE_PLAYER_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $LOAD_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_INIT_SAVE_SCR 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_LOAD_GAME_SCR 0 0 0 + start_time 1 + } + } + } + + object { + ID $ACS_MULTIPLAYER_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_MULTIPLAYER_STR + font $MAIN_FNT + $COLOR_SET0 + + def_resource $ACS_MULTIPLAYER_OPTION + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $MULTIPLAYER_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_PREV_SCR_ID $ACS_MULTIPLAYER_SCR -1 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_MULTIPLAYER_SCR 0 0 0 + start_time 0 + } + } + } + + event { + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_PREV_SCR_ID $ACS_MAIN_MENU_DUMMY_SCR1 -1 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_MAIN_MENU_DUMMY_SCR1 0 0 0 + start_time 0 + } + } +} + + +// Startup screen with "CONTINUE WITH ..." option... +screen { + ID $ACS_MAIN_MENU_SCR1 + + #define SPLIT_MODE 0 + + #define MAIN_MENU_SIZE 6 + + #define CONTINUE_Y 0 + #define NEW_GAME_Y 1 + #define DEMO_Y 2 + #define MULTIPLAYER_Y 3 + #define OPTIONS_Y 4 + #define EXIT_Y 5 + + #define NG_UP $ACS_CONTINUE_OPTION + #define EXIT_DOWN $ACS_CONTINUE_OPTION + + #define ACS_NG_STR $ACS_ABORT_GAME_STR + #include "ISCREEN\Scripts\mainmenu.inc" + + object { + ID 83 // Demo option + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_DEMO_STR + font $MAIN_FNT + $COLOR_SET0 + + obj_index 0 0 + obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $DEMO_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_PLAY_DEMO 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_INTERFACE_AMBIENT 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_GAME_MODE $MCH_SINGLE_GAME 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_NEXT + ev_data 0 0 0 0 + start_time 1 + } + } +/* + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_PREV_SCR_ID $ACS_DEMO_SCR -1 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_DEMO_SCR 0 0 0 + start_time 0 + } + } +*/ + } + + object { + ID $ACS_EXIT_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_EXIT_STR + font $MAIN_FNT + $COLOR_SET0 + + obj_index 3 $EXIT_DOWN + obj_index 0 0 + obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $EXIT_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_MAIN_MENU_DUMMY_SCR2 0 0 0 + start_time 0 + } + } + } + + object { + ID $ACS_CONTINUE_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + obj_index 1 $ACS_EXIT_OPTION + + flag 0x04 + + str_len 25 + string $ACS_CONTINUE_WITH_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $CONTINUE_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_INTERFACE_AMBIENT 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_GAME_MODE $MCH_SINGLE_GAME 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SELECT_WORLD 7 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_LOAD_GAME 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_NEXT + ev_data 0 0 0 0 + start_time 1 + } + } + } + + object { + ID $ACS_MULTIPLAYER_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_MULTIPLAYER_STR + font $MAIN_FNT + $COLOR_SET0 + + def_resource $ACS_MULTIPLAYER_OPTION + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $MULTIPLAYER_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_PREV_SCR_ID $ACS_MULTIPLAYER_SCR -1 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_MULTIPLAYER_SCR 0 0 0 + start_time 0 + } + } + } + + event { + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_PREV_SCR_ID $ACS_MAIN_MENU_DUMMY_SCR1 -1 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_MAIN_MENU_DUMMY_SCR1 0 0 0 + start_time 0 + } + } +} + +// Startup screen without "CONTINUE" option... +screen { + ID $ACS_MAIN_MENU_SCR0 + + #define SPLIT_MODE 0 + + #define MAIN_MENU_SIZE 5 + + #define NEW_GAME_Y 0 + #define DEMO_Y 1 + #define MULTIPLAYER_Y 2 + #define OPTIONS_Y 3 + #define EXIT_Y 4 + + #define NG_UP $ACS_EXIT_OPTION + #define EXIT_DOWN $ACS_NEW_GAME_OPTION + + #define ACS_NG_STR $ACS_NEW_GAME_STR + #include "ISCREEN\Scripts\mainmenu.inc" + + object { + ID 83 // Demo option + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_DEMO_STR + font $MAIN_FNT + $COLOR_SET0 + + obj_index 0 0 + obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $DEMO_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_PLAY_DEMO 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_INTERFACE_AMBIENT 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_GAME_MODE $MCH_SINGLE_GAME 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_NEXT + ev_data 0 0 0 0 + start_time 1 + } + } +/* + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_PREV_SCR_ID $ACS_DEMO_SCR -1 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_DEMO_SCR 0 0 0 + start_time 0 + } + } +*/ + } + + object { + ID $ACS_EXIT_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_EXIT_STR + font $MAIN_FNT + $COLOR_SET0 + + obj_index 3 $EXIT_DOWN + obj_index 0 0 + obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $EXIT_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_MAIN_MENU_DUMMY_SCR2 0 0 0 + start_time 0 + } + } + } + + object { + ID $ACS_MULTIPLAYER_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_MULTIPLAYER_STR + font $MAIN_FNT + $COLOR_SET0 + + def_resource $ACS_MULTIPLAYER_OPTION + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $MULTIPLAYER_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_PREV_SCR_ID $ACS_MULTIPLAYER_SCR -1 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_MULTIPLAYER_SCR 0 0 0 + start_time 0 + } + } + } + + event { + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_PREV_SCR_ID $ACS_MAIN_MENU_DUMMY_SCR1 -1 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_MAIN_MENU_DUMMY_SCR1 0 0 0 + start_time 0 + } + } +} + +// Dummy screen +screen { + ID $ACS_MAIN_MENU_DUMMY_SCR0 + + event { + code $ACS_STARTUP_KEY + + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_MAIN_MENU_SCR0 0 0 0 + start_time 0 + } + } +} + +// Dummy screen #2 - exit +screen { + ID $ACS_MAIN_MENU_DUMMY_SCR1 + + #define MAIN_MENU_SIZE 2 + + object { + ID $ACS_EXIT_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET00 + + flag 0x04 + + str_len 25 + string $ACS_EXIT_Q_STR + font $MAIN_FNT + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX)/2" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * 0 - 20" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + } + + object { + ID $ACS_CONTINUE_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + obj_index 0 $ACS_ABORT_OPTION + obj_index 2 $ACS_ABORT_OPTION + + str_len 25 + string $ACS_NO_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "320 + 40" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * 1 + 20" + + size_x 50 + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_N + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_PREV + ev_data 0 0 0 0 + start_time 1 + } + } + } + object { + ID $ACS_ABORT_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + obj_index 0 $ACS_CONTINUE_OPTION + obj_index 2 $ACS_CONTINUE_OPTION + + flag 0x04 + + str_len 25 + string $ACS_YES_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "320 - 90" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * 1 + 20" + + size_x 50 + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_Y + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_MAIN_MENU_DUMMY_SCR2 0 0 0 + start_time 1 + } + } + } +} + +// Dummy screen #3 - exit +screen { + ID $ACS_MAIN_MENU_DUMMY_SCR2 + + event { + code $ACS_STARTUP_KEY + time 20 + + ev_comm { + code $ACS_EXIT + ev_data $ACS_EXIT_GAME 0 0 0 + start_time 19 + } + } +} + +// Dummy screen #4 - exit & launch online game +screen { + ID $ACS_MAIN_MENU_DUMMY_SCR3 + + event { + code $ACS_STARTUP_KEY + time 20 + + ev_comm { + code $ACS_EXIT + ev_data -1 0 0 0 + start_time 19 + } + } +} + +// Second main menu screen - with "CONTINUE" option... +screen { + ID $ACS_MAIN_MENU_SCR3 + + #define SPLIT_MODE -1 + + #define MAIN_MENU_SIZE 7 + + flag 0x20 + + #define CONTINUE_Y 0 + #define ABORT_Y 1 + #define RESTART_Y 2 + #define NEW_GAME_Y 4 + #define OPTIONS_Y 5 + #define EXIT_Y 6 + + #define NG_UP $ACS_RESTART_OPTION + #define EXIT_DOWN $ACS_CONTINUE_OPTION + + #define ACS_NG_STR $ACS_ABORT_GAME_STR + #include "ISCREEN\Scripts\mainmenu.inc" + + object { + ID $ACS_EXIT_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_QUIT_STR + font $MAIN_FNT + $COLOR_SET0 + + obj_index 3 $EXIT_DOWN + obj_index 0 0 + obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $EXIT_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_INTERFACE_AMBIENT 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_QUIT 0 0 0 + start_time 0 + } + } + } + + object { + ID $ACS_CONTINUE_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + obj_index 1 $ACS_EXIT_OPTION + obj_index 0 0 + obj_index 2 0 + + flag 0x04 + + str_len 25 + string $ACS_CONTINUE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX ) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $CONTINUE_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 2 + + ev_comm { + code $ACS_EXIT + ev_data $ACS_CONTINUE_GAME 0 0 0 + start_time 1 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + } + } + object { + ID $ACS_ABORT_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_ABORT_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX ) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $ABORT_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_ABORT_RACE 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SELECT_WORLD 7 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_NEXT + ev_data 0 0 0 0 + start_time 1 + } + } + } + + object { + ID $ACS_RESTART_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $RESTART_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + str_len 25 + string $ACS_RESTART_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_ABORT_RACE 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_NEXT + ev_data 0 0 0 0 + start_time 1 + } + } + } +} + +// I-World main menu screen - with "CONTINUE" option... +screen { + ID $ACS_MAIN_MENU_SCR4 + + #define SPLIT_MODE -1 + + #define MAIN_MENU_SIZE 4 + + #define CONTINUE_Y 0 + #define NEW_GAME_Y 1 + #define OPTIONS_Y 2 + #define EXIT_Y 3 + #define MODE_Y 5 + + #define NG_UP $ACS_CONTINUE_OPTION + #define EXIT_DOWN $ACS_CONTINUE_OPTION + + #define ACS_NG_STR $ACS_ABORT_GAME_STR + #include "ISCREEN\Scripts\mainmenu.inc" +/* + object { + ID 1 + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_QUIT_STR + font $MAIN_FNT + $COLOR_SET0 + + obj_index 3 $ACS_CONTINUE_OPTION + obj_index 0 0 + obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $MODE_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + max_state 1 + state_str $ACS_RT_MODE_STR + state_str $ACS_TB_MODE_STR + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_LEFT + code $VK_RIGHT + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_TURNBASED 1 0 0 + start_time 0 + } + } + } +*/ + object { + ID $ACS_EXIT_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_QUIT_STR + font $MAIN_FNT + $COLOR_SET0 + + obj_index 3 $EXIT_DOWN + obj_index 0 0 + obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $EXIT_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_INTERFACE_AMBIENT 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_QUIT 0 0 0 + start_time 1 + } + } + } + object { + ID $ACS_CONTINUE_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + obj_index 1 $ACS_EXIT_OPTION + obj_index 0 0 + obj_index 2 0 + + flag 0x04 + + str_len 25 + string $ACS_CONTINUE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX ) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $CONTINUE_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 2 + + ev_comm { + code $ACS_EXIT + ev_data $ACS_CONTINUE_GAME 0 0 0 + start_time 1 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + } + } +} + +#define NEW_GAME_EV event { \ + code $VK_MOUSE_LEFT \ + code $VK_MOUSE_RIGHT \ + \ + time 2 \ + \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_INTERFACE_AMBIENT 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_SET_GAME_MODE $MCH_ENTIRE_CONTROL_HS 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_CHANGE_SCREEN_NEXT \ + ev_data 0 0 0 0 \ + start_time 1 \ + } \ + } + +// Hotseat main menu screen... +screen { + ID $ACS_MAIN_MENU_SCR5 + + #define SPLIT_MODE -1 + + #define MAIN_MENU_SIZE 7 + + #define CONTINUE_Y 0 + #define ABORT_Y 1 + #define RESTART_Y 2 + #define NEW_GAME_Y 4 + #define OPTIONS_Y 5 + #define EXIT_Y 6 + + #define NG_UP $ACS_RESTART_OPTION + #define EXIT_DOWN $ACS_CONTINUE_OPTION + + #define ACS_NG_STR $ACS_ABORT_GAME_STR + #include "ISCREEN\Scripts\mainmenu.inc" + + object { + ID $ACS_EXIT_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_QUIT_STR + font $MAIN_FNT + $COLOR_SET0 + + obj_index 3 $EXIT_DOWN + obj_index 0 0 + obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $EXIT_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_INTERFACE_AMBIENT 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_QUIT 0 0 0 + start_time 1 + } + } + } + + object { + ID $ACS_CONTINUE_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + obj_index 1 $ACS_EXIT_OPTION + obj_index 0 0 + obj_index 2 0 + + flag 0x04 + + str_len 25 + string $ACS_CONTINUE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX ) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $CONTINUE_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 2 + + ev_comm { + code $ACS_EXIT + ev_data $ACS_CONTINUE_GAME 0 0 0 + start_time 1 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + } + } + object { + ID $ACS_ABORT_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_ABORT_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX ) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $ABORT_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_ABORT_RACE 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_SPLIT_HS_SCR 0 0 0 + start_time 1 + } + } + } + + object { + ID $ACS_RESTART_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $RESTART_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + str_len 25 + string $ACS_RESTART_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_ABORT_RACE 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_NEXT + ev_data 0 0 0 0 + start_time 1 + } + } + } +} + +// Online main menu screen... +screen { + ID $ACS_MAIN_MENU_SCR6 + + #define SPLIT_MODE -1 + + #define MAIN_MENU_SIZE 4 + + #define CONTINUE_Y 0 + #define CHANGE_Y 1 + #define OPTIONS_Y 2 + #define EXIT_Y 3 + + #define EXIT_DOWN $ACS_CONTINUE_OPTION + + object { + ID $ACS_OPTIONS_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + obj_index 0 0 + obj_index 2 0 + + str_len 25 + string $ACS_OPTIONS_STR + font $MAIN_FNT + $COLOR_SET0 + + def_resource $ACS_OPTIONS_OPTION + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $OPTIONS_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $ACS_STARTUP_KEY + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_INIT_ONLINE_MENU 0 0 0 + start_time 0 + } + } + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SAVE_SCREEN 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_OPTIONS_SCR 0 0 0 + start_time 0 + } + } + } + + object { + ID $ACS_LOAD_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + obj_index 0 0 + obj_index 2 0 + + str_len 25 + string $ACS_CHANGE_PLAYER_STR + font $MAIN_FNT + $COLOR_SET0 + + def_resource $ACS_OPTIONS_OPTION + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $CHANGE_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_CHANGE_PLAYER 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXIT + ev_data $ACS_CONTINUE_GAME 0 0 0 + start_time 1 + } + } + } + + object { + ID $ACS_EXIT_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_QUIT_STR + font $MAIN_FNT + $COLOR_SET0 + + obj_index 3 $EXIT_DOWN + obj_index 0 0 + obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $EXIT_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXIT + ev_data $ACS_EXIT_GAME 0 0 0 + start_time 1 + } + } + } + + object { + ID $ACS_CONTINUE_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + obj_index 1 $ACS_EXIT_OPTION + obj_index 0 0 + obj_index 2 0 + + flag 0x04 + + str_len 25 + string $ACS_CONTINUE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX ) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $CONTINUE_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 2 + + ev_comm { + code $ACS_EXIT + ev_data $ACS_CONTINUE_GAME 0 0 0 + start_time 1 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + } + } +} + +// Options screen... +screen { + ID $ACS_OPTIONS_SCR + + #include "ISCREEN\Scripts\options.inc" +} + +// Credits... +screen { + ID $ACS_CREDITS_SCR + + object { + ID $ACS_CREDITS_TEXT + type $ACS_INPUT_FIELD_OBJ + + alpha0 80 + + flag 0x04 + flag 0x100 + flag 0x400 + flag 0x200 + + str_len 2048 + string $ACS_CREDITS_TXT + font $MAIN_FNT + $COLOR_SET1 + + palette $ACS_MAIN_MENU_PAL0 + + x $CREDITS_PX + y $CREDITS_PY + + size_x $CREDITS_SX + size_y $CREDITS_SY + } + + object { + ID $ACS_CONTINUE_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + $BACK_COORDS +// x 10 +// y 10 + + str_len 25 + string $ACS_OK_STR + font $MAIN_FNT + + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + size_x 50 + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 2 + + ev_comm { + code $ACS_EXIT + ev_data $ACS_CONTINUE_GAME 0 0 0 + start_time 1 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_IWORLD_EVENT + ev_data $IW_MOVE_TO_PLACE 102 0 0 + start_time 0 + } + } + } +} + + +#define OPT_SY0 30 +#define OPT_FNT 1 +#define OPT_DY 10 + +#define OPT_SX0 290 +#define OPT_SX1 150 +#define OPT_X0 100 +#define OPT_DX 50 + +#define OPT_RES_BODY x $OPT_X \ +y "-30 + (480 - ($OPT_SY0 + $OPT_DY) * $OPT_MENU_SZ)/2 + $OPT_Y * ($OPT_SY0 + $OPT_DY)" \ +size_x $OPT_SX \ +size_y $OPT_SY0 + +#define OPT_RES_BODY2 x $OPT_X \ +y "-30 + (480 - ($OPT_SY0 + $OPT_DY) * $OPT_MENU_SZ)/2 + $OPT_Y * ($OPT_SY0 + $OPT_DY)" \ +size_x $OPT_SX \ +size_y "$OPT_SY0" + +#define OPT_OBJ_BODY ID $OPT_ID \ +type $ACS_INPUT_FIELD_OBJ \ +$ALPHA_SET1 \ + \ +flag 0x04 \ +flag $ACS_MOUSE_SELECT \ + \ +str_len 25 \ +string $OPT_STR \ +font $OPT_FNT \ +$OPT_COLOR_SET \ + \ +palette $ACS_MAIN_MENU_PAL0 + +#define OPT_EV $ALPHA_SET0 \ +event { \ + code $VK_MOUSE_LEFT \ + code $VK_RIGHT \ + \ + time 1 \ + \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_INC_STATE \ + ev_data $OPT_ID 0 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_GET_OPTION $OPT_CODE 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_UPDATE_OPTION $OPT_CODE 0 0 \ + start_time 0 \ + } \ +} \ +event { \ + code $VK_MOUSE_RIGHT \ + code $VK_LEFT \ + \ + time 1 \ + \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_DEC_STATE \ + ev_data $OPT_ID 0 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_GET_OPTION $OPT_CODE 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_UPDATE_OPTION $OPT_CODE 0 0 \ + start_time 0 \ + } \ +} + + +#define PRM_EV event { \ + code $VK_MOUSE_LEFT \ + code $VK_RIGHT \ + \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_INC_MM_OPTION $ACS_GRAPHICS_SCR $PRM_ID 0 \ + start_time 0 \ + } \ + } \ + event { \ + code $VK_MOUSE_RIGHT \ + code $VK_LEFT \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_DEC_MM_OPTION $ACS_GRAPHICS_SCR $PRM_ID 0 \ + start_time 0 \ + } \ + } + +// Options Screens... +#define OPT_X0 50 +screen { + ID $ACS_GRAPHICS_SCR + + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + obj_index 3 $ACS_GR_SCREEN_RES1 + + str_len 25 + string $ACS_DONE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + #define OPT_CODE $ACS_OPT_FULLSCREEN + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_GET_OPTION $OPT_CODE 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_UPDATE_OPTION $OPT_CODE 0 0 + start_time 0 + } + #define OPT_CODE $ACS_OPT_COLOR_DEPTH + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_GET_OPTION $OPT_CODE 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_UPDATE_OPTION $OPT_CODE 0 0 + start_time 0 + } + #define OPT_CODE $ACS_OPT_RESOLUTION + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_GET_OPTION $OPT_CODE 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_UPDATE_OPTION $OPT_CODE 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_OPTIONS_SCR 0 0 0 + start_time 0 + } + } + event { + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + #define OPT_CODE $ACS_OPT_FULLSCREEN + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_OPTION $OPT_CODE 0 0 + start_time 0 + } + #define OPT_CODE $ACS_OPT_COLOR_DEPTH + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_OPTION $OPT_CODE 0 0 + start_time 0 + } + #define OPT_CODE $ACS_OPT_RESOLUTION + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_OPTION $OPT_CODE 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_OPTIONS_SCR 0 0 0 + start_time 0 + } + } + } + + #define OPT_MENU_SZ 10 + + #define INTRO_Y 8 + + #define PRM_X0 120 + #define PRM_X "$OPT_X0 + $OPT_DX + $OPT_SX0" + + object { + ID $ACS_INTRO_TXT + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET00 + + flag 0x04 + + str_len 25 + string $ACS_IntroStr + font $PRM_FNT + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X0 + y "-30 + (480 - ($OPT_SY0 + $OPT_DY) * $OPT_MENU_SZ)/2 + $INTRO_Y * ($OPT_SY0 + $OPT_DY)" + + size_x $PRM_MENU_SX0 + size_y $PRM_MENU_SY + } + object { + ID $ACS_INTRO_PRM + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + str_len 5 + + max_state 1 + state_str $ACS_OFF_STR + state_str $ACS_ON_STR + + font $PRM_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X + y "-30 + (480 - ($OPT_SY0 + $OPT_DY) * $OPT_MENU_SZ)/2 + $INTRO_Y * ($OPT_SY0 + $OPT_DY)" + + size_x $OPT_SX1 + size_y $PRM_MENU_SY + + flag $ACS_MOUSE_SELECT + + #define PRM_ID $ACS_INTRO_PRM + $PRM_EV + } + + #define OPT_ID $ACS_GR_SCREEN_RES + #define OPT_SX $OPT_SX0 + #define OPT_X $OPT_X0 + #define OPT_Y 0 + #define OPT_STR $ACS_GR_SCREEN_RES_STR + #define OPT_COLOR_SET $COLOR_SET2 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + } + + #define OPT_ID $ACS_GR_SCREEN_RES1 + #define OPT_SX $OPT_SX1 + #define OPT_X "$OPT_X0 + $OPT_DX + $OPT_SX0" + #define OPT_Y 0 + #define OPT_STR $ACS_1280_STR + #define OPT_COLOR_SET $COLOR_SET0 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + + max_state 5 + + obj_index 1 $ACS_BACK_OPTION + + state_str $ACS_640_STR + state_str $ACS_800_STR + state_str $ACS_1024_STR + state_str $ACS_1152_STR + state_str $ACS_1280_STR + state_str $ACS_1600_STR + + #define OPT_CODE $ACS_OPT_RESOLUTION + $ALPHA_SET0 + event { + code $VK_MOUSE_LEFT + code $VK_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_INC_STATE + ev_data $OPT_ID 0 0 0 + start_time 0 + } + } + event { + code $VK_MOUSE_RIGHT + code $VK_LEFT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_DEC_STATE + ev_data $OPT_ID 0 0 0 + start_time 0 + } + } + } + + #define OPT_ID $ACS_GR_COLOR_DEPTH + #define OPT_SX $OPT_SX0 + #define OPT_X $OPT_X0 + #define OPT_Y 1 + #define OPT_STR $ACS_GR_COLOR_DEPTH_STR + #define OPT_COLOR_SET $COLOR_SET2 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + } + + #define OPT_ID $ACS_GR_COLOR_DEPTH1 + #define OPT_SX $OPT_SX1 + #define OPT_X "$OPT_X0 + $OPT_DX + $OPT_SX0" + #define OPT_Y 1 + #define OPT_STR $ACS_GR_COLOR_DEPTH_STR16 + #define OPT_COLOR_SET $COLOR_SET0 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + + max_state 1 + +// obj_index 1 $ACS_BACK_OPTION + + state_str $ACS_GR_COLOR_DEPTH_STR16 + state_str $ACS_GR_COLOR_DEPTH_STR32 + + #define OPT_CODE $ACS_OPT_COLOR_DEPTH + $ALPHA_SET0 + event { + code $VK_MOUSE_LEFT + code $VK_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_INC_STATE + ev_data $OPT_ID 0 0 0 + start_time 0 + } + } + event { + code $VK_MOUSE_RIGHT + code $VK_LEFT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_DEC_STATE + ev_data $OPT_ID 0 0 0 + start_time 0 + } + } + } + + #define OPT_ID $ACS_GR_FULLSCR + #define OPT_SX $OPT_SX0 + #define OPT_X $OPT_X0 + #define OPT_Y 2 + #define OPT_STR $ACS_GR_FULLSCR_STR + #define OPT_COLOR_SET $COLOR_SET2 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + } + + #define OPT_ID $ACS_GR_FULLSCR1 + #define OPT_SX $OPT_SX1 + #define OPT_X "$OPT_X0 + $OPT_DX + $OPT_SX0" + #define OPT_Y 2 + #define OPT_STR $ACS_GR_FULLSCR_MODE_STR + #define OPT_COLOR_SET $COLOR_SET0 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + + max_state 1 + +// obj_index 1 $ACS_BACK_OPTION + + state_str $ACS_GR_WINDOW_MODE_STR + state_str $ACS_GR_FULLSCR_MODE_STR + + #define OPT_CODE $ACS_OPT_FULLSCR + $ALPHA_SET0 + event { + code $VK_MOUSE_LEFT + code $VK_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_INC_STATE + ev_data $OPT_ID 0 0 0 + start_time 0 + } + } + event { + code $VK_MOUSE_RIGHT + code $VK_LEFT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_DEC_STATE + ev_data $OPT_ID 0 0 0 + start_time 0 + } + } + } + + #define OPT_ID $ACS_GR_SHADOWS + #define OPT_SX $OPT_SX0 + #define OPT_X $OPT_X0 + #define OPT_Y 4 + #define OPT_STR $ACS_GR_SHADOWS_STR + #define OPT_COLOR_SET $COLOR_SET2 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + } + + #define OPT_ID $ACS_GR_SHADOWS1 + #define OPT_SX $OPT_SX1 + #define OPT_X "$OPT_X0 + $OPT_DX + $OPT_SX0" + #define OPT_Y 4 + #define OPT_STR $ACS_OFF_STR + #define OPT_COLOR_SET $COLOR_SET0 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + max_state 1 + state_str $ACS_OFF_STR + state_str $ACS_ON_STR + + #define OPT_CODE $ACS_OPT_SHADOWS + $OPT_EV + } + + #define OPT_ID $ACS_GR_SKY + #define OPT_SX $OPT_SX0 + #define OPT_X $OPT_X0 + #define OPT_Y 5 + #define OPT_STR $ACS_GR_SKY_STR + #define OPT_COLOR_SET $COLOR_SET2 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + } + + #define OPT_ID $ACS_GR_SKY1 + #define OPT_SX $OPT_SX1 + #define OPT_X "$OPT_X0 + $OPT_DX + $OPT_SX0" + #define OPT_Y 5 + #define OPT_STR $ACS_HIGH_STR + #define OPT_COLOR_SET $COLOR_SET0 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + max_state 1 + state_str $ACS_LOW_STR + state_str $ACS_HIGH_STR + + #define OPT_CODE $ACS_OPT_SKY + $OPT_EV + } + + #define OPT_ID $ACS_GR_FURROWS + #define OPT_SX $OPT_SX0 + #define OPT_X $OPT_X0 + #define OPT_Y 6 + #define OPT_STR $ACS_GR_FURROWS_STR + #define OPT_COLOR_SET $COLOR_SET2 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + } + + #define OPT_ID $ACS_GR_FURROWS1 + #define OPT_SX $OPT_SX1 + #define OPT_X "$OPT_X0 + $OPT_DX + $OPT_SX0" + #define OPT_Y 6 + #define OPT_STR $ACS_OFF_STR + #define OPT_COLOR_SET $COLOR_SET0 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + max_state 1 + state_str $ACS_OFF_STR + state_str $ACS_ON_STR + + #define OPT_CODE $ACS_OPT_FURROWS + $OPT_EV + } + + #define OPT_ID $ACS_GR_CHROME + #define OPT_SX $OPT_SX0 + #define OPT_X $OPT_X0 + #define OPT_Y 7 + #define OPT_STR $ACS_GR_CHROME_STR + #define OPT_COLOR_SET $COLOR_SET2 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + } + + #define OPT_ID $ACS_GR_CHROME1 + #define OPT_SX $OPT_SX1 + #define OPT_X "$OPT_X0 + $OPT_DX + $OPT_SX0" + #define OPT_Y 7 + #define OPT_STR $ACS_OFF_STR + #define OPT_COLOR_SET $COLOR_SET0 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + max_state 1 + state_str $ACS_OFF_STR + state_str $ACS_ON_STR + + #define OPT_CODE $ACS_OPT_CHROME + $OPT_EV + } + + #define OPT_ID $ACS_GR_GAMMA + #define OPT_SX $OPT_SX0 + #define OPT_X $OPT_X0 + #define OPT_Y 3 + #define OPT_STR $ACS_GR_GAMMA_STR + #define OPT_COLOR_SET $COLOR_SET2 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + } + + #define OPT_ID $ACS_GR_GAMMA1 + #define OPT_SX $OPT_SX1 + #define OPT_X "$OPT_X0 + $OPT_DX + $OPT_SX0" + #define OPT_Y 3 + #define OPT_COLOR_SET $COLOR_SET0 + object { + type $ACS_SCROLLER_OBJ + flag 0x10 + $OPT_RES_BODY2 + $OPT_OBJ_BODY + + flag $ACS_MOUSE_SELECT + + $ALPHA_SET0 + $COLOR_SET0_S + + max_value 256 + cur_value 128 + + event { + code $VK_LEFT + + time 1 + + ev_comm { + code $ACS_DEC_SCROLLER + ev_data $OPT_ID 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_GET_OPTION $ACS_OPT_GAMMA 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_UPDATE_OPTION $ACS_OPT_GAMMA 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + } + event { + code $VK_RIGHT + + time 1 + + ev_comm { + code $ACS_INC_SCROLLER + ev_data $OPT_ID 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_GET_OPTION $ACS_OPT_GAMMA 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_UPDATE_OPTION $ACS_OPT_GAMMA 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + } + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_CHANGE_SCROLLER + ev_data $OPT_ID 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_GET_OPTION $ACS_OPT_GAMMA 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_UPDATE_OPTION $ACS_OPT_GAMMA 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + } + } +} +#define OPT_X0 100 + +screen { + ID $ACS_SOUND_SCR + + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + obj_index 3 $ACS_SND_EFFECTS1 + + flag 0x04 + + str_len 25 + string $ACS_DONE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_OPTIONS_SCR 0 0 0 + start_time 0 + } + } + } + + #define OPT_MENU_SZ 4 + + #define OPT_ID $ACS_SND_EFFECTS + #define OPT_SX $OPT_SX0 + #define OPT_X $OPT_X0 + #define OPT_Y 0 + #define OPT_STR $ACS_SND_EFFECTS_STR + #define OPT_COLOR_SET $COLOR_SET2 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + } + + #define OPT_ID $ACS_SND_EFFECTS1 + #define OPT_SX $OPT_SX1 + #define OPT_X "$OPT_X0 + $OPT_DX + $OPT_SX0" + #define OPT_Y 0 + #define OPT_STR $ACS_OFF_STR + #define OPT_COLOR_SET $COLOR_SET0 + object { + obj_index 1 $ACS_BACK_OPTION + + $OPT_RES_BODY + $OPT_OBJ_BODY + max_state 1 + state_str $ACS_OFF_STR + state_str $ACS_ON_STR + + #define OPT_CODE $ACS_OPT_SOUND + $OPT_EV + } + + #define OPT_ID $ACS_SND_EFF_VOL + #define OPT_SX $OPT_SX0 +// #define OPT_X $OPT_X0 + #define OPT_X "$OPT_X0 - 10" + #define OPT_Y 1 + #define OPT_STR $ACS_SND_EFF_VOL_STR + #define OPT_COLOR_SET $COLOR_SET2 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + } + + #define OPT_ID $ACS_SND_EFF_VOL1 + #define OPT_SX $OPT_SX1 +// #define OPT_X "$OPT_X0 + $OPT_DX + $OPT_SX0" + #define OPT_X "$OPT_X0 + $OPT_DX + $OPT_SX0 + 30" + #define OPT_Y 1 + #define OPT_STR $ACS_SND_MUS_VOL_STR + #define OPT_COLOR_SET $COLOR_SET0 + object { + type $ACS_SCROLLER_OBJ + flag 0x10 + $OPT_RES_BODY2 + $OPT_OBJ_BODY + + $ALPHA_SET0 + $COLOR_SET0_S + + flag $ACS_MOUSE_SELECT + + max_value 256 + cur_value 128 + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_CHANGE_SCROLLER + ev_data $OPT_ID 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_GET_OPTION $ACS_OPT_SOUND_VOL 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_UPDATE_OPTION $ACS_OPT_SOUND_VOL 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + } + event { + code $VK_LEFT + + time 1 + + ev_comm { + code $ACS_DEC_SCROLLER + ev_data $OPT_ID 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_GET_OPTION $ACS_OPT_SOUND_VOL 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_UPDATE_OPTION $ACS_OPT_SOUND_VOL 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + } + event { + code $VK_RIGHT + + time 1 + + ev_comm { + code $ACS_INC_SCROLLER + ev_data $OPT_ID 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_GET_OPTION $ACS_OPT_SOUND_VOL 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_UPDATE_OPTION $ACS_OPT_SOUND_VOL 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + } + } + + #define OPT_ID $ACS_SND_MUSIC + #define OPT_SX $OPT_SX0 + #define OPT_X $OPT_X0 + #define OPT_Y 2 + #define OPT_STR $ACS_SND_MUSIC_STR + #define OPT_COLOR_SET $COLOR_SET2 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + } + + #define OPT_ID $ACS_SND_MUSIC1 + #define OPT_SX $OPT_SX1 + #define OPT_X "$OPT_X0 + $OPT_DX + $OPT_SX0" + #define OPT_Y 2 + #define OPT_STR $ACS_OFF_STR + #define OPT_COLOR_SET $COLOR_SET0 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + max_state 1 + state_str $ACS_OFF_STR + state_str $ACS_ON_STR + + #define OPT_CODE $ACS_OPT_MUSIC + $OPT_EV + } + + #define OPT_ID $ACS_SND_MUS_VOL + #define OPT_SX $OPT_SX0 +// #define OPT_X $OPT_X0 + #define OPT_X "$OPT_X0 - 10" + #define OPT_Y 3 + #define OPT_STR $ACS_SND_MUS_VOL_STR + #define OPT_COLOR_SET $COLOR_SET2 + object { + $OPT_RES_BODY + $OPT_OBJ_BODY + } + + #define OPT_ID $ACS_SND_MUS_VOL1 + #define OPT_SX $OPT_SX1 +// #define OPT_X "$OPT_X0 + $OPT_DX + $OPT_SX0" + #define OPT_X "$OPT_X0 + $OPT_DX + $OPT_SX0 + 30" + #define OPT_Y 3 + #define OPT_STR $ACS_SND_MUS_VOL_STR + #define OPT_COLOR_SET $COLOR_SET0 + object { + type $ACS_SCROLLER_OBJ + flag 0x10 + $OPT_RES_BODY2 + $OPT_OBJ_BODY + + $ALPHA_SET0 + $COLOR_SET0_S + + flag $ACS_MOUSE_SELECT + + max_value 256 + cur_value 128 + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_CHANGE_SCROLLER + ev_data $OPT_ID 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_GET_OPTION $ACS_OPT_MUSIC_VOL 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_UPDATE_OPTION $ACS_OPT_MUSIC_VOL 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + } + event { + code $VK_LEFT + + time 1 + + ev_comm { + code $ACS_DEC_SCROLLER + ev_data $OPT_ID 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_GET_OPTION $ACS_OPT_MUSIC_VOL 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_UPDATE_OPTION $ACS_OPT_MUSIC_VOL 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + } + event { + code $VK_RIGHT + + time 1 + + ev_comm { + code $ACS_INC_SCROLLER + ev_data $OPT_ID 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_GET_OPTION $ACS_OPT_MUSIC_VOL 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_UPDATE_OPTION $ACS_OPT_MUSIC_VOL 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + } + } +/* + object { + ID $ACS_SOUNDTRACK + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_SOUNDTRACK_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x 380 + y 430 + + size_x 250 + size_y $OBJ_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_CD_SCR 0 0 0 + start_time 0 + } + } + } +*/ +} + +#define PRM_EV event { \ + code $VK_MOUSE_LEFT \ + code $VK_RIGHT \ + \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_INC_MM_OPTION $ACS_RACE_CFG_SCR $PRM_ID 0 \ + start_time 0 \ + } \ + } \ + event { \ + code $VK_MOUSE_RIGHT \ + code $VK_LEFT \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_DEC_MM_OPTION $ACS_RACE_CFG_SCR $PRM_ID 0 \ + start_time 0 \ + } \ + } +/* +screen { + ID $ACS_RACE_CFG_SCR + + #define PRM_MENU_SIZE 5 + + #define LAPS_Y 0 + #define ROBOTS_Y 1 + #define ARCANES_Y 2 + #define TS_Y 3 + #define ESS_Y 4 + + #define PRM_X0 120 + #define PRM_X 430 + + object { + ID $ACS_NUM_LAPS_TXT + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET00 + + flag 0x04 + + str_len 25 + string $ACS_NumLapsStr + font $PRM_FNT + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X0 + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $LAPS_Y" + + size_x $PRM_MENU_SX0 + size_y $PRM_MENU_SY + } + object { + ID $ACS_NUM_LAPS_PRM + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + obj_index 1 $ACS_BACK_OPTION + + flag 0x04 + + str_len 3 + + string "1" + + font $PRM_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $LAPS_Y" + + size_x $PRM_MENU_SX + size_y $PRM_MENU_SY + + flag $ACS_MOUSE_SELECT + + #define PRM_ID $ACS_NUM_LAPS_PRM + $PRM_EV + } + object { + ID $ACS_NUM_ROBOTS_TXT + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET00 + + flag 0x04 + + str_len 25 + string $ACS_NumRobotsStr + font $PRM_FNT + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X0 + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $ROBOTS_Y" + + size_x $PRM_MENU_SX0 + size_y $PRM_MENU_SY + } + object { + ID $ACS_NUM_ROBOTS_PRM + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + str_len 3 + + string "1" + + font $PRM_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $ROBOTS_Y" + + size_x $PRM_MENU_SX + size_y $PRM_MENU_SY + + flag $ACS_MOUSE_SELECT + + #define PRM_ID $ACS_NUM_ROBOTS_PRM + $PRM_EV + } + object { + ID $ACS_BOT_ARCANES_TXT + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET00 + + flag 0x04 + + str_len 25 + string $ACS_BotArcanesStr + font $PRM_FNT + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X0 + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $ARCANES_Y" + + size_x $PRM_MENU_SX0 + size_y $PRM_MENU_SY + } + object { + ID $ACS_BOT_ARCANES_PRM + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + str_len 5 + + max_state 1 + state_str $ACS_NO_STR + state_str $ACS_YES_STR + + font $PRM_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $ARCANES_Y" + + size_x $PRM_MENU_SX + size_y $PRM_MENU_SY + + flag $ACS_MOUSE_SELECT + + #define PRM_ID $ACS_BOT_ARCANES_PRM + $PRM_EV + } + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_DONE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + obj_index 3 $ACS_NUM_LAPS_PRM + + $BACK_COORDS + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_OPTIONS_SCR 0 0 0 + start_time 1 + } + } + } +} +*/ +#define PRM_EV event { \ + code $VK_MOUSE_LEFT \ + code $VK_RIGHT \ + \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_INC_MM_OPTION $ACS_TB_CFG_SCR $PRM_ID 0 \ + start_time 0 \ + } \ + } \ + event { \ + code $VK_MOUSE_RIGHT \ + code $VK_LEFT \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_DEC_MM_OPTION $ACS_TB_CFG_SCR $PRM_ID 0 \ + start_time 0 \ + } \ + } + +screen { + ID $ACS_TB_CFG_SCR + + #define PRM_MENU_SIZE 1 + + #define TIPS_Y 0 + + #define PRM_X0 120 + #define PRM_X 430 + + object { + ID $ACS_TIPS_TXT + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET00 + + flag 0x04 + + str_len 25 + string $ACS_TipsStr + font $PRM_FNT + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X0 + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $TIPS_Y" + + size_x $PRM_MENU_SX0 + size_y $PRM_MENU_SY + } + object { + ID $ACS_TIPS_PRM + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + str_len 5 + + max_state 1 + state_str $ACS_OFF_STR + state_str $ACS_ON_STR + + font $PRM_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $TIPS_Y" + + size_x $PRM_MENU_SX + size_y $PRM_MENU_SY + + flag $ACS_MOUSE_SELECT + + #define PRM_ID $ACS_TIPS_PRM + $PRM_EV + + obj_index 1 $ACS_BACK_OPTION + } + + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_DONE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + obj_index 3 $ACS_TIPS_PRM + + $BACK_COORDS + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_OPTIONS_SCR 0 0 0 + start_time 1 + } + } + } +} + +#define CONTROL_OBJS object { \ + ID $CTL_TXT_ID \ + type $ACS_INPUT_FIELD_OBJ \ + $ALPHA_SET1 \ + \ + flag 0x04 \ + \ + str_len 25 \ + string $CTL_TXT_STR \ + font $CONTROLS_FNT \ + $COLOR_SET00 \ + \ + palette $ACS_MAIN_MENU_PAL0 \ + \ + x $CTL_TXT_X \ + y "$CTL_MENU_START_Y + (480 - ($CTL_SY + $CTL_DELTA) * $CTL_MENU_SZ)/2 + ($CTL_SY + $CTL_DELTA ) * $CTL_Y" \ + \ + size_x $CTL_TXT_SX \ + size_y $CTL_SY \ + } \ + \ + object { \ + ID $CTL_ID \ + type $ACS_INPUT_FIELD_OBJ \ + $ALPHA_SET0 \ + \ + obj_index 1 $CTL_UP \ + \ + flag 0x04 \ + \ + str_len 25 \ + string $ACS_NoneStr \ + font $CONTROLS_FNT \ + $COLOR_SET0 \ + \ + palette $ACS_MAIN_MENU_PAL0 \ + \ + x $CTL_X \ + y "$CTL_MENU_START_Y + (480 - ($CTL_SY + $CTL_DELTA) * $CTL_MENU_SZ)/2 + ($CTL_SY + $CTL_DELTA ) * $CTL_Y" \ + \ + size_x $CTL_SX \ + size_y $CTL_SY \ + event { \ + code $VK_MOUSE_LEFT \ + code $VK_MOUSE_RIGHT \ + \ + time 2 \ + \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_INPUT_KEYNAME \ + ev_data $CTL_ID 0 0 0 \ + start_time 1 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_UPDATE_MM_OPTION $SCR_ID $CTL_ID 0 \ + start_time 2 \ + } \ + } \ + } + + +screen { + ID $ACS_CONTROLS_SCR + #define SCR_ID $ACS_CONTROLS_SCR + + #define CTL_MENU_SZ 15 + #define CTL_MENU_START_Y -50 + + #define CTL_DELTA 3 + #define CTL_MENU_START_Y 0 + + #define CTL_SX 100 + #define CTL_SY 20 + #define CTL_TXT_SX 200 + + #define CTL_TXT_X 100 + #define CTL_X 450 + + #define OPTIONS_MENU_SIZE 7 +/* + object { + ID 1 + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_RESET_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2" + y "$OPTIONS_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $OPTIONS_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * 6" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 3 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_RESET_CONTROLS 0 0 0 + start_time 0 + } + } + } +*/ + object { + ID $ACS_CONTROLS_SINGLE_SCR + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + obj_index 1 $ACS_BACK_OPTION + + str_len 25 + string $MCH_CONTROLS_SINGLE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2" + y "$OPTIONS_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $OPTIONS_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * 1" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 3 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SELECT_CONTROLLER 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_PREV_SCR_ID $ACS_CONTROLS_SINGLE_SCR $ACS_CONTROLS_SCR 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_CONTROLS_SINGLE_SCR 0 0 0 + start_time 0 + } + } + } + + object { + ID $ACS_CONTROLS_SPLIT_SCR + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $MCH_CONTROLS_SPLIT_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2" + y "$OPTIONS_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $OPTIONS_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * 2" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 3 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_CONTROLS_SPLIT_SCR 0 0 0 + start_time 0 + } + } + } + + object { + ID $ACS_CONTROLS_HOTSEAT_SCR + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + obj_index 3 $ACS_JOY_PRM2 + + str_len 25 + string $MCH_CONTROLS_HOTSEAT_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2" + y "$OPTIONS_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $OPTIONS_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * 3" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 3 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_CONTROLS_HOTSEAT_SCR 0 0 0 + start_time 0 + } + } + } + + #define CTL_Y 10 + #define CTL_UP $ACS_CONTROLS_HOTSEAT_SCR + + object { // Joystick on/off + ID $ACS_JOY_TXT2 + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET1 + + flag 0x04 + + str_len 25 + string $ACS_JOYSTICK_STR + font 1 + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x $CTL_TXT_X + y "$CTL_MENU_START_Y + (480 - ($CTL_SY + $CTL_DELTA) * $CTL_MENU_SZ)/2 + ($CTL_SY + $CTL_DELTA ) * $CTL_Y" + + size_x $CTL_TXT_SX + size_y $CTL_SY + } + + object { + ID $ACS_JOY_PRM2 + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + obj_index 1 $CTL_UP + + flag 0x04 + + max_state 1 + state_str $ACS_OFF_STR + state_str $ACS_ON_STR + + str_len 25 + string $ACS_OFF_STR + font 1 + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x $CTL_X + y "$CTL_MENU_START_Y + (480 - ($CTL_SY + $CTL_DELTA) * $CTL_MENU_SZ)/2 + ($CTL_SY + $CTL_DELTA ) * $CTL_Y" + + size_x $CTL_SX + size_y $CTL_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_INC_MM_OPTION $SCR_ID $ACS_JOY_PRM2 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_UPDATE_MM_OPTION $SCR_ID $ACS_JOY_PRM2 0 + start_time 1 + } + } + } + + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + obj_index 1 $ACS_JOY_PRM2 + obj_index 3 $ACS_CONTROLS_SINGLE_SCR + + flag 0x04 + + str_len 25 + string $ACS_DONE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_OPTIONS_SCR 0 0 0 + start_time 0 + } + } + } +} + +screen { + ID $ACS_CONTROLS_SPLIT_SCR + + #define OPTIONS_MENU_SIZE 2 + + object { + ID 1 + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + obj_index 1 $ACS_BACK_OPTION + + str_len 25 + string $ACS_PLAYER1_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2" + y "$OPTIONS_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $OPTIONS_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * 0" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 3 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SELECT_CONTROLLER 1 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_PREV_SCR_ID $ACS_CONTROLS_SINGLE_SCR $ACS_CONTROLS_SPLIT_SCR 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_CONTROLS_SINGLE_SCR 0 0 0 + start_time 0 + } + } + } + + object { + ID 2 + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_PLAYER2_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2" + y "$OPTIONS_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $OPTIONS_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * 1" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 3 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SELECT_CONTROLLER 2 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_PREV_SCR_ID $ACS_CONTROLS_SINGLE_SCR $ACS_CONTROLS_SPLIT_SCR 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_CONTROLS_SINGLE_SCR 0 0 0 + start_time 0 + } + } + } + + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + obj_index 3 1 + + flag 0x04 + + str_len 25 + string $ACS_DONE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_CONTROLS_SCR 0 0 0 + start_time 0 + } + } + } +} + +screen { + ID $ACS_CONTROLS_SINGLE_SCR + #define SCR_ID $ACS_CONTROLS_SINGLE_SCR + + #define CTL_MENU_SZ 15 + + #define CTL_MENU_START_Y -50 + + #define CTL_UP $ACS_BACK_OPTION + #define CTL_Y 0 + #define CTL_ID $MCH_KEY_MOVE_FORWARD + #define CTL_TXT_ID $MCH_KEY_MOVE_FORWARD_TXT + #define CTL_TXT_STR $MCH_KEY_MOVE_FORWARD_STR + $CONTROL_OBJS + + #define CTL_UP -1 + + #define CTL_Y 1 + #define CTL_ID $MCH_KEY_MOVE_BACKWARD + #define CTL_TXT_ID $MCH_KEY_MOVE_BACKWARD_TXT + #define CTL_TXT_STR $MCH_KEY_MOVE_BACKWARD_STR + $CONTROL_OBJS + + #define CTL_Y 2 + #define CTL_ID $MCH_KEY_TURN_LEFT + #define CTL_TXT_ID $MCH_KEY_TURN_LEFT_TXT + #define CTL_TXT_STR $MCH_KEY_TURN_LEFT_STR + $CONTROL_OBJS + + #define CTL_Y 3 + #define CTL_ID $MCH_KEY_TURN_RIGHT + #define CTL_TXT_ID $MCH_KEY_TURN_RIGHT_TXT + #define CTL_TXT_STR $MCH_KEY_TURN_RIGHT_STR + $CONTROL_OBJS + + #define CTL_Y 4 + #define CTL_ID $MCH_KEY_ZOOM_IN + #define CTL_TXT_ID $MCH_KEY_ZOOM_IN_TXT + #define CTL_TXT_STR $MCH_KEY_ZOOM_IN_STR + $CONTROL_OBJS + + #define CTL_Y 5 + #define CTL_ID $MCH_KEY_ZOOM_OUT + #define CTL_TXT_ID $MCH_KEY_ZOOM_OUT_TXT + #define CTL_TXT_STR $MCH_KEY_ZOOM_OUT_STR + $CONTROL_OBJS + + #define CTL_Y 6 + #define CTL_ID $MCH_KEY_CENTER_VIEW + #define CTL_TXT_ID $MCH_KEY_CENTER_VIEW_TXT + #define CTL_TXT_STR $MCH_KEY_CENTER_VIEW_STR + $CONTROL_OBJS + + #define CTL_Y 7 + #define CTL_ID $MCH_KEY_SET_ARCANE0 + #define CTL_TXT_ID $MCH_KEY_SET_ARCANE0_TXT + #define CTL_TXT_STR $MCH_KEY_SET_ARCANE0_STR + $CONTROL_OBJS + + #define CTL_Y 8 + #define CTL_ID $MCH_KEY_SET_ARCANE1 + #define CTL_TXT_ID $MCH_KEY_SET_ARCANE1_TXT + #define CTL_TXT_STR $MCH_KEY_SET_ARCANE1_STR + $CONTROL_OBJS + + #define CTL_Y 9 + #define CTL_ID $MCH_KEY_SET_ARCANE2 + #define CTL_TXT_ID $MCH_KEY_SET_ARCANE2_TXT + #define CTL_TXT_STR $MCH_KEY_SET_ARCANE2_STR + $CONTROL_OBJS + + #define CTL_Y 10 + #define CTL_ID $MCH_KEY_OK + #define CTL_TXT_ID $MCH_KEY_OK_TXT + #define CTL_TXT_STR $MCH_KEY_OK_STR + $CONTROL_OBJS + + #define CTL_Y 11 + #define CTL_ID $MCH_KEY_CANCEL + #define CTL_TXT_ID $MCH_KEY_CANCEL_TXT + #define CTL_TXT_STR $MCH_KEY_CANCEL_STR + $CONTROL_OBJS + + #define CTL_Y 12 + #define CTL_ID $MCH_KEY_SLOPE_CAM + #define CTL_TXT_ID $MCH_KEY_SLOPE_CAM_TXT + #define CTL_TXT_STR $MCH_KEY_SLOPE_CAM_STR + $CONTROL_OBJS + + #define CTL_Y 13 + #define CTL_ID $MCH_KEY_HORN + #define CTL_TXT_ID $MCH_KEY_HORN_TXT + #define CTL_TXT_STR $MCH_KEY_HORN_STR + $CONTROL_OBJS + + #define CTL_Y 14 + #define CTL_ID $MCH_KEY_MAP + #define CTL_TXT_ID $MCH_KEY_MAP_TXT + #define CTL_TXT_STR $MCH_KEY_MAP_STR + $CONTROL_OBJS + + + #define CTL_Y 16 + + object { // Joystick on/off + ID $ACS_JOY_TXT + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET1 + + flag 0x04 + + str_len 25 + string $ACS_JOYSTICK_STR + font 1 + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x $CTL_TXT_X + y "$CTL_MENU_START_Y + (480 - ($CTL_SY + $CTL_DELTA) * $CTL_MENU_SZ)/2 + ($CTL_SY + $CTL_DELTA ) * $CTL_Y" + + size_x $CTL_TXT_SX + size_y $CTL_SY + } + + object { + ID $ACS_JOY_PRM + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + obj_index 1 $CTL_UP + + flag 0x04 + + max_state 1 + state_str $ACS_OFF_STR + state_str $ACS_ON_STR + + str_len 25 + string $ACS_OFF_STR + font 1 + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x $CTL_X + y "$CTL_MENU_START_Y + (480 - ($CTL_SY + $CTL_DELTA) * $CTL_MENU_SZ)/2 + ($CTL_SY + $CTL_DELTA ) * $CTL_Y" + + size_x $CTL_SX + size_y $CTL_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_INC_MM_OPTION $SCR_ID $ACS_JOY_PRM 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_UPDATE_MM_OPTION $SCR_ID $ACS_JOY_PRM 0 + start_time 1 + } + } + } + + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + obj_index 3 $MCH_KEY_MOVE_FORWARD + obj_index 0 1 + obj_index 2 1 + + flag 0x04 + + str_len 25 + string $ACS_DONE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS + y 420 + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SELECT_CONTROLLER 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_PREV + ev_data 0 0 0 0 + start_time 0 + } + } + } + object { + ID 1 + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_RESET_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS + x 320 + y 420 + + obj_index 0 $ACS_BACK_OPTION + obj_index 2 $ACS_BACK_OPTION + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 3 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_RESET_CONTROLS $ACS_CONTROLS_SINGLE_SCR 0 0 + start_time 0 + } + } + } +} + +screen { + ID $ACS_CONTROLS_HOTSEAT_SCR + #define SCR_ID $ACS_CONTROLS_HOTSEAT_SCR + + #define CTL_TXT_X 110 + + #define CTL_MENU_SZ 7 + + #define CTL_UP $ACS_BACK_OPTION + #define CTL_Y 0 + #define CTL_ID $MCH_KEY_START_TIME + #define CTL_TXT_ID $MCH_KEY_START_TIME_TXT + #define CTL_TXT_STR $MCH_KEY_START_TIME_STR + $CONTROL_OBJS + + #define CTL_UP -1 + + #define CTL_Y 1 + #define CTL_ID $MCH_KEY_REMOVE_SEED + #define CTL_TXT_ID $MCH_KEY_REMOVE_SEED_TXT + #define CTL_TXT_STR $MCH_KEY_REMOVE_SEED_STR + $CONTROL_OBJS + + #define CTL_Y 2 + #define CTL_ID $MCH_KEY_ROTATE_CAM + #define CTL_TXT_ID $MCH_KEY_ROTATE_CAM_TXT + #define CTL_TXT_STR $MCH_KEY_ROTATE_CAM_STR + $CONTROL_OBJS + + #define CTL_Y 3 + #define CTL_ID $MCH_KEY_REPLAY + #define CTL_TXT_ID $MCH_KEY_REPLAY_TXT + #define CTL_TXT_STR $MCH_KEY_REPLAY_STR + $CONTROL_OBJS + + #define CTL_Y 4 + #define CTL_ID $MCH_KEY_REPLAY_ALL + #define CTL_TXT_ID $MCH_KEY_REPLAY_ALL_TXT + #define CTL_TXT_STR $MCH_KEY_REPLAY_ALL_STR + $CONTROL_OBJS + + #define CTL_Y 5 + #define CTL_ID $MCH_KEY_SLOW_TIME + #define CTL_TXT_ID $MCH_KEY_SLOW_TIME_TXT + #define CTL_TXT_STR $MCH_KEY_SLOW_TIME_STR + $CONTROL_OBJS + + #define CTL_Y 6 + #define CTL_ID $MCH_KEY_FAST_TIME + #define CTL_TXT_ID $MCH_KEY_FAST_TIME_TXT + #define CTL_TXT_STR $MCH_KEY_FAST_TIME_STR + $CONTROL_OBJS + +/* + #define CTL_Y 2 + #define CTL_ID $MCH_KEY_NEXT_SEED + #define CTL_TXT_ID $MCH_KEY_NEXT_SEED_TXT + #define CTL_TXT_STR $MCH_KEY_NEXT_SEED_STR + $CONTROL_OBJS +*/ + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + obj_index 3 $MCH_KEY_START_TIME + obj_index 1 $MCH_KEY_FAST_TIME + obj_index 0 1 + obj_index 2 1 + + flag 0x04 + + str_len 25 + string $ACS_DONE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_CONTROLS_SCR 0 0 0 + start_time 0 + } + } + } + object { + ID 1 + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_RESET_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS +// x 340 + x 320 + + obj_index 0 $ACS_BACK_OPTION + obj_index 2 $ACS_BACK_OPTION + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 3 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_RESET_CONTROLS $ACS_CONTROLS_HOTSEAT_SCR 0 0 + start_time 0 + } + } + } + + #define CTL_TXT_X 100 +} + +#define ESSENCE_OBJ object { \ + ID "$ACS_ESSENCE_OBJ + $ESS_ID" \ + \ + $ALPHA_SET0 \ + \ + x 20 \ + y 20 \ + \ + size_x 80 \ + size_y 80 \ + \ + flag 0x2000 \ + \ + event { \ + code $VK_MOUSE_LEFT \ + code $VK_MOUSE_RIGHT \ + \ + time 2 \ + \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_ESSENCE_EVENT $ESS_ID 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_CHANGE_SCREEN \ + ev_data $ACS_MAIN_MENU_SCR2 0 0 0 \ + start_time 1 \ + } \ + } \ + } + +screen { + ID $ACS_ESSENCE_SCR + + event { + code $ACS_STARTUP_KEY + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_INIT_ESSENCES 0 0 0 + } + } + event { + code $VK_ESCAPE + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_MAIN_MENU_SCR2 0 0 0 + start_time 2 + } + } + + #define ESS_ID 0 + $ESSENCE_OBJ + + #define ESS_ID 1 + $ESSENCE_OBJ + + #define ESS_ID 2 + $ESSENCE_OBJ + + #define ESS_ID 3 + $ESSENCE_OBJ + + #define ESS_ID 4 + $ESSENCE_OBJ + + #define ESS_ID 5 + $ESSENCE_OBJ + + #define ESS_ID 6 + $ESSENCE_OBJ +} + +#include "ISCREEN\Scripts\I-World.inc" + +#define SAVE_OBJS object { \ + ID $SAVE_ID \ + type $ACS_INPUT_FIELD_OBJ \ + obj_index 1 "$UP_OBJ" \ + obj_index 3 "$DN_OBJ" \ + obj_index 0 "$SAVE_ID + 10" \ + obj_index 2 "$SAVE_ID + 10" \ + $ALPHA_SET0 \ + $COLOR_SET0 \ + \ + flag 0x04 \ + \ + str_len 10 \ + string "Mechosh" \ + font 1 \ + \ + palette $ACS_MAIN_MENU_PAL0 \ + \ + x 170 \ + y "70 + ($SAVE_ID - 1) * 40" \ + size_x 150 \ + size_y 40 \ + event { \ + code $VK_MOUSE_LEFT \ + code $VK_MOUSE_RIGHT \ + \ + time 1 \ + \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_SELECT_SAVE "$SAVE_ID - 1" 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_CHANGE_SCREEN \ + ev_data $ACS_MAIN_MENU_SCR2 0 0 0 \ + start_time 0 \ + } \ + } \ +} \ +object { \ + ID "$SAVE_ID + 10" \ + type $ACS_INPUT_FIELD_OBJ \ + obj_index 1 "$UP_OBJ2" \ + obj_index 3 "$DN_OBJ2" \ + obj_index 0 "$SAVE_ID" \ + obj_index 2 "$SAVE_ID" \ + $ALPHA_SET0 \ + $COLOR_SET0 \ + \ + flag 0x04 \ + \ + str_len 10 \ + string $ACS_DELETE_STR \ + font 2 \ + \ + palette $ACS_MAIN_MENU_PAL0 \ + \ + x 370 \ + y "70 + ($SAVE_ID - 1) * 40" \ + size_x 150 \ + size_y 40 \ + event { \ + code $VK_MOUSE_LEFT \ + code $VK_MOUSE_RIGHT \ + \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_DELETE_SAVE "$SAVE_ID - 1" 0 0 \ + start_time 0 \ + } \ + } \ +} + +screen { + ID $ACS_LOAD_GAME_SCR + + #define UP_OBJ 100 + #define UP_OBJ2 100 + #define DN_OBJ 2 + #define DN_OBJ2 12 + #define SAVE_ID 1 + $SAVE_OBJS + + #define UP_OBJ 1 + #define UP_OBJ2 11 + #define DN_OBJ 3 + #define DN_OBJ2 13 + #define SAVE_ID 2 + $SAVE_OBJS + + #define UP_OBJ 2 + #define UP_OBJ2 12 + #define DN_OBJ 4 + #define DN_OBJ2 14 + #define SAVE_ID 3 + $SAVE_OBJS + + #define UP_OBJ 3 + #define UP_OBJ2 13 + #define DN_OBJ 5 + #define DN_OBJ2 15 + #define SAVE_ID 4 + $SAVE_OBJS + + #define UP_OBJ 4 + #define UP_OBJ2 14 + #define DN_OBJ 6 + #define DN_OBJ2 16 + #define SAVE_ID 5 + $SAVE_OBJS + + #define UP_OBJ 5 + #define UP_OBJ2 15 + #define DN_OBJ 101 + #define DN_OBJ2 101 + #define SAVE_ID 6 + $SAVE_OBJS + + object { + ID 100 + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + obj_index 1 101 + obj_index 3 0 + obj_index 0 -1 + obj_index 2 -1 + + flag 0x04 + + str_len 25 + string $ACS_MORE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - 70) / 2" + y 20 + size_x 70 + size_y 40 + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SCROLL_SAVES 0 0 0 + start_time 0 + } + } + } + + object { + ID 101 + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + obj_index 1 5 + obj_index 3 100 + obj_index 0 -1 + obj_index 2 -1 + + flag 0x04 + + str_len 25 + string $ACS_MORE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - 70) / 2" + y 320 + size_x 70 + size_y 40 + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SCROLL_SAVES 1 0 0 + start_time 0 + } + } + } + + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + obj_index 0 -1 + obj_index 2 -1 + + str_len 25 + string $ACS_CANCEL_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_PREV + ev_data 0 0 0 0 + start_time 1 + } + } + } +} + +#define PRM_EV event { \ + code $VK_MOUSE_LEFT \ + code $VK_RIGHT \ + \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_INC_MM_OPTION $ACS_SPLIT_CFG_SCR $PRM_ID 0 \ + start_time 0 \ + } \ + } \ + event { \ + code $VK_MOUSE_RIGHT \ + code $VK_LEFT \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_DEC_MM_OPTION $ACS_SPLIT_CFG_SCR $PRM_ID 0 \ + start_time 0 \ + } \ + } + +#define PRM_FNT 2 + +screen { + ID $ACS_SPLIT_CFG_SCR + + #define PRM_MENU_SIZE 2 + + #define MODE_Y 0 + #define BOTS_Y 1 + + #define PRM_X0 50 + #define PRM_X 420 + + object { + ID $ACS_SPLIT_MODE_TXT + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET00 + + flag 0x04 + + str_len 25 + string $ACS_SPLIT_MODE_STR + font $PRM_FNT + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X0 + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $MODE_Y" + + size_x $PRM_MENU_SX0 + size_y $PRM_MENU_SY + } + object { + ID $ACS_SPLIT_MODE_PRM + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + obj_index 1 $ACS_BACK_OPTION + + flag 0x04 + + str_len 20 + + string "1" + + font $PRM_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $MODE_Y" + + size_x $PRM_MENU_SX + size_y $PRM_MENU_SY + + flag $ACS_MOUSE_SELECT + + max_state 1 + state_str $ACS_VERTICAL_STR + state_str $ACS_HORIZONTAL_STR + + #define PRM_ID $ACS_SPLIT_MODE_PRM + $PRM_EV + } + + object { + ID $ACS_SPLIT_BOTS_TXT + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET00 + + flag 0x04 + + str_len 25 + string $ACS_SPLIT_BOTS_STR + font $PRM_FNT + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X0 + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $BOTS_Y" + + size_x $PRM_MENU_SX0 + size_y $PRM_MENU_SY + } + object { + ID $ACS_SPLIT_BOTS_PRM + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + obj_index 3 $ACS_BACK_OPTION + + flag 0x04 + + str_len 20 + + string "1" + + font $PRM_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $BOTS_Y" + + size_x $PRM_MENU_SX + size_y $PRM_MENU_SY + + flag $ACS_MOUSE_SELECT + + max_state 1 + state_str $ACS_OFF_STR + state_str $ACS_ON_STR + + #define PRM_ID $ACS_SPLIT_BOTS_PRM + $PRM_EV + } + + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_DONE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + obj_index 1 $ACS_SPLIT_BOTS_PRM + obj_index 3 $ACS_SPLIT_MODE_PRM + + $BACK_COORDS + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_OPTIONS_SCR 0 0 0 + start_time 1 + } + } + } +} + +#define PRM_FNT 1 + +screen { + ID $ACS_MULTIPLAYER_SCR + + #define MAIN_MENU_SIZE 5 + + #define SPLIT_Y 2 + #define HS_Y 0 + #define HS2_Y 1 + #define OL_Y 4 + + object { + ID 3 + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_HOT_SEAT2_STR + font $MAIN_FNT + $COLOR_SET0 + +// obj_index 0 0 +// obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $HS2_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY +/* + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_NA_SCR 0 0 0 + start_time 0 + } + } +*/ + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_GAME_MODE $MCH_ENTIRE_CONTROL_HS 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_SPLIT_HS_SCR 0 0 0 + start_time 0 + } + } + } + +/* + object { + ID 4 + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_PBEM_STR + font $MAIN_FNT + $COLOR_SET0 + + obj_index 0 0 + obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $PBEM_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_NA_SCR 0 0 0 + start_time 0 + } + } + } +*/ + object { + ID 1 + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_SPLIT_SCREEN_STR + font $MAIN_FNT + $COLOR_SET0 + +// obj_index 0 0 +// obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $SPLIT_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_GAME_MODE $MCH_SINGLE_GAME 1 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SELECT_WORLD 7 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_ELECTIONARY_MODE 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_NEXT + ev_data 0 0 0 0 + start_time 1 + } + } + } + object { + ID 2 + type $ACS_INPUT_FIELD_OBJ + + obj_index 1 $ACS_BACK_OPTION + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_HOT_SEAT_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $HS_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_GAME_MODE $MCH_SPLIT_CONTROL_HS 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_SPLIT_HS_SCR 0 0 0 + start_time 0 + } + } + } + object { + ID 4 + type $ACS_INPUT_FIELD_OBJ + +// obj_index 1 $ACS_BACK_OPTION + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_ONLINE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $OL_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_MAIN_MENU_DUMMY_SCR3 0 0 0 + start_time 0 + } + } + } + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + obj_index 3 2 + obj_index 1 4 + + str_len 25 + string $ACS_BACK_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS +// x 90 + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_PREV + ev_data 0 0 0 0 + start_time 1 + } + } + } +} + +screen { + ID $ACS_SPLIT_HS_SCR + #define CUR_SCR $ACS_SPLIT_HS_SCR + + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + obj_index 1 $ACS_PLAYER4_MECHOS + obj_index 3 $ACS_PLAYER0_MECHOS + obj_index 0 $ACS_NEW_GAME_OPTION + obj_index 2 2 + + str_len 25 + string $ACS_BACK_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_MULTIPLAYER_SCR 0 0 0 + start_time 0 + } + } + } + object { + ID $ACS_NEW_GAME_OPTION + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_START_STR + font $MAIN_FNT + $COLOR_SET0 + + obj_index 1 $ACS_PLAYER4_TYPE + obj_index 3 $ACS_PLAYER0_TYPE + obj_index 0 3 + obj_index 2 $ACS_BACK_OPTION + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS + x 470 + + size_x 100 + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_INIT_RACERS 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_NEXT + ev_data 0 0 0 0 + start_time 1 + } + } + } + + object { + ID 2 + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + flag 0x1000 + + obj_index 1 $ACS_PLAYER4_NAME + obj_index 3 $ACS_PLAYER0_NAME + obj_index 0 $ACS_BACK_OPTION + obj_index 2 3 + + str_len 10 + string " " + font $MAIN_FNT + $COLOR_SET0 +/* + obj_index 1 $ACS_PLAYER4_TYPE + obj_index 3 $ACS_PLAYER0_TYPE + obj_index 0 $ACS_BACK_OPTION + obj_index 2 $ACS_BACK_OPTION +*/ + palette $ACS_MAIN_MENU_PAL0 + + #define WSX 30 + + x "320 - $WSX - 5" + y 330 + + size_x $WSX + size_y 30 + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_CHANGE_HS_WORLD 0 0 0 + start_time 0 + } + } + } + + object { + ID 3 + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + flag 0x1000 + + obj_index 1 $ACS_PLAYER4_NAME + obj_index 3 $ACS_PLAYER0_NAME + obj_index 0 2 + obj_index 2 $ACS_NEW_GAME_OPTION + + str_len 10 + string " " + font $MAIN_FNT + $COLOR_SET0 +/* + obj_index 1 $ACS_PLAYER4_TYPE + obj_index 3 $ACS_PLAYER0_TYPE + obj_index 0 $ACS_BACK_OPTION + obj_index 2 $ACS_BACK_OPTION +*/ + palette $ACS_MAIN_MENU_PAL0 + + x "320 + 5" + y 330 + + size_x $WSX + size_y 30 + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_CHANGE_HS_WORLD 1 0 0 + start_time 0 + } + } + } + + object { + ID 1 + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET00 + + flag 0x04 + flag 0x1000 + + str_len 100 + string " " + font $MAIN_FNT + $COLOR_SET00 +/* + obj_index 1 $ACS_PLAYER4_TYPE + obj_index 3 $ACS_PLAYER0_TYPE + obj_index 0 $ACS_BACK_OPTION + obj_index 2 $ACS_BACK_OPTION +*/ + palette $ACS_MAIN_MENU_PAL0 + + #define WSX 100 + + x "(640 - $WSX)/2" + y 300 + + size_x $WSX + size_y 30 + } + + #define CTL_MENU_SZ 5 + #define CTL_MENU_START_Y -70 + #define CTL_SY 30 + #define CTL_DELTA 15 + + #define MECHOS_X 30 + #define MECHOS_SX 150 + #define MECHOS_SY 30 + + #define NAME_X 210 + #define NAME_SX 200 + + #define TYPE_X 460 + #define TYPE_SX 130 + + #define CTL_UP $ACS_NEW_GAME_OPTION + #define CTL_DOWN -1 + #define CTL_UP1 2 + #define CTL_DOWN1 -1 + #define CTL_UP2 $ACS_BACK_OPTION + #define CTL_DOWN2 -1 + + #define CTL_Y 0 + #define NAME_ID $ACS_PLAYER0_NAME + #define TYPE_ID $ACS_PLAYER0_TYPE + #define MECHOS_ID $ACS_PLAYER0_MECHOS + #include "iScreen\Scripts\player_cfg.inc" + + #define CTL_UP -1 + #define CTL_UP1 -1 + #define CTL_UP2 -1 + #define CTL_DOWN -1 + + #define CTL_Y 1 + #define NAME_ID $ACS_PLAYER1_NAME + #define TYPE_ID $ACS_PLAYER1_TYPE + #define MECHOS_ID $ACS_PLAYER1_MECHOS + #include "iScreen\Scripts\player_cfg.inc" + + #define CTL_Y 2 + #define NAME_ID $ACS_PLAYER2_NAME + #define TYPE_ID $ACS_PLAYER2_TYPE + #define MECHOS_ID $ACS_PLAYER2_MECHOS + #include "iScreen\Scripts\player_cfg.inc" + + #define CTL_Y 3 + #define NAME_ID $ACS_PLAYER3_NAME + #define TYPE_ID $ACS_PLAYER3_TYPE + #define MECHOS_ID $ACS_PLAYER3_MECHOS + #include "iScreen\Scripts\player_cfg.inc" + + #define CTL_UP -1 + #define CTL_DOWN $ACS_NEW_GAME_OPTION + #define CTL_DOWN2 $ACS_BACK_OPTION + #define CTL_UP1 -1 + #define CTL_DOWN1 2 + + #define CTL_Y 4 + #define NAME_ID $ACS_PLAYER4_NAME + #define TYPE_ID $ACS_PLAYER4_TYPE + #define MECHOS_ID $ACS_PLAYER4_MECHOS + #include "iScreen\Scripts\player_cfg.inc" +} + +#define BT_OBJ object { \ + ID "2 + $BT_ID" \ + type $ACS_INPUT_FIELD_OBJ \ + \ + $ALPHA_SET0 \ + obj_index 1 0 \ + obj_index 3 0 \ + obj_index 0 $BT_L \ + obj_index 2 $BT_R \ + \ + flag 0x04 \ + flag 0x800 \ + flag 0x1000 \ + \ + str_len 2 \ + string " " \ + font $MAIN_FNT \ + $COLOR_SET0 \ + \ + palette $ACS_MAIN_MENU_PAL0 \ + \ + x "200 + $WSX * $BT_ID + $BT_DX" \ + y 390 \ + \ + size_x $WSX \ + size_y $WSX \ + \ + event { \ + code $VK_MOUSE_LEFT \ + code $VK_SPACE \ + \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_CHANGE_PART $BT_ID 1 0 \ + start_time 0 \ + } \ + } \ + event { \ + code $VK_MOUSE_RIGHT \ + \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_CHANGE_PART $BT_ID 0 0 \ + start_time 0 \ + } \ + } \ + } + +screen { + ID $ACS_CONSTRUCT_SCR + + #define WSX 50 + + #define BT_ID 0 + #define BT_DX -15 + #define BT_L 100 + #define BT_R 3 + $BT_OBJ + + #define BT_ID 1 + #define BT_L 2 + #define BT_R 4 + #define BT_DX 0 + $BT_OBJ + #define BT_ID 2 + #define BT_L 3 + #define BT_R 5 + $BT_OBJ + #define BT_ID 3 + #define BT_L 4 + #define BT_R $ACS_BACK_OPTION + $BT_OBJ + + object { + ID 10 + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET00 + + obj_index 0 0 + obj_index 1 0 + obj_index 2 0 + obj_index 3 0 + + str_len 2 + string " " + font $MAIN_FNT + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x 300 + y 350 + + flag 0x1000 + + size_x 1 + size_y 1 + } + + object { + ID 1 + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + obj_index 0 0 + obj_index 1 0 + obj_index 2 0 + obj_index 3 0 + + flag 0x04 + flag 0x1000 + + str_len 2 + string " " + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + #define WSX 200 + + x "(640 - $WSX)/2" + y "(480 - $WSX)/2 - 90" + + size_x $WSX + size_y $WSX + } + + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + obj_index 0 5 + obj_index 1 0 + obj_index 2 100 + obj_index 3 0 + + flag 0x04 + + str_len 25 + string $ACS_CANCEL_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS + x 430 + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FINIT_SHOP 1 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_SPLIT_HS_SCR 0 0 0 + start_time 0 + } + } + } + object { + ID 100 + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + obj_index 0 $ACS_BACK_OPTION + obj_index 1 0 + obj_index 2 2 + obj_index 3 0 + + flag 0x04 + + str_len 25 + string $ACS_OK_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS +// x 470 + + event { + code $ACS_STARTUP_KEY + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_ZBUF 1 0 0 + } + } + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_RETURN + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_ZBUF 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FINIT_SHOP 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_SPLIT_HS_SCR 0 0 0 + start_time 0 + } + } + } +} + +#define PRM_EV event { \ + code $VK_MOUSE_LEFT \ + code $VK_RIGHT \ + \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_INC_MM_OPTION $ACS_HOTSEAT_CFG_SCR $PRM_ID 0 \ + start_time 0 \ + } \ + } \ + event { \ + code $VK_MOUSE_RIGHT \ + code $VK_LEFT \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 \ + start_time 0 \ + } \ + ev_comm { \ + code $ACS_EXT_EVENT \ + ev_data $ACS_EXT_DEC_MM_OPTION $ACS_HOTSEAT_CFG_SCR $PRM_ID 0 \ + start_time 0 \ + } \ + } + + +#define PRM_FNT 2 + +screen { + ID $ACS_HOTSEAT_CFG_SCR + + #define PRM_MENU_SIZE 4 + + #define SEEDS_MAX_Y 0 + #define TURN_TIME_Y 1 + #define WAIT_TURN_TIME_Y 2 + #define SEEDS_ACCUMULATION_Y 3 + #define LAPS_Y 3 + + #define PRM_X0 130 + #define PRM_X 520 + + object { + ID $ACS_NUM_LAPS_TXT + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET00 + + flag 0x04 + + str_len 25 + string $ACS_NumLapsStr + font $PRM_FNT + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X0 + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $LAPS_Y" + + size_x $PRM_MENU_SX0 + size_y $PRM_MENU_SY + } + object { + ID $ACS_NUM_LAPS_PRM + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + obj_index 3 $ACS_BACK_OPTION + + flag 0x04 + + str_len 3 + + string "1" + + font $PRM_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $LAPS_Y" + + size_x $PRM_MENU_SX + size_y $PRM_MENU_SY + + flag $ACS_MOUSE_SELECT + + #define PRM_ID $ACS_NUM_LAPS_PRM + $PRM_EV + } +/* + object { + ID $ACS_SEEDS_ACCUMULATION_TXT + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET00 + + flag 0x04 + + str_len 25 + string $ACS_SeedsAccumulationStr + font $PRM_FNT + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X0 + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $SEEDS_ACCUMULATION_Y" + + size_x $PRM_MENU_SX0 + size_y $PRM_MENU_SY + } + object { + ID $ACS_SEEDS_ACCUMULATION_PRM + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + flag 0x800 + + str_len 25 + + max_state 1 + state_str $ACS_OFF_STR + state_str $ACS_ON_STR + + font $PRM_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $SEEDS_ACCUMULATION_Y" + + size_x $PRM_MENU_SX + size_y $PRM_MENU_SY + + #define PRM_ID $ACS_SEEDS_ACCUMULATION_PRM + $PRM_EV + } +*/ + object { + ID $ACS_WAIT_TURN_TIME_TXT + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET00 + + flag 0x04 + + str_len 25 + string $ACS_WaitTurnTimeStr + font $PRM_FNT + $COLOR_SET00 + + x $PRM_X0 + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $WAIT_TURN_TIME_Y" + + size_x $PRM_MENU_SX0 + size_y $PRM_MENU_SY + + palette $ACS_MAIN_MENU_PAL0 + } + object { + ID $ACS_WAIT_TURN_TIME_PRM + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + flag 0x800 + + str_len 25 + + string "0000" + + font $PRM_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $WAIT_TURN_TIME_Y" + + size_x $PRM_MENU_SX + size_y $PRM_MENU_SY + + #define PRM_ID $ACS_WAIT_TURN_TIME_PRM + $PRM_EV + } + object { + ID $ACS_TURN_TIME_TXT + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET00 + + flag 0x04 + + str_len 25 + string $ACS_TurnTimeStr + font $PRM_FNT + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X0 + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $TURN_TIME_Y" + + size_x $PRM_MENU_SX0 + size_y $PRM_MENU_SY + } + object { + ID $ACS_TURN_TIME_PRM + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + flag 0x800 + + str_len 25 + + string "0000" + + font $PRM_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $TURN_TIME_Y" + + size_x $PRM_MENU_SX + size_y $PRM_MENU_SY + + #define PRM_ID $ACS_TURN_TIME_PRM + $PRM_EV + } + object { + ID $ACS_SEEDS_MAX_TXT + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET00 + + flag 0x04 + + str_len 25 + string $ACS_SeedsMaxStr + font $PRM_FNT + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X0 + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $SEEDS_MAX_Y" + + size_x $PRM_MENU_SX0 + size_y $PRM_MENU_SY + } + object { + ID $ACS_SEEDS_MAX_PRM + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + flag 0x800 + + str_len 25 + + obj_index 1 $ACS_BACK_OPTION + + string "00" + + font $PRM_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x $PRM_X + y "$PRM_MENU_START_Y + (480 - ($PRM_MENU_SY + $PRM_MENU_DELTA) * $PRM_MENU_SIZE)/2 + ($PRM_MENU_SY + $PRM_MENU_DELTA) * $SEEDS_MAX_Y" + + size_x $PRM_MENU_SX + size_y $PRM_MENU_SY + + #define PRM_ID $ACS_SEEDS_MAX_PRM + $PRM_EV + } + + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + obj_index 3 $ACS_SEEDS_MAX_PRM + + str_len 25 + string $ACS_DONE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_OPTIONS_SCR 0 0 0 + start_time 0 + } + } + } +} + +#define PRM_FNT 1 + +screen { + ID $ACS_DEMO_SCR + + #define MAIN_MENU_SIZE 2 + + #define RT_Y 0 + #define TB_Y 1 + #define IF_Y 2 + + object { // Realtime option... + ID 1 + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_RT_MODE_STR + font $MAIN_FNT + $COLOR_SET0 + + obj_index 0 0 + obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $RT_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_PLAY_DEMO 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_INTERFACE_AMBIENT 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_GAME_MODE $MCH_SINGLE_GAME 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_NEXT + ev_data 0 0 0 0 + start_time 1 + } + } + } + object { + ID 2 // Turnbased option... + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_TB_MODE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $TB_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_PLAY_DEMO 1 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_INTERFACE_AMBIENT 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_GAME_MODE $MCH_SINGLE_GAME 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_NEXT + ev_data 0 0 0 0 + start_time 1 + } + } + } +/* + object { + ID 2 // Interface option... + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET0 + + flag 0x04 + + str_len 25 + string $ACS_TB_MODE_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * $TB_Y" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + + time 2 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_PLAY_DEMO 1 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_FREE_RESOURCES 0 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_INTERFACE_AMBIENT 0 0 + start_time 0 + } + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_SET_GAME_MODE $MCH_SINGLE_GAME 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_NEXT + ev_data 0 0 0 0 + start_time 1 + } + } + } +*/ + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + obj_index 3 1 + + str_len 25 + string $ACS_BACK_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS +// x 90 + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN_PREV + ev_data 0 0 0 0 + start_time 1 + } + } + } +} + + +screen { + ID $ACS_NA_SCR + + #define MAIN_MENU_SIZE 2 + + object { + ID 1 + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET00 + + flag 0x04 + + str_len 25 + string $ACS_NA_STR1 + font $MAIN_FNT + $COLOR_SET00 + + obj_index 0 0 + obj_index 2 0 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * 0" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + } + object { + ID 2 + type $ACS_INPUT_FIELD_OBJ + + $ALPHA_SET00 + + flag 0x04 + + str_len 25 + string $ACS_NA_STR2 + font $MAIN_FNT + $COLOR_SET00 + + palette $ACS_MAIN_MENU_PAL0 + + x "(640 - $MAIN_MENU_SX) / 2 + $MENU_DX" + y "$MAIN_MENU_START_Y + (480 - ($MAIN_MENU_SY + $MAIN_MENU_DELTA) * $MAIN_MENU_SIZE)/2 + ($MAIN_MENU_SY + $MAIN_MENU_DELTA ) * 1" + + size_x $MAIN_MENU_SX + size_y $MAIN_MENU_SY + } + + object { + ID $ACS_BACK_OPTION + type $ACS_INPUT_FIELD_OBJ + $ALPHA_SET0 + + flag 0x04 + + obj_index 3 1 + + str_len 25 + string $ACS_BACK_STR + font $MAIN_FNT + $COLOR_SET0 + + palette $ACS_MAIN_MENU_PAL0 + + $BACK_COORDS +// x 90 + + event { + code $VK_MOUSE_LEFT + code $VK_MOUSE_RIGHT + code $VK_ESCAPE + + time 1 + + ev_comm { + code $ACS_EXT_EVENT + ev_data $ACS_EXT_START_SOUND $EFF_MAIN_MENU_BUTTON 0 0 + start_time 0 + } + ev_comm { + code $ACS_CHANGE_SCREEN + ev_data $ACS_MULTIPLAYER_SCR 0 0 0 + start_time 0 + } + } + } +} diff --git a/ScriptTool/CMakeLists.txt b/ScriptTool/CMakeLists.txt new file mode 100644 index 00000000..f9c7a41f --- /dev/null +++ b/ScriptTool/CMakeLists.txt @@ -0,0 +1,59 @@ +cmake_minimum_required(VERSION 3.20) + +project(SCRIPT_TOOL VERSION 1.0.0 LANGUAGES CXX) + +set(CMAKE_CONFIGURATION_TYPES "Release;Debug;MinSizeRel;RelWithDebInfo") + +set(APPLICATION_NAME script-tool) + +if (CMAKE_BUILD_TYPE MATCHES Debug) + add_definitions(-D_DEBUG -DXSTREAM_DEBUG) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-omit-frame-pointer -fsanitize=address") + set(CMAKE_LINKER_FLAGS "${CMAKE_LINKER_FLAGS} -fno-omit-frame-pointer -fsanitize=address") +endif() + +find_package(ZLIB REQUIRED) +find_package(Iconv REQUIRED) + +get_filename_component(PARENT_DIR ../ ABSOLUTE) + +set(SOURCES + src/common.cpp + src/common.h + src/localization_file.cpp + src/localization_file.h + src/localization.cpp + src/localization.h + src/main.cpp + src/text_converter.cpp + src/text_converter.h + # ParserC + ${PARENT_DIR}/MechoSoma/ParserC/math_exp.cpp + ${PARENT_DIR}/MechoSoma/ParserC/prepare.cpp + ${PARENT_DIR}/MechoSoma/ParserC/script_err.cpp + ${PARENT_DIR}/MechoSoma/ParserC/script.cpp + # XTool + ${PARENT_DIR}/MechoSoma/XTool/filesystem.cpp + ${PARENT_DIR}/MechoSoma/XTool/inzip.cpp + ${PARENT_DIR}/MechoSoma/XTool/itoa.cpp + ${PARENT_DIR}/MechoSoma/XTool/outzip.cpp + ${PARENT_DIR}/MechoSoma/XTool/treezip.cpp + ${PARENT_DIR}/MechoSoma/XTool/xbcnvin.cpp + ${PARENT_DIR}/MechoSoma/XTool/xbcnvout.cpp + ${PARENT_DIR}/MechoSoma/XTool/xbcore.cpp + ${PARENT_DIR}/MechoSoma/XTool/xerrhand.cpp + ${PARENT_DIR}/MechoSoma/XTool/xstream.cpp +) + +include_directories(${PARENT_DIR}/MechoSoma/ParserC) +include_directories(${PARENT_DIR}/MechoSoma/XTool) +include_directories(${PARENT_DIR}/MechoSoma/iScreen) + +add_executable(${APPLICATION_NAME} ${SOURCES}) +target_link_libraries(${APPLICATION_NAME} PRIVATE ZLIB::ZLIB Iconv::Iconv) + +set_target_properties(${APPLICATION_NAME} PROPERTIES + CXX_STANDARD 20 + CXX_STANDARD_REQUIRED YES + CXX_EXTENSIONS NO +) diff --git a/ScriptTool/src/common.cpp b/ScriptTool/src/common.cpp new file mode 100644 index 00000000..2dda2f50 --- /dev/null +++ b/ScriptTool/src/common.cpp @@ -0,0 +1,29 @@ +#include "common.h" + +#include +#include +#include + +namespace common +{ + +std::string load_file(const std::filesystem::path &file_path) +{ + const auto file_size = std::filesystem::file_size(file_path); + std::ifstream file(file_path, std::ios::in | std::ios::binary); + if (!file) + { + throw std::runtime_error(std::format("open file={}", file_path.string())); + } + + std::string buffer(file_size, 0); + file.read(buffer.data(), file_size); + if (!file) + { + throw std::runtime_error(std::format("read file={}", file_path.string())); + } + + return buffer; +} + +} diff --git a/ScriptTool/src/common.h b/ScriptTool/src/common.h new file mode 100644 index 00000000..554a2d33 --- /dev/null +++ b/ScriptTool/src/common.h @@ -0,0 +1,58 @@ +#pragma once + +#include +#include +#include +#include + +namespace common +{ + +struct ScriptFile final +{ + const char *script_file; + const char *set_file; + std::string_view script_binary_file; +}; + +constexpr std::array script_files{ + ScriptFile{ + .script_file = "iScreen/SCRIPTS/ISCREEN.SCR", + .set_file = "iScreen/SCRIPTS/acs_scr.set", + .script_binary_file = "RESOURCE/iScreen/iscreen.scb" + }, + ScriptFile{ + .script_file = "iScreen/SCRIPTS/doggy.scr", + .set_file = "iScreen/SCRIPTS/acs_scr.set", + .script_binary_file = "RESOURCE/iScreen/doggy.scb" + }, + ScriptFile{ + .script_file = "iScreen/SCRIPTS/iText.scr", + .set_file = "iScreen/SCRIPTS/acs_scr.set", + .script_binary_file = "RESOURCE/iScreen/iText.scb" + }, + ScriptFile{ + .script_file = "RUNTIME/Scripts/mch_tracks.scr", + .set_file = "RUNTIME/Scripts/mch_script.set", + .script_binary_file = "RESOURCE/mch_tracks.scb" + } +}; + +struct Codepage final +{ + const char *language_code; + const char *codepage; +}; + +constexpr std::array codepages{ + Codepage{"cz", "cp1250"}, + Codepage{"en", "cp1250"}, + Codepage{"fr", "cp1250"}, + Codepage{"it", "cp1250"}, + Codepage{"lt", "cp1250"}, + Codepage{"ru", "cp1251"} +}; + +std::string load_file(const std::filesystem::path &file_path); + +} diff --git a/ScriptTool/src/localization.cpp b/ScriptTool/src/localization.cpp new file mode 100644 index 00000000..0dd0a538 --- /dev/null +++ b/ScriptTool/src/localization.cpp @@ -0,0 +1,190 @@ +#include "localization.h" + +#include +#include +#include +#include +#include +#include +#include + +#include "common.h" +#include "text_converter.h" + +namespace +{ + +class PropertyReader final +{ +public: + explicit PropertyReader(std::string_view buffer) : _buffer(buffer) {} + + std::optional read_value(std::string_view key) + { + if (_state == State::error) + { + return nullptr; + } + + if (!skip_tag(key)) + { + _state = State::error; + return std::nullopt; + } + + const auto end = _buffer.find(tag); + if (end == std::string_view::npos) + { + if (!_buffer.ends_with(line_break)) + { + _state = State::error; + return std::nullopt; + } + _buffer.remove_suffix(line_break.size()); + + return std::string(_buffer); + } + + if (end == 0) + { + _state = State::error; + return std::nullopt; + } + + auto result = _buffer.substr(0, end); + if (!result.ends_with(line_break)) + { + _state = State::error; + return std::nullopt; + } + result.remove_suffix(line_break.size()); + + _buffer.remove_prefix(end); + _buffer.remove_prefix(tag.size()); + + return std::string(result); + } + +private: + bool skip_tag(std::string_view key) + { + if (_state == State::stopped) + { + if (!_buffer.starts_with(tag)) + { + return false; + } + + _state = State::started; + _buffer.remove_prefix(tag.size()); + } + + if (!_buffer.starts_with(key)) + { + return false; + } + _buffer.remove_prefix(key.size()); + + if (!_buffer.starts_with(line_break)) + { + return false; + } + _buffer.remove_prefix(line_break.size()); + + return true; + } + + static constexpr std::string_view tag{"$$$"}; + static constexpr std::string_view line_break{"\r\n"}; + + std::string_view _buffer; + + enum class State + { + stopped, started, error + }; + State _state = State::stopped; +}; + +} + +using namespace text; + +void Localization::Load(const fs::path &file_path) +{ + const auto buffer = common::load_file(file_path); + + struct LanguageData final + { + explicit LanguageData(const common::Codepage &codepage) + : short_name(codepage.language_code), converter("utf-8", codepage.codepage) {} + + const std::string_view short_name; + text::TextConverter converter; + }; + std::array language_data{ + LanguageData{common::codepages[0]}, + LanguageData{common::codepages[1]}, + LanguageData{common::codepages[2]}, + LanguageData{common::codepages[3]}, + LanguageData{common::codepages[4]}, + LanguageData{common::codepages[5]} + }; + + PropertyReader reader(buffer); + for (;;) + { + const auto key = reader.read_value("ID"); + if (!key) + { + break; + } + + for (auto &data : language_data) + { + const auto language = reader.read_value("LANGUAGE"); + if (!language) + { + throw std::runtime_error("language property expected"); + } + if (*language != data.short_name) + { + throw std::runtime_error(std::format("expected language={}", data.short_name)); + } + + const auto text = reader.read_value("TEXT"); + if (!text) + { + throw std::runtime_error("text property expected"); + } + + _text[*key].emplace(data.short_name, std::format("\"{}\"", data.converter.Convert(*text))); + } + } +} + +void Localization::SetLanguage(const std::string_view language) +{ + _language = language; +} + +const std::string_view Localization::GetLocalizedKey(const std::string_view key) const +{ + const auto p = std::find_if(_text.cbegin(), _text.cend(), [&key](const auto &e) { return e.first == key; }); + if (p == _text.end()) + { + return ""; + } + + const auto text = std::find_if( + p->second.cbegin(), + p->second.cend(), + [this](const auto &e) { return e.first == _language; } + ); + if (text == p->second.end()) + { + throw std::runtime_error(std::format("unknown language={}", _language)); + } + + return text->second; +} diff --git a/ScriptTool/src/localization.h b/ScriptTool/src/localization.h new file mode 100644 index 00000000..69aee1d7 --- /dev/null +++ b/ScriptTool/src/localization.h @@ -0,0 +1,26 @@ +#pragma once + +#include +#include +#include +#include + +namespace text +{ + +namespace fs = std::filesystem; + +class Localization final +{ +public: + void Load(const fs::path &file_path); + void SetLanguage(const std::string_view language); + const std::string_view GetLocalizedKey(const std::string_view key) const; + +private: + using Text = std::map; + std::map _text; + std::string_view _language; +}; + +} diff --git a/ScriptTool/src/localization_file.cpp b/ScriptTool/src/localization_file.cpp new file mode 100644 index 00000000..235738b0 --- /dev/null +++ b/ScriptTool/src/localization_file.cpp @@ -0,0 +1,211 @@ +#include "localization_file.h" + +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "text_converter.h" + +using namespace text; + +LocalizationFile::LocalizationFile(const fs::path &game_data) : _game_data(game_data) {} + +void LocalizationFile::Save(const fs::path &output_file) +{ + const fs::path strings_file("iScreen/SCRIPTS/ACI_STR.INC"); + if (!fs::exists(strings_file)) + { + throw std::runtime_error(std::format("{} file not found", strings_file.string())); + } + LoadLocalizationKeys(strings_file); + + getLocalizedKey = [this](const std::string_view key) -> const std::string_view { + return IsLocalizedKey(key) ? key : ""; + }; + + scrSetVerbose(0); + scrSetInputDir(""); + + for (const auto &file : common::script_files) + { + ProcessScript(file); + } + + std::ofstream file(output_file, std::ios::out | std::ios::binary); + if (!file) + { + throw std::runtime_error("open file"); + } + + for (const auto &e : _text) + { + if (e.second.empty()) + { + std::cout << std::format("key={} has empty text", e.first) << std::endl; + continue; + } + + file << std::format("$$$ID\r\n{}\r\n", e.first); + for (const auto &t : e.second) + { + file << std::format("$$$LANGUAGE\r\n{}\r\n$$$TEXT\r\n{}\r\n", t.first, t.second); + } + } +} + +void LocalizationFile::LoadLocalizationKeys(const fs::path &strings_file) +{ + const auto buffer = common::load_file(strings_file); + std::regex expression("(#define|#text)\\s+(\\S+)", std::regex_constants::icase); + std::smatch m; + auto start = buffer.cbegin(); + while (std::regex_search(start, buffer.cend(), m, expression)) + { + const auto key = m[2].str(); + if (_text.find(key) != _text.end()) + { + throw std::runtime_error(std::format("localization key={} duplicate", key)); + } + _text.emplace(key, Text()); + start = m.suffix().first; + } +} + +bool LocalizationFile::IsLocalizedKey(const std::string_view key) const +{ + return std::find_if(_text.begin(), _text.end(), [&key](const auto &e) { return e.first == key; }) != _text.end(); +} + +void LocalizationFile::ProcessScript(const common::ScriptFile &script_file) +{ + std::cout << std::format("processing script={}", script_file.script_file) << std::endl; + + auto source_block = parseScript(script_file.script_file, script_file.set_file); + if (source_block == nullptr) + { + throw std::runtime_error(std::format("failed to parse script={}", script_file.script_file)); + } + + const auto languages_path = _game_data / "lang"; + if (!std::filesystem::exists(languages_path) || !std::filesystem::is_directory(languages_path)) + { + throw std::runtime_error(std::format("lang folder={} not found", languages_path.string())); + } + + for (const auto &entry : std::filesystem::directory_iterator{languages_path}) + { + if (!entry.is_directory()) + { + continue; + } + + const auto &name = entry.path().filename(); + const auto p = std::find_if( + common::codepages.cbegin(), + common::codepages.cend(), + [&name](const auto &e) -> bool { return e.language_code == name; } + ); + if (p == common::codepages.end()) + { + throw std::runtime_error(std::format("language={} not found", name.string())); + } + + const auto get_source_block = [&]() -> scrDataBlock * { + fs::path special_case_path(script_file.script_file); + special_case_path.replace_filename( + std::format("{}_{}", p->language_code, special_case_path.filename().string()) + ); + if (fs::exists(special_case_path)) + { + auto result = parseScript(special_case_path.c_str(), script_file.set_file); + if (result == nullptr) + { + throw std::runtime_error("failed to parse script"); + } + return result; + } + return source_block; + }; + + ProcessScript(get_source_block(), entry.path(), script_file, *p); + } +} + +void LocalizationFile::ProcessScript( + scrDataBlock *source_block, + const fs::path &language_path, + const common::ScriptFile &script_file, + const common::Codepage &codepage +) +{ + std::cout << std::format("processing script for language={}", codepage.language_code) << std::endl; + + const auto file = language_path / script_file.script_binary_file; + auto target_block = loadScript(file.c_str()); + if (target_block == nullptr) + { + throw std::runtime_error(std::format("failed to parse script", file.string())); + } + + text::TextConverter text_converter(codepage.codepage, "utf-8"); + std::function visitor; + visitor = [&](scrDataBlock *source_block, scrDataBlock *target_block) { + if (source_block->ID != target_block->ID) + { + throw std::runtime_error(std::format("source block ID={} not equal to target block ID={}", + source_block->ID, target_block->ID)); + } + + if (source_block->dataType != target_block->dataType) + { + throw std::runtime_error(std::format("source block data type={} not equal to target block data type={}", + source_block->dataType, target_block->dataType)); + } + + if (source_block->dataType == SCR_CHAR_DATA) + { + const std::string key(source_block->c_dataPtr, source_block->dataSize - 1); + if (IsLocalizedKey(key)) + { + std::string_view value(target_block->c_dataPtr, target_block->dataSize - 1); + _text.at(key).emplace(codepage.language_code, text_converter.Convert(value)); + } + } + + if (source_block->nextLevel == nullptr) + { + if (target_block->nextLevel != nullptr) + { + throw std::runtime_error("source block next level not equal to target block next level"); + } + return; + } + + if (target_block->nextLevel == nullptr) + { + throw std::runtime_error("source block next level not equal to target block next level"); + } + + auto source_child = source_block->nextLevel->first(); + auto target_child = target_block->nextLevel->first(); + + while (source_child != nullptr) + { + if (target_child == nullptr) + { + throw std::runtime_error("target child not found"); + } + + visitor(source_child, target_child); + source_child = source_child->next; + target_child = target_child->next; + } + }; + visitor(source_block, target_block); +} diff --git a/ScriptTool/src/localization_file.h b/ScriptTool/src/localization_file.h new file mode 100644 index 00000000..5c12d04f --- /dev/null +++ b/ScriptTool/src/localization_file.h @@ -0,0 +1,39 @@ +#pragma once + +#include +#include +#include +#include + +#include "common.h" + +class scrDataBlock; + +namespace text +{ + +namespace fs = std::filesystem; + +class LocalizationFile final +{ +public: + explicit LocalizationFile(const fs::path &game_data); + void Save(const fs::path &output_file); + +private: + void LoadLocalizationKeys(const fs::path &strings_file); + bool IsLocalizedKey(const std::string_view key) const; + void ProcessScript(const common::ScriptFile &script_file); + void ProcessScript( + scrDataBlock *source_block, + const fs::path &language_path, + const common::ScriptFile &script_file, + const common::Codepage &codepage + ); + + const fs::path _game_data; + using Text = std::map; + std::map _text; +}; + +} diff --git a/ScriptTool/src/main.cpp b/ScriptTool/src/main.cpp new file mode 100644 index 00000000..01e547d6 --- /dev/null +++ b/ScriptTool/src/main.cpp @@ -0,0 +1,90 @@ +#include +#include +#include +#include + +#include + +#include "common.h" +#include "localization.h" +#include "localization_file.h" + +int handle_localization(int argc, char const *argv[]) +{ + if (argc < 2) + { + std::cout << "usage: localization " << std::endl; + return -1; + } + + text::LocalizationFile file(argv[0]); + file.Save(argv[1]); + + return 0; +} + +int handle_scripts(int argc, char const *argv[]) +{ + if (argc < 2) + { + std::cout << "usage: scripts " << std::endl; + return -1; + } + + text::Localization localization; + localization.Load(argv[0]); + + const auto languages_path = std::filesystem::path(argv[1]) / "lang"; + if (!std::filesystem::exists(languages_path) || !std::filesystem::is_directory(languages_path)) + { + throw std::runtime_error("lang folder not found"); + } + + getLocalizedKey = [&localization](const std::string_view key) -> const std::string_view { + return localization.GetLocalizedKey(key); + }; + + scrSetVerbose(0); + scrSetInputDir(""); + for (const auto &script_file : common::script_files) + { + for (const auto &codepage : common::codepages) + { + localization.SetLanguage(codepage.language_code); + + auto block = parseScript(script_file.script_file, script_file.set_file); + if (block == nullptr) + { + throw std::runtime_error(std::format("failed to parse script={}", script_file.script_file)); + } + + const auto file_path = languages_path / codepage.language_code / script_file.script_binary_file; + saveScript(file_path.c_str(), block); + } + } + + return 0; +} + +int main(int argc, char const *argv[]) +{ + if (argc < 2) + { + std::cout << "usage: " << std::endl; + return -1; + } + + const std::string_view command(argv[1]); + if (command == "localization") + { + return handle_localization(argc - 2, argv + 2); + } + + if (command == "scripts") + { + return handle_scripts(argc - 2, argv + 2); + } + + std::cout << std::format("ERROR: unknown command={}", command) << std::endl; + return -1; +} diff --git a/ScriptTool/src/text_converter.cpp b/ScriptTool/src/text_converter.cpp new file mode 100644 index 00000000..a4861045 --- /dev/null +++ b/ScriptTool/src/text_converter.cpp @@ -0,0 +1,35 @@ +#include "text_converter.h" + +#include +#include + +using namespace text; + +TextConverter::TextConverter(const char *from_codepage, const char *to_codepage) +{ + _descriptor = iconv_open(to_codepage, from_codepage); + assert(_descriptor != (iconv_t) -1); + + _string_buffer.resize(8192, 0); +} + +TextConverter::~TextConverter() +{ + iconv_close(_descriptor); +} + +std::string TextConverter::Convert(std::string_view input) +{ + std::string t(input); + char *input_data = t.data(); + size_t input_length = t.size(); + + std::fill(_string_buffer.begin(), _string_buffer.end(), 0); + char *output_data = _string_buffer.data(); + size_t output_length = _string_buffer.size() - 1; + + iconv(_descriptor, &input_data, &input_length, &output_data, &output_length); + assert(input_length == 0); + + return std::string(_string_buffer.data(), output_data); +} diff --git a/ScriptTool/src/text_converter.h b/ScriptTool/src/text_converter.h new file mode 100644 index 00000000..b9180dfd --- /dev/null +++ b/ScriptTool/src/text_converter.h @@ -0,0 +1,23 @@ +#pragma once + +#include +#include + +#include + +namespace text +{ + +class TextConverter final +{ +public: + TextConverter(const char *from_codepage, const char *to_codepage); + ~TextConverter(); + std::string Convert(std::string_view input); + +private: + iconv_t _descriptor; + std::string _string_buffer; +}; + +}