bancho/writer.js

'use strict';
const Base = require('../base');
const Packet = require('../packets');
const Layouts = require('../layouts');

class Writer extends Base.Writer {
    /**
     *
     * @param {Number} data
     * @return {Writer}
     */
    LoginReply(data) {
        return this.WritePacket({
            id: Packet.Bancho_LoginReply, data: this.MarshalPacket(data, {type: 'int32'})
        })
    }

    /**
     *
     * @return {Writer}
     */
    CommandError() {
        return this.WritePacket({
            id: Packet.Bancho_CommandError, data: this.MarshalPacket()
        })
    }

    /**
     * @param {Message} data
     * @return {Writer}
     */
    SendMessage(data) {
        return this.WritePacket({
            id: Packet.Bancho_SendMessage, data: this.MarshalPacket(data, Layouts.message)
        })
    }

    /**
     *
     * @return {Writer}
     */
    Ping() {
        return this.WritePacket({
            id: Packet.Bancho_Ping, data: this.MarshalPacket()
        })
    }

    /**
     *
     * @param {String} data
     * @return {Writer}
     */
    HandleIrcChangeUsername(data) {
        return this.WritePacket({
            id: Packet.Bancho_HandleIrcChangeUsername, data: this.MarshalPacket(data, {type: 'string'})
        })
    }

    /**
     *
     * @return {Writer}
     */
    HandleIrcQuit() {
        return this.WritePacket({
            id: Packet.Bancho_HandleIrcQuit, data: this.MarshalPacket()
        })
    }

    /**
     *
     * @param {OsuUpdate} data
     * @return {Writer}
     */
    HandleOsuUpdate(data) {
        return this.WritePacket({
            id: Packet.Bancho_HandleOsuUpdate, data: this.MarshalPacket(data, Layouts.userStats)
        })
    }

    /**
     *
     * @param {UserQuit} data
     * @return {Writer}
     */
    HandleUserQuit(data) {
        return this.WritePacket({
            id: Packet.Bancho_HandleUserQuit, data: this.MarshalPacket(data, Layouts.userQuit)
        })
    }

    /**
     *
     * @param {Number} data
     * @return {Writer}
     */
    SpectatorJoined(data) {
        return this.WritePacket({
            id: Packet.Bancho_SpectatorJoined, data: this.MarshalPacket(data, {type: 'int32'})
        })
    }

    /**
     *
     * @param {Number} data
     * @return {Writer}
     */
    SpectatorLeft(data) {
        return this.WritePacket({
            id: Packet.Bancho_SpectatorLeft, data: this.MarshalPacket(data, {type: 'int32'})
        })
    }

    /**
     *
     * @param {ReplayFrame} data
     * @return {Writer}
     */
    SpectateFrames(data) {
        return this.WritePacket({
            id: Packet.Bancho_SpectateFrames, data: this.MarshalPacket(data, Layouts.spectateFrames)
        })
    }

    /**
     *
     * @return {Writer}
     */
    VersionUpdate() {
        return this.WritePacket({
            id: Packet.Bancho_VersionUpdate, data: this.MarshalPacket()
        })
    }

    /**
     *
     * @param {Number} data
     * @return {Writer}
     */
    SpectatorCantSpectate(data) {
        return this.WritePacket({
            id: Packet.Bancho_SpectatorCantSpectate, data: this.MarshalPacket(data, {type: 'int32'})
        })
    }

    /**
     *
     * @return {Writer}
     */
    GetAttention() {
        return this.WritePacket({
            id: Packet.Bancho_GetAttention, data: this.MarshalPacket()
        })
    }

    /**
     *
     * @param {String} data
     * @return {Writer}
     */
    Announce(data) {
        return this.WritePacket({
            id: Packet.Bancho_Announce, data: this.MarshalPacket(data, {type: 'string'})
        })
    }

    /**
     *
     * @param {Match} data
     * @return {Writer}
     */
    MatchUpdate(data) {
        return this.WritePacket({
            id: Packet.Bancho_MatchUpdate, data: this.MarshalPacket(data, Layouts.multiplayerLobby)
        })
    }

    /**
     *
     * @param {Match} data
     * @return {Writer}
     */
    MatchNew(data) {
        return this.WritePacket({
            id: Packet.Bancho_MatchNew, data: this.MarshalPacket(data, Layouts.multiplayerLobby)
        })
    }

    /**
     *
     * @param {Number} data
     * @return {Writer}
     */
    MatchDisband(data) {
        return this.WritePacket({
            id: Packet.Bancho_MatchDisband, data: this.MarshalPacket(data, {type: 'int32'})
        })
    }

    /**
     *
     * @param {Match} data
     * @return {Writer}
     */
    MatchJoinSuccess(data) {
        return this.WritePacket({
            id: Packet.Bancho_MatchJoinSuccess, data: this.MarshalPacket(data, Layouts.multiplayerLobby)
        })
    }

