Example #1
0
void DLGSkill::OnBnClickedSkillattrsave()
{
    // TODO: 在此加入控制項告知處理常式程式碼
    CSkillInfo* pInfo = getSkillInfo();
    if(NULL == pInfo)
    {
        return;
    }
    attrSave(pInfo);
}
Example #2
0
void DLGSkill::OnLbnSelchangeSkilllist()
{
    // TODO: 在此加入控制項告知處理常式程式碼
    CSkillInfo* pInfo = getSkillInfo();
    if(NULL == pInfo)
    {
        return;
    }
    replaceSelSkill(pInfo);
}
Example #3
0
void DLGSkill::OnEnChangeSkillcastmp()
{
    // TODO:  如果這是 RICHEDIT 控制項,控制項將不會
    // 傳送此告知,除非您覆寫 CDialog::OnInitDialog()
    // 函式和呼叫 CRichEditCtrl().SetEventMask()
    // 讓具有 ENM_CHANGE 旗標 ORed 加入遮罩。

    // TODO:  在此加入控制項告知處理常式程式碼
    CSkillInfo* pInfo = getSkillInfo();
    pInfo->m_iCastMP = GetDlgItemInt(IDC_SkillCastMP);
}
Example #4
0
void DLGSkill::OnLbnSelchangeSkillmotioneffects()
{
    // TODO: 在此加入控制項告知處理常式程式碼
    CSkillInfo* pInfo = getSkillInfo();
    if(NULL == pInfo)
    {
        return;
    }
    CListBox* pLB = (CListBox*) GetDlgItem(IDC_SkillMotionEffects);
    int oriSel = pLB->GetCurSel();
}
Example #5
0
void DLGSkill::OnCbnSelchangeSkilltargettype()
{
    // TODO: 在此加入控制項告知處理常式程式碼
    CSkillInfo* pInfo = getSkillInfo();
    if(NULL == pInfo)
    {
        return;
    }
    CComboBox* pCB = (CComboBox*) GetDlgItem(IDC_SkillTargetType);
    pInfo->m_target = (AttackTarget) pCB->GetCurSel();
}
Example #6
0
void DLGSkill::OnCbnSelchangeSkilltype()
{
    // TODO: 在此加入控制項告知處理常式程式碼
    CSkillInfo* pInfo = getSkillInfo();
    if(NULL == pInfo)
    {
        return;
    }
    CComboBox* pCB = (CComboBox*) GetDlgItem(IDC_SkillType);
    pInfo->m_type = (tagSKILL_TYPE) pCB->GetCurSel();
}
Example #7
0
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;
}
Example #8
0
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;
}
Example #9
0
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);
}
Example #10
0
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);
    }
}
Example #11
0
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);
}
Example #12
0
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;
    }
}
Example #13
0
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();
}