logic.go 12 KB

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