    /**
     *
     * @return {Writer}
     */
    MatchJoinFail() {
        return this.WritePacket({
            id: Packet.Bancho_MatchJoinFail, data: this.MarshalPacket()
        })
    }

    /**
     *
     * @param {Number} data
     * @return {Writer}
     */
    FellowSpectatorJoined(data) {
        return this.WritePacket({
            id: Packet.Bancho_FellowSpectatorJoined, data: this.MarshalPacket(data, {type: 'int32'})
        })
    }

    /**
     *
     * @param {Number} data
     * @return {Writer}
     */
    FellowSpectatorLeft(data) {
        return this.WritePacket({
            id: Packet.Bancho_FellowSpectatorLeft, data: this.MarshalPacket(data, {type: 'int32'})
        })
    }

    /**
     *
     * @param {Match} data
     * @return {Writer}
     */
    MatchStart(data) {
        return this.WritePacket({
            id: Packet.Bancho_MatchStart, data: this.MarshalPacket(data, Layouts.multiplayerLobby)
        })
    }

    /**
     *
     * @param {ScoreFrame} data
     * @return {Writer}
     */
    MatchScoreUpdate(data) {
        return this.WritePacket({
            id: Packet.Bancho_MatchScoreUpdate, data: this.MarshalPacket(data, {type: 'scoreframe'})
        })
    }

    /**
     *
     * @return {Writer}
     */
    MatchTransferHost() {
        return this.WritePacket({
            id: Packet.Bancho_MatchTransferHost, data: this.MarshalPacket()
        })
    }

    /**
     *
     * @return {Writer}
     */
    MatchAllPlayersLoaded() {
        return this.WritePacket({
            id: Packet.Bancho_MatchAllPlayersLoaded, data: this.MarshalPacket()
        })
    }

    /**
     *
     * @param {Number} data
     * @return {Writer}
     */
    MatchPlayerFailed(data) {
        return this.WritePacket({
            id: Packet.Bancho_MatchPlayerFailed, data: this.MarshalPacket(data, {type: 'int32'})
        })
    }

    /**
     *
     * @return {Writer}
     */
    MatchComplete() {
        return this.WritePacket({
            id: Packet.Bancho_MatchComplete, data: this.MarshalPacket()
        })
    }

    /**
     *
     * @return {Writer}
     */
    MatchSkip() {
        return this.WritePacket({
            id: Packet.Bancho_MatchSkip, data: this.MarshalPacket()
        })
    }

    /**
     *
     * @return {Writer}
     */
    Unauthorised() {
        return this.WritePacket({
            id: Packet.Bancho_Unauthorised, data: this.MarshalPacket()
        })
    }

    /**
     *
     * @param {String} data
     * @return {Writer}
     */
    ChannelJoinSuccess(data) {
        return this.WritePacket({
            id: Packet.Bancho_ChannelJoinSuccess, data: this.MarshalPacket(data, {type: 'string'})
        })
    }

    /**
     *
     * @param {Channel} data
     * @return {Writer}
     */
    ChannelAvailable(data) {
        return this.WritePacket({
            id: Packet.Bancho_ChannelAvailable, data: this.MarshalPacket(data, Layouts.channel)
        })
    }

    /**
     *
     * @param {String} data
     * @return {Writer}
     */
    ChannelRevoked(data) {
        return this.WritePacket({
            id: Packet.Bancho_ChannelRevoked, data: this.MarshalPacket(data, {type: 'string'})
        })
    }

    /**
     *
     * @param {Channel} data
     * @return {Writer}
     */
    ChannelAvailableAutojoin(data) {
        return this.WritePacket({
            id: Packet.Bancho_ChannelAvailableAutojoin, data: this.MarshalPacket(data, Layouts.channel)
        })
    }

    /**
     *
     * @return {Writer}
     */
    BeatmapInfoReply() {
        return this.WritePacket({
            id: Packet.Bancho_BeatmapInfoReply, data: this.MarshalPacket()
        })
    }

    /**
     *
     * @param {Number} data
     * @return {Writer}
     */
    LoginPermissions(data) {
        return this.WritePacket({
            id: Packet.Bancho_LoginPermissions, data: this.MarshalPacket(data, {type: 'int32'})
        })
    }

    /**
     *
     * @param {Array} data
     * @return {Writer}
     */
    FriendsList(data) {
        return this.WritePacket({
            id: Packet.Bancho_FriendsList, data: this.MarshalPacket(data, {type: 'int32array'})
        })
    }

    /**
     *
     * @param {Number} data
     * @return {Writer}
     */
    ProtocolNegotiation(data) {
        return this.WritePacket({
            id: Packet.Bancho_ProtocolNegotiation, data: this.MarshalPacket(data, {type: 'int32'})
        })
    }

