package methods
//
// 车库 / 停车(House Parking)契约 —— 2026-09-30 新增。
// 为什么之前什么都没有:这一族 9 条 RPC 在服务端一直是
// DefaultReturnCatalog4229938 的 shape="void" 兜底(空 body),
// 且 SyncHouseParking(64277819) / SyncHouseParkingEntityBinding(64060781)
// 两个 S2C 服务端从来不发。客户端 GarageManager.lua 的
// LeaveGarage 第一步就读 currentParkingInfo.ParkingVehicleUid,
// 而它只能由 SyncHouseParkingEntityBinding 填 —— 服务端不发 ⇒ 为空 ⇒
// FatalLog + return ⇒ 连 AskTeleportFromHouseGarage 都发不出去。
// 这就是用户报的「按 F 驶离车库没有后续 + 车不在车位出现 + 大门不开」。
// 线格式来源(逐条取证,2026-09-30):
//
// - 字段名 / 顺序 / 类型:dump.cs 的 UX.Game.HouseVehicleParkingInfo(TypeDef 32690)
// / HouseParkingInfo(32691) / HouseMoveParkingSpaceInfo(32692) /
// HouseParkingEntityBinding(32693),与 RPCSerializeAuto.lua 的
// Auto.WriteHouseVehicleParkingInfo / WriteHouseParkingInfo /
// WriteHouseMoveParkingSpaceInfo / WriteHouseParkingEntityBinding 交叉核对一致。
// - 列表计数编码:Int7(biased 7-bit varint,线上写 count+1),即
// UxSerializer 对 list 的默认值。⚠️ 2026-09-30 更正:先前误判为 Int32,
// 依据是「房产族全用 Int32」—— 那是 C# 侧契约(Auto.cs 的
// HousesInfo.HouseInfoList 等)。车库这一族在两侧都是 Int7:
//
// - S2C:RPCDeserializeAuto.lua 的 midToReader[64277819] /
// midToReader[64060781] 都用 Base.ReadList7Bit,
// 而 RPCDeserializeBase.lua 里 ReadList7Bit 读 ReadInt7Bit、
// ReadList 读 ReadInt32 —— 两者确实不同。
// - C2S:ClientToGameDelegate.lua 的 AskHouseParking_Serializer /
// AskHouseMoveParkingSpace_Serializer / AskHouseCancelParking_Serializer
// 全部用 SerializeBase.WriteList7Bit;RPCSerializeBase.lua 里它写
// Write7BitEncodedInt(num)(该 UX 版方法即 biased 写法,空表 = 01)。
//
// - 列表元素编码:对象列表 = Complex(每个元素前一个 0xFF),
// 与 Base.ReadComplex(r, Auto.Reader[336]) / WriteComplexWrap(..., nullable:false) 一致。
// - 参数外壳:args 一律 [UxContract(Inline = true)](不写 0xFF 头)——
// 两侧的生成代码都是「裸着按顺序写各参数」,没有外层对象标记。
//
// ⚠️ 更正:SyncHouseParking / SyncHouseParkingEntityBinding
// 不是 CSharpOnly —— 它们在 RPCDeserializeAuto.lua 里都有 Lua reader
// (编号 64277819 / 64060781),所以 Lua 侧就是权威,线格式以 Lua 为准。
//
// ---------------------------------------------------------------------------------------------
// 数据元素(Complex,列表里每个元素前写一个 0xFF)
// ---------------------------------------------------------------------------------------------
// SyncHouseParking 的 addInfoList / cancelInfoList 元素。
// dump.cs 32690 / RPCSerializeAuto.lua WriteHouseVehicleParkingInfo:
// HouseId(u32) + VehicleId(u32) + ParkingSpaceIndex(i32)。
// 客户端 Auto.Reader[336] 同序。
// SyncHouseParkingEntityBinding 的 bindingList 元素。
// dump.cs 32693 / WriteHouseParkingEntityBinding:
// VehicleId(u32) + EntityId(u64) + ParkingSpaceIndex(i32)。客户端 Auto.Reader[290] 同序。
// AskHouseParking 的 parkingInfoList 元素。
// dump.cs 32691 / WriteHouseParkingInfo:HouseId(u32) + VehicleId(u32)。
// AskHouseMoveParkingSpace 的 moveParkingSpaceInfoList 元素。
// dump.cs 32692 / WriteHouseMoveParkingSpaceInfo:
// VehicleId(u32) + HouseId(u32) + ParkingSpaceIndex(i32)。客户端 Auto.Reader[1141] 同序。
// ---------------------------------------------------------------------------------------------
// S2C(服务端 → 客户端)
// ---------------------------------------------------------------------------------------------
//
// SyncHouseParking(64277819) —— 进车库后「哪个车位停着哪辆车」。
// 客户端 GarageManager.SyncHouseParking(cancelInfoList, addInfoList) 消费:
// addInfoList 会填 currentParkingInfo.ParkingInfo[ParkingSpaceIndex+1] = VehicleId
// 并触发「进车库演出」→ 演出结束自己发 AskCreateHouseParkingVehicles。
// 服务端在玩家「调取载具 / 入库」时推这一条。
//
//
// SyncHouseParkingEntityBinding(64060781) —— 每辆车 spawn 之后的 EntityId 回填。
// 这是「按 F 驶离车库」能不能走下去的命门:客户端
// currentParkingInfo.ParkingVehicleUid[ParkingSpaceIndex+1] = EntityId,
// 而 LeaveGarage 第一行就查它。
//
// ---------------------------------------------------------------------------------------------
// C2S(客户端 → 服务端)—— 都是 Inline 外壳(与门族一致:无 0xFF 头)
// ---------------------------------------------------------------------------------------------
// AskHouseParking(63154177):List<HouseParkingInfo>。
// AskHouseMoveParkingSpace(63780060):List<HouseMoveParkingSpaceInfo>。
// AskHouseCancelParking(63495236):List<uint>。
// AskTeleportToHouseGarage(63099218):uint houseId, int parkingSpaceIndex。
// AskTeleportFromHouseGarage(63203581):uint houseId, int parkingSpaceIndex, uint vehicleConfigId。
// AskCreateHouseParkingVehicles(63479109):uint houseId。
// AskDestroyHouseParkingVehicles(63266373):uint houseId。
// GmHouseParking(65027125):List<uint> houseIdList, List<uint> vehicleIdList。
// GmHouseCancelParking(65601170):List<uint> vehicleIdList。