티스토리 뷰

이터레이팅 가능하게 아래 코드를 수정하고

Object.Key을 사용해서 이터레이팅 해서 초기화 하는 코드

const on = 'on';
export const Callbacks : {[key: string]: string} = {
    'TableInfo': on + Packet.TableInfo.name,
    'BurnCardInfoToC': on + Packet.TableInfo.name,
    'BetInfoToC': on + Packet.BetInfoToC.name,
    'BettingTimeToC': on + Packet.BettingTimeToC.name,
    'CancelBetInfoToC': on + Packet.CancelBetInfoToC.name,
    'PayoutListToC': on + Packet.PayoutListToC.name,
    'DealToC': on + Packet.DealToC.name,
    'JoinPlayer': on + Packet.JoinPlayer.name,
    'LeavePlayer': on + Packet.LeavePlayer.name,
    'LeaveRoomRes': on + Base.LeaveRoomRes.name,
};

const CallbackMap = new Map<string, string>();

class RoomReciever extends MessageReceiver {
    target: cc.Node;
    constructor(target: cc.Node) {
        super();
        this.addFilter(Packet.TableInfo.name);
        this.addFilter(Packet.BurnCardInfoToC.name);
        this.addFilter(Packet.BetInfoToC.name);
        this.addFilter(Packet.BettingTimeToC.name);
        this.addFilter(Packet.CancelBetInfoToC.name);
        this.addFilter(Packet.PayoutListToC.name);
        this.addFilter(Packet.DealToC.name);
        this.addFilter(Base.LeaveRoomRes.name);
        this.addFilter(Packet.JoinPlayer.name);
        this.addFilter(Packet.LeavePlayer.name);
        this.target = target;
    }



    work(message: object) {
        console.log(message);
        switch (message.constructor.name) {
            case Packet.TableInfo.name: {
                this.table.onTableInfo(message as Packet.TableInfo);
                break;
            }
            case Packet.BurnCardInfoToC.name: {
                this.table.onBurnCardInfo(message as Packet.BurnCardInfoToC);
                break;
            }
            case Packet.BetInfoToC.name: {
                this.table.onBetInfo(message as Packet.BetInfoToC);
                break;
            }
            case Packet.BettingTimeToC.name: {
                this.table.onBettingTime(message as Packet.BettingTimeToC);
                break;
            }
            case Packet.CancelBetInfoToC.name: {
                this.table.onCancelBetInfo(message as Packet.CancelBetInfoToC);
                break;
            }
            case Packet.PayoutListToC.name: {
                this.table.onPayoutList(message as Packet.PayoutListToC);
                break;
            }
            case Packet.DealToC.name: {
                this.table.onDeal(message as Packet.DealToC);
                break;
            }
            case Packet.JoinPlayer.name: {
                this.table.onJoinPlayer(message as Packet.JoinPlayer);
                break;
            }
            case Packet.LeavePlayer.name: {
                this.table.onLeavePlayer(message as Packet.LeavePlayer);
                break;
            }
            case Base.LeaveRoomRes.name: {
                this.table.onLeaveRoom(message as Base.LeaveRoomRes);
                break;
            }
        }
    }
const on = 'on';
export const Callbacks : {[key: string]: string} = {
    'TableInfo': on + Packet.TableInfo.name,
    'BurnCardInfoToC': on + Packet.TableInfo.name,
    'BetInfoToC': on + Packet.BetInfoToC.name,
    'BettingTimeToC': on + Packet.BettingTimeToC.name,
    'CancelBetInfoToC': on + Packet.CancelBetInfoToC.name,
    'PayoutListToC': on + Packet.PayoutListToC.name,
    'DealToC': on + Packet.DealToC.name,
    'JoinPlayer': on + Packet.JoinPlayer.name,
    'LeavePlayer': on + Packet.LeavePlayer.name,
    'LeaveRoomRes': on + Base.LeaveRoomRes.name,
};

const CallbackMap = new Map<string, string>();

class RoomReciever extends MessageReceiver {
    target: cc.Node;
    constructor(target: cc.Node) {
        super();
        this.addFilter(Packet.TableInfo.name);
        this.addFilter(Packet.BurnCardInfoToC.name);
        this.addFilter(Packet.BetInfoToC.name);
        this.addFilter(Packet.BettingTimeToC.name);
        this.addFilter(Packet.CancelBetInfoToC.name);
        this.addFilter(Packet.PayoutListToC.name);
        this.addFilter(Packet.DealToC.name);
        this.addFilter(Base.LeaveRoomRes.name);
        this.addFilter(Packet.JoinPlayer.name);
        this.addFilter(Packet.LeavePlayer.name);
        this.target = target;
    }


// 여기 줄임
    work(message: object) {
        console.log(message);
        this.target.emit(on + message.constructor.name, {msg:message});
    }
}
const on = 'on';
export const Callbacks : {[key: string]: string} = {
    'TableInfo': on + Packet.TableInfo.name,
    'BurnCardInfoToC': on + Packet.TableInfo.name,
    'BetInfoToC': on + Packet.BetInfoToC.name,
    'BettingTimeToC': on + Packet.BettingTimeToC.name,
    'CancelBetInfoToC': on + Packet.CancelBetInfoToC.name,
    'PayoutListToC': on + Packet.PayoutListToC.name,
    'DealToC': on + Packet.DealToC.name,
    'JoinPlayer': on + Packet.JoinPlayer.name,
    'LeavePlayer': on + Packet.LeavePlayer.name,
    'LeaveRoomRes': on + Base.LeaveRoomRes.name,
};

const CallbackNames = [
    Packet.TableInfo.name,
    Packet.BurnCardInfoToC.name,
    Packet.BetInfoToC.name,
    Packet.BettingTimeToC.name,
    Packet.CancelBetInfoToC.name,
    Packet.PayoutListToC.name,
    Packet.DealToC.name,
    Base.LeaveRoomRes.name,
    Packet.JoinPlayer.name,
    Packet.LeavePlayer.name,
];

class RoomReciever extends MessageReceiver {
    target: cc.Node;

// 여기 줄임
    constructor(target: cc.Node) {
        super();
        Object.keys(CallbackNames).forEach(c => {
            this.addFilter(c);
        });
    }


    work(message: object) {
        console.log(message);
        this.target.emit(on + message.constructor.name, {msg:message});
    }
}
// 최종 형태
const CallbackNames = [
    Packet.TableInfo.name,
    Packet.BurnCardInfoToC.name,
    Packet.BetInfoToC.name,
    Packet.BettingTimeToC.name,
    Packet.CancelBetInfoToC.name,
    Packet.PayoutListToC.name,
    Packet.DealToC.name,
    Base.LeaveRoomRes.name,
    Packet.JoinPlayer.name,
    Packet.LeavePlayer.name,
];

const on = 'on';
export const Callbacks = new Map<string, string>();
Object.keys(CallbackNames).forEach(c => {
    Callbacks.set(c, on + c);
})

class RoomReciever extends MessageReceiver {
    target: cc.Node;
    constructor(target: cc.Node) {
        super();
        Object.keys(CallbackNames).forEach(c => {
            this.addFilter(c);
        });
    }


    work(message: object) {
        console.log(message);
        this.target.emit(on + message.constructor.name, {msg:message});
    }
}


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함