    /**
     *
     * @param {String} data
     * @return {Writer}
     */
    TitleUpdate(data) {
        return this.WritePacket({
            id: Packet.Bancho_TitleUpdate, data: this.MarshalPacket(data, {type: 'string'})
        })
    }

    /**
     *
     * @return {Writer}
     */
    Monitor() {
        return this.WritePacket({
            id: Packet.Bancho_Monitor, data: this.MarshalPacket()
        })
    }

    /**
     *
     * @param {Number} data
     * @return {Writer}
     */
    MatchPlayerSkipped(data) {
        return this.WritePacket({
            id: Packet.Bancho_MatchPlayerSkipped, data: this.MarshalPacket(data, {type: 'int32'})
        })
    }

    /**
     *
     * @param {UserPresence} data
     * @return {Writer}
     */
    UserPresence(data) {
        return this.WritePacket({
            id: Packet.Bancho_UserPresence, data: this.MarshalPacket(data, Layouts.userPresence)
        })
    }

    /**
     *
     * @param {Number} data
     * @return {Writer}
     */
    Restart(data) {
        return this.WritePacket({
            id: Packet.Bancho_Restart, data: this.MarshalPacket(data, {type: 'int32'})
        })
    }

    /**
     *
     * @param {Message} data
     * @return {Writer}
     */
    Invite(data) {
        return this.WritePacket({
            id: Packet.Bancho_Invite, data: this.MarshalPacket(data, Layouts.message)
        })
    }

    /**
     *
     * @return {Writer}
     */
    ChannelListingComplete() {
        return this.WritePacket({
            id: Packet.Bancho_ChannelListingComplete, data: this.MarshalPacket()
        })
    }

    /**
     *
     * @param {String} data
     * @return {Writer}
     */
    MatchChangePassword(data) {
        return this.WritePacket({
            id: Packet.Bancho_MatchChangePassword, data: this.MarshalPacket(data, {type: 'string'})
        })
    }

    /**
     *
     * @param {Number} data
     * @return {Writer}
     */
    BanInfo(data) {
        return this.WritePacket({
            id: Packet.Bancho_BanInfo, data: this.MarshalPacket(data, {type: 'int32'})
        })
    }

    /**
     *
     * @param {Number} data
     * @return {Writer}
     */
    UserSilenced(data) {
        return this.WritePacket({
            id: Packet.Bancho_UserSilenced, data: this.MarshalPacket(data, {type: 'int32'})
        })
    }

    /**
     *
     * @param {Number} data
     * @return {Writer}
     */
    UserPresenceSingle(data) {
        return this.WritePacket({
            id: Packet.Bancho_UserPresenceSingle, data: this.MarshalPacket(data, {type: 'int32'})
        })
    }

    /**
     *
     * @param {Array} data
     * @return {Writer}
     */
    UserPresenceBundle(data) {
        return this.WritePacket({
            id: Packet.Bancho_UserPresenceBundle, data: this.MarshalPacket(data, {type: 'int32array'})
        })
    }

    /**
     *
     * @param {Message} data
     * @return {Writer}
     */
    UserPMBlocked(data) {
        return this.WritePacket({
            id: Packet.Bancho_UserPMBlocked, data: this.MarshalPacket(data, Layouts.message)
        })
    }

    /**
     *
     * @param {Message} data
     * @return {Writer}
     */
    TargetIsSilenced(data) {
        return this.WritePacket({
            id: Packet.Bancho_TargetIsSilenced, data: this.MarshalPacket(data, Layouts.message)
        })
    }

    /**
     *
     * @return {Writer}
     */
    VersionUpdateForced() {
        return this.WritePacket({
            id: Packet.Bancho_VersionUpdateForced, data: this.MarshalPacket()
        })
    }

    /**
     *
     * @param {Number} data
     * @return {Writer}
     */
    SwitchServer(data) {
        return this.WritePacket({
            id: Packet.Bancho_SwitchServer, data: this.MarshalPacket(data, {type: 'int32'})
        })
    }

    /**
     *
     * @return {Writer}
     */
    AccountRestricted() {
        return this.WritePacket({
            id: Packet.Bancho_AccountRestricted, data: this.MarshalPacket()
        })
    }

    /**
     *
     * @param {String} data
     * @return {Writer}
     */
    RTX(data) {
        return this.WritePacket({
            id: Packet.Bancho_RTX, data: this.MarshalPacket(data, {type: 'string'})
        })
    }

    /**
     *
     * @param {String} data
     * @return {Writer}
     */
    SwitchTourneyServer(data) {
        return this.WritePacket({
            id: Packet.Bancho_SwitchTourneyServer, data: this.MarshalPacket(data, {type: 'string'})
        })
    }
}

module.exports = Writer;