dScriptCompiler::dUserVariable dScriptCompiler::AddClassVariableInitilization(const dUserVariable& statement) { /* // dUserVariable returnNode; dDAGScopeBlockNode* const block = GetCurrentScope(); dDAGFunctionStatement* const statementNode = (dDAGFunctionStatement*)statement.m_node; if (statementNode) { if (statementNode->IsType(dDAGExpressionNode::GetRttiType())) { for (dDAGParameterNode* node = (dDAGParameterNode*) statementNode; node; node = (dDAGParameterNode*) node->m_next) { block->AddStatement(node); } } else { dAssert (statementNode->IsType(dDAGFunctionStatement::GetRttiType())); block->AddStatement(statementNode); } } returnNode.m_node = block; // return returnNode; */ dUserVariable returnNode; returnNode.m_node = new dDAGExpressionClassVariable(m_allNodes, (dDAGExpressionNode*)statement.m_node); dDAGClassNode* const curClass = GetCurrentClass(); curClass->AddVariable ((dDAGExpressionClassVariable*)returnNode.m_node); return returnNode; }
dScriptCompiler::dUserVariable dScriptCompiler::FunctionAddParameterNode (const dUserVariable& parameter) { dUserVariable returnNode; dDAGParameterNode* const parameterNode = (dDAGParameterNode*)parameter.m_node; dAssert (parameterNode->GetTypeId() == dDAGParameterNode::GetRttiType()); dDAGFunctionNode* const function = GetCurrentClass()->GetCurrentFunction(); function->AddParameter(parameterNode); return returnNode; }
dScriptCompiler::dUserVariable dScriptCompiler::FunctionAddBodyBlock (const dUserVariable& functionBody) { dUserVariable returnNode; dDAGFunctionNode* const function = GetCurrentClass()->GetCurrentFunction(); dDAGScopeBlockNode* const bodyNode = (dDAGScopeBlockNode*) functionBody.m_node; dAssert (bodyNode->IsType (dDAGScopeBlockNode::GetRttiType())); function->SetBody(bodyNode); returnNode.m_node = function; return returnNode; }
dScriptCompiler::dUserVariable dScriptCompiler::AddClassContructor (const dString& name, const dString& visibility) { dDAGClassNode* const curClass = GetCurrentClass(); dUserVariable typeVariable; dAssert (name == curClass->m_name); typeVariable.m_node = new dDAGTypeNode (m_allNodes, "void"); dUserVariable returnNode (AddClassFunction (typeVariable, name, "public static")); curClass->m_constructors.Append((dDAGFunctionNode*)returnNode.m_node); return returnNode; }
void CRPGPlayer::ShowChar() { IMenuStyle *style = menus->GetDefaultStyle(); IBaseMenu *menu = style->CreateMenu(&g_RPGPlugin, myself->GetIdentity()); IMenuPanel *panel = menu->CreatePanel(); menu->SetDefaultTitle(MENU_CHAR_TITLE); panel->DrawTitle(MENU_CHAR_TITLE); char text[255]; sprintf(text, "Player ID: %d", GetSQLIndex()); panel->DrawItem(ItemDrawInfo(text)); int classnum = GetCurrentClass(); if (classnum > RPG_CLASS_NONE) { int team = GetCachedTeam(); if ( team == TEAM_SURVIVORS) { sprintf(text, "Class: %s", HumanClasses[classnum]); } else if (team == TEAM_UNDEAD) { sprintf(text, "Class: %s", ZombieClasses[classnum]); } else { sprintf(text, "Class: None"); } panel->DrawItem(ItemDrawInfo(text)); // item 1 sprintf(text, "Level: %d", GetLevel()); panel->DrawItem(ItemDrawInfo(text)); // item 2 sprintf(text, "Experience: %d", GetExperience()); panel->DrawItem(ItemDrawInfo(text)); // item 3 for (int i = 0; i < MAX_SKILLS; i++) // item 4-7 { sprintf(text, "%s - (Level %d)", SkillNames[skills[i].iIndex], skills[i].iLevel); panel->DrawItem(ItemDrawInfo(text)); } } panel->SendDisplay(GetIndex(), &g_RPGPlugin, MENU_TIME_FOREVER ); }
dScriptCompiler::dUserVariable dScriptCompiler::AddClassFunction (const dUserVariable& returnType, const dString& name, const dString& visibility) { dUserVariable returnNode; dDAGTypeNode* const typeNode = (dDAGTypeNode*) returnType.m_node; dAssert (typeNode->IsType(dDAGTypeNode::GetRttiType())); dDAGFunctionNode* const functionNode = new dDAGFunctionNode (m_allNodes, typeNode, name.GetStr(), visibility.GetStr()); GetCurrentClass()->AddFunction(functionNode); returnNode.m_node = functionNode; //m_currentFunction = functionNode; return returnNode; }
void CRPGPlayer::ShowSkillMenu() { if (GetCurrentClass() == RPG_CLASS_NONE ) { ShowClassMenu( GetPlayerInfo()->GetTeamIndex()); return; } if (GetFreeSkills() < 0) { ResetAccount(); gamehelpers->TextMsg(GetIndex(), HUD_PRINTTALK, "[ZPS-RPG] Your skills have been reset because of an error.\n"); } IMenuStyle *style = menus->GetDefaultStyle(); IBaseMenu *menu = style->CreateMenu(&g_RPGPlugin, myself->GetIdentity()); menu->SetDefaultTitle(MENU_SKILL_TITLE); char skillname[64]; unsigned int menustyle = ITEMDRAW_DEFAULT; for (int i = 0; i < MAX_SKILLS; i++) { sprintf(skillname, "%s (Level %d)", SkillNames[skills[i].iIndex], skills[i].iLevel); menustyle = ITEMDRAW_DEFAULT; if ((skills[i].iLevel >= 3) || (GetFreeSkills() == 0)) menustyle = ITEMDRAW_DISABLED; if( i == 3 ) // ULTIMATE { if ((skills[i].iLevel >= 1) || (GetLevel() < 6) || (GetFreeSkills() == 0)) { menustyle = ITEMDRAW_DISABLED; } } menu->AppendItem(SkillNames[skills[i].iIndex], ItemDrawInfo(skillname, menustyle)); } menu->AppendItem(MENU_ITEM_RESET, ItemDrawInfo("Reset Skills")); menu->InsertItem(6, MENU_ITEM_RETURN, ItemDrawInfo(MENU_ITEM_RETURN)); menu->SetMenuOptionFlags( menu->GetMenuOptionFlags() | MENUFLAG_BUTTON_EXIT ); menu->Display(this->GetIndex(), MENU_TIME_FOREVER); }