logic.go 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482
  1. package mapCall
  2. import (
  3. capp "f1-game/internal/cherry_app"
  4. "f1-game/internal/code"
  5. "f1-game/internal/enum"
  6. nameActor "f1-game/internal/name/actor"
  7. nameRemote "f1-game/internal/name/remote"
  8. "f1-game/internal/pb"
  9. "f1-game/internal/types"
  10. mapTypes "f1-game/nodes/map/internal/types"
  11. cfacade "github.com/cherry-game/cherry/facade"
  12. )
  13. var (
  14. Logic = &logicCall{
  15. logicPath: cfacade.NewPath("", nameActor.Map_Logic),
  16. }
  17. )
  18. type logicCall struct {
  19. logicPath string
  20. }
  21. func (p *logicCall) GetSiegePoints(objectID int64) (*pb.BuildSiegePoint, int32) {
  22. rsp := &pb.BuildSiegePoint{}
  23. errCode := capp.CallWait(p.logicPath, nameRemote.MapLogic_GetSiegePoints, &pb.I64{Value: objectID}, rsp)
  24. if code.IsFail(errCode) {
  25. return nil, errCode
  26. }
  27. return rsp, code.OK
  28. }
  29. func (p *logicCall) AutoMarchResult(req *pb.AutoMarchResult) {
  30. capp.Call(p.logicPath, nameRemote.MapLogic_AutoMarchResult, req)
  31. }
  32. // 获取资源守军
  33. func (p *logicCall) ResArmies(req *pb.I64) (*pb.I32List, int32) {
  34. rsp := &pb.I32List{}
  35. errCode := capp.CallWait(p.logicPath, nameRemote.MapLogic_ResArmies, req, rsp)
  36. if code.IsFail(errCode) {
  37. return nil, errCode
  38. }
  39. return rsp, code.OK
  40. }
  41. // 主城加固,返回三个时间:准备结束时间、加固结束时间、冷却结束时间
  42. func (p *logicCall) Reinforce(playerID int64) (*pb.I64List, int32) {
  43. req := &pb.I64{Value: playerID}
  44. rsp := &pb.I64List{}
  45. errCode := capp.CallWait(p.logicPath, nameRemote.MapLogic_Reinforce, req, rsp)
  46. if code.IsFail(errCode) {
  47. return nil, errCode
  48. }
  49. return rsp, code.OK
  50. }
  51. // 主城加固取消
  52. func (p *logicCall) ReinforceCancel(playerID int64) int32 {
  53. req := &pb.I64{Value: playerID}
  54. return capp.CallWait(p.logicPath, nameRemote.MapLogic_ReinforceCancel, req, nil)
  55. }
  56. // 获取出生州状态
  57. func (p *logicCall) BornStateInfo() (*pb.I32I32List, int32) {
  58. rsp := &pb.I32I32List{}
  59. errCode := capp.CallWait(p.logicPath, nameRemote.MapLogic_BornStateInfo, nil, rsp)
  60. if code.IsFail(errCode) {
  61. return nil, errCode
  62. }
  63. return rsp, code.OK
  64. }
  65. // 玩家进入地图
  66. func (p *logicCall) Enter(playerID int64) (*pb.MapEnterResponse, int32) {
  67. rsp := &pb.MapEnterResponse{}
  68. errCode := capp.CallWait(p.logicPath, nameRemote.MapLogic_Enter, &pb.I64{Value: playerID}, rsp)
  69. if code.IsFail(errCode) {
  70. return nil, errCode
  71. }
  72. return rsp, code.OK
  73. }
  74. // 玩家退出地图
  75. func (p *logicCall) Quit(playerID int64) {
  76. rsp := &pb.MapEnterResponse{}
  77. errCode := capp.CallWait(p.logicPath, nameRemote.MapLogic_Quit, &pb.I64{Value: playerID}, rsp)
  78. if code.IsFail(errCode) {
  79. return
  80. }
  81. }
  82. // Reborn 玩家重新出生
  83. func (p *logicCall) Reborn(playerID int64, stateID int32) (*pb.Point, int32) {
  84. req := &pb.I64I32{
  85. Key: playerID,
  86. Value: stateID,
  87. }
  88. rsp := &pb.Point{}
  89. errCode := capp.CallWait(p.logicPath, nameRemote.MapLogic_Reborn, req, rsp)
  90. if code.IsFail(errCode) {
  91. return nil, errCode
  92. }
  93. return rsp, code.OK
  94. }
  95. // 调用 logic 选择出生州
  96. func (p *logicCall) SelectState(arg *pb.SelectStateRequest) (*pb.SelectStateResponse, int32) {
  97. rsp := &pb.SelectStateResponse{}
  98. errCode := capp.CallWait(p.logicPath, nameRemote.MapLogic_SelectState, arg, rsp)
  99. if code.IsFail(errCode) {
  100. return nil, errCode
  101. }
  102. return rsp, code.OK
  103. }
  104. // Comeback 玩家再起
  105. func (p *logicCall) Comeback(playerID int64, rechoose bool, stateID int32) (*pb.Point, int32) {
  106. req := &pb.PlayerComeback{
  107. PlayerID: playerID,
  108. Rechoose: rechoose,
  109. StateID: stateID,
  110. }
  111. rsp := pb.Point{}
  112. errCode := capp.CallWait(p.logicPath, nameRemote.MapLogic_Comeback, req, &rsp)
  113. if code.IsFail(errCode) {
  114. return nil, errCode
  115. }
  116. return &rsp, code.OK
  117. }
  118. func (p *logicCall) SiegeRank(buildObjectID int64) (*pb.SiegeRank, int32) {
  119. req := &pb.I64{Value: buildObjectID}
  120. rsp := &pb.SiegeRank{}
  121. errCode := capp.CallWait(p.logicPath, nameRemote.MapLogic_SiegeRank, req, rsp)
  122. if code.IsFail(errCode) {
  123. return nil, errCode
  124. }
  125. return rsp, code.OK
  126. }
  127. func (p *logicCall) AutoOutsideTroopsNotify(playerID int64, teamID int32, conscripEndTime int64) {
  128. req := &pb.TeamOutsideTroopsUpdate{
  129. PlayerID: playerID,
  130. TeamID: teamID,
  131. ConscriptEndTime: conscripEndTime,
  132. }
  133. capp.Call(p.logicPath, nameRemote.MapLogic_OutsideAutoTroopsNotify, req)
  134. }
  135. // 发起集结
  136. func (p *logicCall) Assemble(req *pb.AssembleRequest) (*pb.I64I32, int32) {
  137. rsp := pb.I64I32{}
  138. err := capp.CallWait(p.logicPath, nameRemote.MapLogic_Assemble, req, &rsp)
  139. if code.IsFail(err) {
  140. return nil, err
  141. }
  142. return &rsp, code.OK
  143. }
  144. // 加入集结
  145. func (p *logicCall) AssembleJoin(req *pb.MarchRequest) (*pb.I64I32, int32) {
  146. rsp := pb.I64I32{}
  147. err := capp.CallWait(p.logicPath, nameRemote.MapLogic_AssembleJoin, req, &rsp)
  148. if code.IsFail(err) {
  149. return nil, err
  150. }
  151. return &rsp, code.OK
  152. }
  153. // 集结取消
  154. func (p *logicCall) AssembleStop(leadMarchObjectID int64) int32 {
  155. return capp.CallWait(p.logicPath, nameRemote.MapLogic_AssembleStop, &pb.I64{Value: leadMarchObjectID}, nil)
  156. }
  157. // 踢出集结队伍
  158. func (p *logicCall) AssembleQuit(assembleID int64, marchObjectID int64) int32 {
  159. arg := pb.I64I64{
  160. Key: assembleID,
  161. Value: marchObjectID,
  162. }
  163. return capp.CallWait(p.logicPath, nameRemote.MapLogic_AssembleQuit, &arg, nil)
  164. }
  165. func (p *logicCall) AssembleDepart(assembleID int64) int32 {
  166. return capp.CallWait(p.logicPath, nameRemote.MapLogic_AssembleDepart, &pb.I64{Value: assembleID}, nil)
  167. }
  168. // 获取对象坐标
  169. func (p *logicCall) GetObject1Point(objectID int64, objectType enum.ObjectType, point *types.Point) int32 {
  170. points, errCode := p.GetObjectPoints(&pb.I64I32{
  171. Key: objectID,
  172. Value: int32(objectType),
  173. })
  174. if code.IsFail(errCode) {
  175. return errCode
  176. }
  177. if point != nil {
  178. point.X = points.List[0].X
  179. point.Y = points.List[0].Y
  180. }
  181. return code.OK
  182. }
  183. func (p *logicCall) GetObject2Point(object1, object2 *pb.I64I32, start, end *types.Point) int32 {
  184. points, errCode := p.GetObjectPoints(object1, object2)
  185. if code.IsFail(errCode) {
  186. return errCode
  187. }
  188. if len(points.List) != 2 {
  189. return code.MapGetPointFail
  190. }
  191. if start != nil {
  192. start.SetValue(points.List[0].X, points.List[0].Y)
  193. }
  194. if end != nil {
  195. end.SetValue(points.List[1].X, points.List[1].Y)
  196. }
  197. return code.OK
  198. }
  199. // 获取对象坐标
  200. func (p *logicCall) GetObjectPoints(req ...*pb.I64I32) (*pb.Points, int32) {
  201. arg := pb.I64I32List{
  202. List: req,
  203. }
  204. rsp := pb.Points{}
  205. errCode := capp.CallWait(p.logicPath, nameRemote.MapLogic_GetObjectPoints, &arg, &rsp)
  206. if code.IsFail(errCode) {
  207. return nil, errCode
  208. }
  209. return &rsp, code.OK
  210. }
  211. func (p *logicCall) March(req *pb.MarchRequest) (*pb.I64I32, int32) {
  212. rsp := pb.I64I32{}
  213. errCode := capp.CallWait(p.logicPath, nameRemote.MapLogic_March, req, &rsp)
  214. if code.IsFail(errCode) {
  215. return nil, errCode
  216. }
  217. return &rsp, code.OK
  218. }
  219. // 攻城集结
  220. func (p *logicCall) SiegeAssemble(req *pb.MarchRequest) (*pb.I64I32, int32) {
  221. rsp := pb.I64I32{}
  222. errCode := capp.CallWait(p.logicPath, nameRemote.MapLogic_SiegeAssemble, req, &rsp)
  223. if code.IsFail(errCode) {
  224. return nil, errCode
  225. }
  226. return &rsp, code.OK
  227. }
  228. func (p *logicCall) Retreat(req *pb.MarchRequest) (*pb.I32, int32) {
  229. rsp := pb.I32{}
  230. errCode := capp.CallWait(p.logicPath, nameRemote.MapLogic_Retreat, req, &rsp)
  231. if code.IsFail(errCode) {
  232. return nil, errCode
  233. }
  234. return &rsp, code.OK
  235. }
  236. func (p *logicCall) MarchStop(marchObjectID int64) int32 {
  237. arg := pb.I64{Value: marchObjectID}
  238. return capp.CallWait(p.logicPath, nameRemote.MapLogic_MarchStop, &arg, nil)
  239. }
  240. func (p *logicCall) ResDiscard(playerID, resObjectID int64) int32 {
  241. arg := pb.I64I64{Key: playerID, Value: resObjectID}
  242. return capp.CallWait(p.logicPath, nameRemote.MapLogic_ResDiscard, &arg, nil)
  243. }
  244. func (p *logicCall) BuildDiscard(playerID, buildObjectID int64) (int64, int32) {
  245. var (
  246. arg = pb.I64I64{Key: playerID, Value: buildObjectID}
  247. rsp = pb.I64{}
  248. )
  249. errCode := capp.CallWait(p.logicPath, nameRemote.MapLogic_BuildDiscard, &arg, &rsp)
  250. return rsp.Value, errCode
  251. }
  252. // DiscardCancelPlayer 玩家取消放弃对象
  253. func (p *logicCall) DiscardCancelPlayer(playerID, objectID int64, objectType int32) int32 {
  254. req := &pb.I64I64I32{
  255. Key1: playerID,
  256. Key2: objectID,
  257. Key3: objectType,
  258. }
  259. return capp.CallWait(p.logicPath, nameRemote.MapLogic_DiscardCancelPlayer, req, nil)
  260. }
  261. // DiscardCancelLeague 联盟取消放弃对象
  262. func (p *logicCall) DiscardCancelLeague(leagueID, objectID int64, objectType int32) int32 {
  263. req := &pb.I64I64I32{
  264. Key1: leagueID,
  265. Key2: objectID,
  266. Key3: objectType,
  267. }
  268. return capp.CallWait(p.logicPath, nameRemote.MapLogic_DiscardCancelLeague, req, nil)
  269. }
  270. // func (p *logicCall) LeagueBuildDiscard(leagueID, buildObjectID int64) int32 {
  271. // arg := pb.I64I64{Key: leagueID, Value: buildObjectID}
  272. // return capp.CallWait(p.logicPath, nameRemote.MapLogic_LeagueBuildDiscard, &arg, nil)
  273. // }
  274. func (p *logicCall) Relocate(playerID, cityBaseObjectID int64) (*pb.Point, int32) {
  275. arg := pb.I64I64{Key: playerID, Value: cityBaseObjectID}
  276. rsp := pb.Point{}
  277. errCode := capp.CallWait(p.logicPath, nameRemote.MapLogic_Relocate, &arg, &rsp)
  278. if code.IsFail(errCode) {
  279. return nil, errCode
  280. }
  281. return &rsp, code.OK
  282. }
  283. // 迁回驻地
  284. func (p *logicCall) RelocateBack(playerID, leagueID int64) (*pb.Point, int32) {
  285. arg := pb.I64I64{Key: playerID, Value: leagueID}
  286. rsp := pb.Point{}
  287. errCode := capp.CallWait(p.logicPath, nameRemote.MapLogic_RelocateBack, &arg, &rsp)
  288. if code.IsFail(errCode) {
  289. return nil, errCode
  290. }
  291. return &rsp, code.OK
  292. }
  293. func (p *logicCall) AutoDefend(req *pb.AutoDefend) (*pb.I32List, int32) {
  294. rsp := pb.I32List{}
  295. errCode := capp.CallWait(p.logicPath, nameRemote.MapLogic_AutoDefend, req, &rsp)
  296. if code.IsFail(errCode) {
  297. return nil, errCode
  298. }
  299. return &rsp, code.OK
  300. }
  301. func (p *logicCall) MarchSyncTroops(teamID int32, marchObjectID int64, troops []*pb.MarchTroops) int32 {
  302. req := &pb.MarchSyncTroops{
  303. TeamID: teamID,
  304. ObjectID: marchObjectID,
  305. Troops: troops,
  306. }
  307. return capp.CallWait(p.logicPath, nameRemote.MapLogic_MarchSyncTroops, req, nil)
  308. }
  309. func (p *logicCall) MarchSyncInjure(marchObjectID, injureTime int64) int32 {
  310. req := &pb.I64I64{
  311. Key: marchObjectID,
  312. Value: injureTime,
  313. }
  314. return capp.CallWait(p.logicPath, nameRemote.MapLogic_MarchSyncInjure, req, nil)
  315. }
  316. func (p *logicCall) BattleEnd(battleResult *pb.BattleRsp) {
  317. capp.Call(p.logicPath, nameRemote.MapLogic_BattleEnd, battleResult)
  318. }
  319. func (p *logicCall) Build(req *pb.BuildRequest) (*pb.I64I64, int32) {
  320. var rsp pb.I64I64
  321. errCode := capp.CallWait(p.logicPath, nameRemote.MapLogic_Build, req, &rsp)
  322. if code.IsFail(errCode) {
  323. return nil, errCode
  324. }
  325. return &rsp, code.OK
  326. }
  327. func (p *logicCall) BuildLeague(req *pb.BuildLeagueRequest) (*pb.I64I64, int32) {
  328. var rsp pb.I64I64
  329. errCode := capp.CallWait(p.logicPath, nameRemote.MapLogic_BuildLeague, req, &rsp)
  330. if code.IsFail(errCode) {
  331. return nil, errCode
  332. }
  333. return &rsp, code.OK
  334. }
  335. func (p *logicCall) BuildUpgrade(req *pb.BuildUpgradeRequest) int32 {
  336. return capp.CallWait(p.logicPath, nameRemote.MapLogic_BuildUpgrade, req, nil)
  337. }
  338. // 宣战
  339. func (p *logicCall) StartWar(req *mapTypes.StartWar) (*pb.War, int32) {
  340. var rsp pb.War
  341. errCode := capp.CallWait(p.logicPath, nameRemote.MapLogic_StartWar, req, &rsp)
  342. if code.IsFail(errCode) {
  343. return nil, errCode
  344. }
  345. return &rsp, code.OK
  346. }
  347. // 取消宣泄
  348. func (p *logicCall) StopWar(leagueID, castleObjectID int64) int32 {
  349. arg := pb.I64I64{
  350. Key: leagueID,
  351. Value: castleObjectID,
  352. }
  353. return capp.CallWait(p.logicPath, nameRemote.MapLogic_StopWar, &arg, nil)
  354. }
  355. // 获取被攻占城池列表
  356. func (p *logicCall) OccupyCastleList() (*pb.OccupyCastleList, int32) {
  357. var (
  358. req = &pb.None{}
  359. resp = &pb.OccupyCastleList{}
  360. )
  361. errCode := capp.CallWait(p.logicPath, nameRemote.MapLogic_OccupyCastleList, req, resp)
  362. if code.IsFail(errCode) {
  363. return nil, errCode
  364. }
  365. return resp, code.OK
  366. }
  367. func (p *logicCall) AOIUpdate(funcName string, req *mapTypes.AOIMarkerUpdate) {
  368. capp.Call(p.logicPath, funcName, req)
  369. }
  370. func (p *logicCall) AOIMarkerEnterView(req *mapTypes.AOIMarkerEnterView) {
  371. capp.Call(p.logicPath, nameRemote.MapLogic_AOIMarkerEnterView, req)
  372. }
  373. func (p *logicCall) AOIMarkerLeaveView(req *mapTypes.AOIMakerLeaveView) {
  374. capp.Call(p.logicPath, nameRemote.MapLogic_AOIMarkerLeaveView, req)
  375. }
  376. func (p *logicCall) AOIMarkerDespawn(req *mapTypes.AOIMakerDespawn) {
  377. capp.Call(p.logicPath, nameRemote.MapLogic_AOIMarkerDespawn, req)
  378. }
  379. func (p *logicCall) ScoutCheck(playerID, objectID int64) (*pb.CheckScoutResult, int32) {
  380. var (
  381. req = &pb.I64I64{
  382. Key: playerID,
  383. Value: objectID,
  384. }
  385. resp = &pb.CheckScoutResult{}
  386. )
  387. errCode := capp.CallWait(p.logicPath, nameRemote.MapLogic_ScoutCheck, req, resp)
  388. if code.IsFail(errCode) {
  389. return nil, errCode
  390. }
  391. return resp, code.OK
  392. }