//
//  LNRoomResponse.swift
//  Gami
//
//  Created by OneeChan on 2026/3/11.
//

import Foundation
import AutoCodable


enum LNRoomApplySeatType: Int, Decodable {
    case all = 0
    case guest = 1
    case playmate = 2
}


struct LNRoomType: OptionSet, Decodable {
    let rawValue: Int
    
    static let unknown = LNRoomType([])
    static let playmate = LNRoomType(rawValue: 1<<0)
    static var availableType: [LNRoomType] {
        [.playmate]
    }
}

@AutoCodable
class LNRoomAbilityVO: Decodable {
    var homeowner: Bool = false
    var roomTitle: String = ""
    var roomCover: String = ""
    var forbidAudio: Bool = false
    var roomTypes: [LNRoomType] = []
}

@AutoCodable
class LNRoomCreateResponse: Decodable {
    var roomId: String = ""
}

@AutoCodable
class LNRoomUserVO: Decodable {
    var id: String = ""
    var userNo: String = ""
    var avatar: String = ""
    var nickname: String = ""
    var birthday: Int = 0
    var age: Int = 0
    var gender: LNUserGender = .unknow
    var intro: String = ""
    var playmate: Bool = false
    var interests: [LNUserInterestVO] = []
    var photos: [String] = []
    
    init() { }
}

@AutoCodable
class LNRoomMicApplyPageVO: Decodable {
    var applyId: String = ""
    var applyTime: Int64 = 0
    var user: LNRoomUserVO = LNRoomUserVO()
    
    var hasAccept = false
}

@AutoCodable
class LNRoomMicApplyListResponse: Decodable {
    var list: [LNRoomMicApplyPageVO] = []
    var total: Int? = nil
    var next: String = ""
}

@AutoCodable
class LNRoomGameCategoryResponse: Decodable {
    var list: [LNGameCategoryItemVO] = []
}

@AutoCodable
class LNRoomUserListItemVO: Decodable {
    var user: LNRoomUserVO = LNRoomUserVO()
    
    var hasInvited = false
}

@AutoCodable
class LNRoomUserListResponse: Decodable {
    var list: [LNRoomUserListItemVO] = []
    var total: Int? = nil
    var next: String = ""
}

@AutoCodable
class LNRoomEntranceResponse: Decodable {
    var result: Bool = false
}

@AutoCodable
class LNRandomRoomResponse: Decodable {
    var room: LNRoomItemVO? = nil
}

@AutoCodable
class LNUserCurRoomResponse: Decodable {
    var room: LNRoomItemVO? = nil
}
