[스몬 개발] 카드 합성 기능 버그 수정

avatar

안녕하세요 @realmankwon입니다.

어제 작성했던 카드 합성 api 에 버그가 있어서 수정을 했습니다.
버그는 id 가지고만 판단을 하는 바람에 골드카드가 함께 계산이 되어 합성이 되지 않은 것입니다.

G3, C3 가 썩여 있는 것은 합성이 되지 않는 카드이고 이것들은 제외시켜야 했습니다.
일단 id 로 체크한 후에 gold 여부로 다시 개수를 세어야 하는 상황인지라 어떻게 할지 고민하다가 앞에 코드와 id를 함께 넘기기로 했습니다.

async function cmdAllCombineCards(account){
return new Promise(async (resolve, reject) => {
    let mycards = await getMyCards(account);

    let twoMoreCards = mycards.reduce((object, currentValue) =>{
        const keyword = currentValue.uid.split('-')[0] + '-' + currentValue.uid.split('-')[1];
        if(!object[keyword]){
            object[keyword] = 0;
        }
        object[keyword]++;
        return object;
    }, {});

    for(const keyword in twoMoreCards){
        if(twoMoreCards[keyword] > 1) 
            await cmdCombineCards(account, keyword);
    }
});
}

keyword로 넘긴 것을 다시 keyword 로 검색해서 처리하도록 수정했습니다.

async function cmdCombineCards(account, keyword){
return new Promise(async (resolve, reject) => {
    const key = await getKey(account, 'posting');
    let mycards = await getMyCards(account);

    mycards = mycards.filter(data => data.uid.split('-')[0] + '-' + data.uid.split('-')[1] == keyword);
   
    let cards = [];

    for(const mycard of mycards){
        cards.push(mycard.uid);
    }
    
    steem.broadcast.customJson(
        key, 
        [], 
        [account], 
        "sm_combine_cards", 
        JSON.stringify({
            cards: cards,
            app: appName
        }),
        (err, result) => {
            if (err) {
                reject(err);
                return;
            }
            console.log(`Combine card (${keyword})  : ${cards}`);
            resolve(result);
        });
});
}

그리고 어제 글에 트아님께서 댓글로 달아 놓으신 것처럼 만랩 여부를 판단하는 것도 나중에 추가해야 할 듯 합니다.
스몬 관련 개발은 할수록 욕심이 나서 참아야 할 듯 합니다. ^^



0
0
0.000
1 comments