void CAXModel::UpdateMatrix(void) { D3DXMATRIX matPosition; D3DXMATRIX matSize; D3DXMATRIX matRotate; D3DXMATRIX matAnchorPoint; D3DXMATRIX matComplate; D3DXMATRIX mT; { AVector3 vLeft(1.0f, 0.0f, 0.0f); AVector3 vUp(0.0f, 1.0f, 0.0f); AVector3 vLook(0.0f, 0.0f, 1.0f); AVector3 vUpNew, vLeftNew, vLookNew; D3DXMATRIX mX, mY, mZ; D3DXMatrixRotationX(&mX, m_fRotX); D3DXMatrixRotationY(&mY, m_fRotY); D3DXMatrixRotationZ(&mZ, -m_fRotZ); D3DXMatrixTranslation(&mT, vUp.x, vUp.y, vUp.z); mT *= mX; D3DXMatrixTranslation(&mT, mT._41, mT._42, mT._43); mT *= mY; D3DXMatrixTranslation(&mT, mT._41, mT._42, mT._43); mT *= mZ; vUpNew = AVector3(mT._41, mT._42, mT._43); D3DXMatrixTranslation(&mT, vLeft.x, vLeft.y, vLeft.z); mT *= mX; D3DXMatrixTranslation(&mT, mT._41, mT._42, mT._43); mT *= mY; D3DXMatrixTranslation(&mT, mT._41, mT._42, mT._43); mT *= mZ; vLeftNew = AVector3(mT._41, mT._42, mT._43); D3DXMatrixTranslation(&mT, vLook.x, vLook.y, vLook.z); mT *= mX; D3DXMatrixTranslation(&mT, mT._41, mT._42, mT._43); mT *= mY; D3DXMatrixTranslation(&mT, mT._41, mT._42, mT._43); mT *= mZ; vLookNew = AVector3(mT._41, mT._42, mT._43); mT._11 = vLeftNew.x; mT._12 = vLeftNew.y; mT._13 = vLeftNew.z; mT._14 = 0.0f; // Left Vector mT._21 = vUpNew.x; mT._22 = vUpNew.y; mT._23 = vUpNew.z; mT._24 = 0.0f; // Up Vector mT._31 = vLookNew.x; mT._32 = vLookNew.y; mT._33 = vLookNew.z; mT._34 = 0.0f; // Front Vector mT._41 = 0.0f; mT._42 = 0.0f; mT._43 = 0.0f; mT._44 = 1.0f; // Translation } D3DXMatrixTranslation(&matAnchorPoint, m_vAnchorPoint.x, m_vAnchorPoint.y, m_vAnchorPoint.z); D3DXMatrixScaling(&matSize, m_vSize.x, m_vSize.y, m_vSize.z); D3DXMatrixTranslation(&matPosition, m_vPosition.x, m_vPosition.y, m_vPosition.z); m_matComplate = matAnchorPoint * matSize * mT * matPosition; m_bUpdateMatrix = false; }
int totalNQueens(int n) { // Start typing your C/C++ solution below // DO NOT write int main() function vector<bool> vCol(n); vector<bool> vLeft(2 * n - 1); vector<bool> vRight(2 * n - 1); int ans = 0; for (int i = 0; i < n; i++) { vCol[i] = false; } for (int i = 0; i < 2 * n - 1; i++) { vLeft[i] = vRight[i] = false; } vector<int> a; DFS(ans, a, vCol, vLeft, vRight, 0, n); return ans; }
void TextExplainNode::UpdateText(Node* rootWidget, const string* text, int cfgId) { auto node_TextExplain = rootWidget->getChildByName<Node*>("Node_TextExplain"); node_TextExplain->setVisible(true); auto layout_FullScreen = node_TextExplain->getChildByName<Layout*>("Layout_FullScreen"); layout_FullScreen->setVisible(true); layout_FullScreen->setTouchEnabled(true); layout_FullScreen->setSwallowTouches(false); layout_FullScreen->addClickEventListener([=](Ref* sender) { node_TextExplain->setVisible(false); layout_FullScreen->setVisible(false); layout_FullScreen->setTouchEnabled(false); }); auto layout_Background = node_TextExplain->getChildByName<Layout*>("Layout_Background"); auto text_Explain = layout_Background->getChildByName<Text*>("Text_Explain"); text_Explain->setString(text->c_str()); auto layout_restrain = layout_Background->getChildByName<Layout*>("Layout_Restrain"); if ( cfgId == 0 || (cfgId / 1000000 != 205) ) { layout_restrain->setVisible(false); return; } layout_restrain->setVisible(true); auto layout_propMain = layout_restrain->getChildByName<Layout*>("Layout_PropMain"); UIUtils::getInstance()->showProperImg(layout_propMain, cfgId, false); CfgDataRow dataRow(cfgId); // 属性配置表的id与item的属性字段id不统一,故作如下转换 auto properId = (int)ProCfgId::CfgBaseId + dataRow.GetValue(CfgField::PropertyID)->asInt(); CfgDataRow proDataRow(properId); // 1001 ~ 1005 float result = 1.0; vector<int> vLeft(2, 0); vector<int> vRight(2, 0); int leftIdx = 0; int rightIdx = 0; for (int proId = 1001; proId <= 1005; ++proId) { switch (proId) { case (int)ProCfgId::MeleeCo : result = proDataRow.GetValue(CfgField::MeleeCo_F)->asFloat(); break; case (int)ProCfgId::FighterCo : result = proDataRow.GetValue(CfgField::FighterCo_F)->asFloat(); break; case (int)ProCfgId::MagicCo : result = proDataRow.GetValue(CfgField::MagicCo_F)->asFloat(); break; case (int)ProCfgId::RangedCo : result = proDataRow.GetValue(CfgField::RangedCo_F)->asFloat(); break; case (int)ProCfgId::FlyingCo : result = proDataRow.GetValue(CfgField::FlyingCo_F)->asFloat(); break; } if (result < 1) { vLeft[leftIdx++] = proId; } else if(result > 1) { vRight[rightIdx++] = proId; } } int i = 1; for(int proId : vLeft) { auto leftProNode = layout_restrain->getChildByName(StringUtils::format("Layout_PropLeft%d", i++)); UIUtils::getInstance()->showRealProper(leftProNode, proId, false); } i = 1; for(int proId : vRight) { auto RightProNode = layout_restrain->getChildByName(StringUtils::format("Layout_PropRight%d", i++)); UIUtils::getInstance()->showRealProper(RightProNode, proId, false); } // 技能、buff、属性描述 auto text_Buff = layout_restrain->getChildByName<Text *>("Text_Buff"); auto text_Skill = layout_restrain->getChildByName<Text *>("Text_Skill"); auto text_Attr = layout_restrain->getChildByName<Text *>("Text_Attr"); auto vi_skill = dataRow.GetValue(CfgField::SkillID_V)->asValueVector(); auto iter_skill = vi_skill.begin(); auto skillId = iter_skill->asInt(); CfgDataRow dataRow_Skill(skillId); auto langText = MultiLanguage::getInstance()->GetText((int)LanguageIdEnum::SkillId); langText += MultiLanguage::getInstance()->GetText(dataRow_Skill.GetValue(CfgField::Name)->asInt()); text_Skill->setString(langText); auto bufferData = dataRow_Skill.GetValue(CfgField::BuffID_V)->asValueVector(); if (!bufferData.empty()) { auto iter_buff = bufferData.begin(); auto bufferId = iter_buff->asInt(); langText = MultiLanguage::getInstance()->GetText((int)LanguageIdEnum::BufferId); CfgDataRow dataRow_Buffer(bufferId); langText += MultiLanguage::getInstance()->GetText(dataRow_Buffer.GetValue(CfgField::Name)->asInt()); text_Buff->setString(langText); text_Buff->setVisible(true); }else { text_Buff->setVisible(false); } langText = MultiLanguage::getInstance()->GetText((int)LanguageIdEnum::LifeId); langText += StringUtils::format("%d", dataRow.GetValue(CfgField::Hp)->asInt()); langText += " " + MultiLanguage::getInstance()->GetText((int)LanguageIdEnum::PowerId); langText += StringUtils::format("%d", dataRow.GetValue(CfgField::Atk)->asInt()); langText += " " + MultiLanguage::getInstance()->GetText((int)LanguageIdEnum::SpeedId); langText += StringUtils::format("%g", dataRow.GetValue(CfgField::Spd_F)->asFloat()); text_Attr->setString(langText); }