logic.go 11 KB

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