void DLGSkill::OnBnClickedSkillattrsave() { // TODO: 在此加入控制項告知處理常式程式碼 CSkillInfo* pInfo = getSkillInfo(); if(NULL == pInfo) { return; } attrSave(pInfo); }
void DLGSkill::OnLbnSelchangeSkilllist() { // TODO: 在此加入控制項告知處理常式程式碼 CSkillInfo* pInfo = getSkillInfo(); if(NULL == pInfo) { return; } replaceSelSkill(pInfo); }
void DLGSkill::OnEnChangeSkillcastmp() { // TODO: 如果這是 RICHEDIT 控制項,控制項將不會 // 傳送此告知,除非您覆寫 CDialog::OnInitDialog() // 函式和呼叫 CRichEditCtrl().SetEventMask() // 讓具有 ENM_CHANGE 旗標 ORed 加入遮罩。 // TODO: 在此加入控制項告知處理常式程式碼 CSkillInfo* pInfo = getSkillInfo(); pInfo->m_iCastMP = GetDlgItemInt(IDC_SkillCastMP); }
void DLGSkill::OnLbnSelchangeSkillmotioneffects() { // TODO: 在此加入控制項告知處理常式程式碼 CSkillInfo* pInfo = getSkillInfo(); if(NULL == pInfo) { return; } CListBox* pLB = (CListBox*) GetDlgItem(IDC_SkillMotionEffects); int oriSel = pLB->GetCurSel(); }
void DLGSkill::OnCbnSelchangeSkilltargettype() { // TODO: 在此加入控制項告知處理常式程式碼 CSkillInfo* pInfo = getSkillInfo(); if(NULL == pInfo) { return; } CComboBox* pCB = (CComboBox*) GetDlgItem(IDC_SkillTargetType); pInfo->m_target = (AttackTarget) pCB->GetCurSel(); }
void DLGSkill::OnCbnSelchangeSkilltype() { // TODO: 在此加入控制項告知處理常式程式碼 CSkillInfo* pInfo = getSkillInfo(); if(NULL == pInfo) { return; } CComboBox* pCB = (CComboBox*) GetDlgItem(IDC_SkillType); pInfo->m_type = (tagSKILL_TYPE) pCB->GetCurSel(); }
void DLGSkill::OnBnClickedSkillshield() { CSkillInfo *pInfo = getSkillInfo(); if(pInfo == NULL) return; CButton* pB = (CButton*) GetDlgItem(IDC_SkillShield); if(pB->GetCheck() == 1) pInfo->m_bRequireShield = true; else pInfo->m_bRequireShield = false; }
void DLGSkill::OnBnClickedSkillweapon() { CSkillInfo *pInfo = getSkillInfo(); if(pInfo == NULL) return; CButton* pB = (CButton*) GetDlgItem(IDC_SkillWeapon); if(pB->GetCheck() == 1) pInfo->m_bRequireWeapon = true; else pInfo->m_bRequireWeapon = false; }
void DLGSkill::OnEnChangeSkillactionid() { // TODO: 如果這是 RICHEDIT 控制項,控制項將不會 // 傳送此告知,除非您覆寫 CDialog::OnInitDialog() // 函式和呼叫 CRichEditCtrl().SetEventMask() // 讓具有 ENM_CHANGE 旗標 ORed 加入遮罩。 // TODO: 在此加入控制項告知處理常式程式碼 CSkillInfo* pInfo = getSkillInfo(); if(NULL == pInfo) { return; } pInfo->m_iActionID = GetDlgItemInt(IDC_SkillActionID); }
void DLGSkill::OnCbnSelchangeSkillattrtype() { // TODO: 在此加入控制項告知處理常式程式碼 CSkillInfo* pInfo = getSkillInfo(); if(NULL == pInfo) { return; } CComboBox* pCB = (CComboBox*) GetDlgItem(IDC_SkillAttrType); if(pCB->GetCurSel() != AttrType) { attrSave(pInfo); AttrType = pCB->GetCurSel(); attrShow(pInfo); } }
void DLGSkill::OnEnChangeSkillcastrange() { // TODO: 如果這是 RICHEDIT 控制項,控制項將不會 // 傳送此告知,除非您覆寫 CDialog::OnInitDialog() // 函式和呼叫 CRichEditCtrl().SetEventMask() // 讓具有 ENM_CHANGE 旗標 ORed 加入遮罩。 // TODO: 在此加入控制項告知處理常式程式碼 CSkillInfo* pInfo = getSkillInfo(); if(NULL == pInfo) { return; } CString str; GetDlgItemText(IDC_SkillCastRange, str); pInfo->m_fCastRange = (float) atof(str); }
void DLGSkill::OnLbnSelchangeSkillbuff() { // TODO: 在此加入控制項告知處理常式程式碼 CSkillInfo* pInfo = getSkillInfo(); if(NULL == pInfo) { return; } CListBox* pLB = (CListBox*) GetDlgItem(IDC_SkillBuff); int oriSel = pLB->GetCurSel(); if(CBuff::getInfoCount() == oriSel) { pInfo->m_iBuffID = -1; } else { pInfo->m_iBuffID = oriSel; } }
void StateSkill::execute(StateBase* parent) { BatCmdSkill* cmd = getCmd(); auto battleInfo = getBattleInfo(); auto ps = battleInfo->getPet(cmd->petUid); auto skill = ps->getSkillInfo(cmd->sid); ps->isActioned = true; if (ps->isDead || !ps->isBating) { return exitState(); } if (ps->isUnableAction) { return exitState(); } // 技能计算开始 // 生成技能运算公共数据 shared_ptr<FireSkill> fireInfo(new FireSkill); assign(fireInfo.get(), skill, skill->keySkill, 0); fireInfo->parent = nullptr; fireInfo->origin = battleInfo->topSkill() != nullptr ? battleInfo->topSkill().get() : nullptr; fireInfo->targets = fixedTargets(cmd->params, fireInfo.get(), skill->belongs.owner, skill->keySkill->target, 0); if (fireInfo->targets.size() == 0) { return exitState(); } // 压入栈 battleInfo->pushSkill(fireInfo); // 行动开始,可修改技能及目标 battleInfo->changeStage(Stage::ActionBegin); skill = fireInfo->skill; // 技能可能已被修改 // 技能释放 BatSeqSkill* s = new BatSeqSkill; s->petUid = fireInfo->firer; s->sid = fireInfo->skill->sid; s->params = fireInfo->targets; battleInfo->pushSeq(shared_ptr<ISeq>(s)); // 以次计算每个目标 // for (int i=0; i<fireInfo->targets.size(); i++) { // int dstuid = fireInfo->targets[i]; // // assign(fireInfo.get(), skill, skill->keySkill, dstuid); // createEffect(skill->keySkill->subType, skill->keySkill->subId)->execute(); // // if (!fireInfo->curr.isHit || fireInfo->isCancel) { // continue; // } // // // 计算次效果 // for (auto subsk : skill->keySkill->subs) { // shared_ptr<FireInfo> subfireInfo(new FireInfo); // subfireInfo->origin = fireInfo->origin; // subfireInfo->parent = fireInfo.get(); // fireInfo->children.push_back(subfireInfo); // // assign(subfireInfo.get(), skill, subsk.get(), dstuid); // pushSkill(subfireInfo); // // createEffect(subsk->subType, subsk->subId)->execute(); // // popSkill(); // } // // fireInfo->children.clear(); // } // // checkDead(fireInfo->targets); // // ps->onActioned(true); // // fireInfo->effect.cost.pp = 1; // changeStage(Stage::ActionEnd); // // if (keySkill->ppNum != -1) { // // BatSeqPP* pp = new BatSeqPP; // pp->petUid = fireInfo->firer; // pp->sid = fireInfo->sid; // pp->pp = fireInfo->effect.cost.pp; // pushSeq(BatSeqPtr(pp)); // } // // popSkill(); exitState(); }