[关闭]
@womendeaiwoming 2021-08-31T08:45:22.000000Z 字数 2744 阅读 450

前端游戏显示逻辑

一、刷新房间(C_updateRoomNotify[updateGameInfo])

刷新房间流程:

  1. 1. 等待座位旋转动画完成
  2. 2. 重置发牌动画
  3. 3. 重置公牌(取消动画、隐藏公牌)
  4. 4. 重置底池
  5. 5. 重置当前用户的手牌
  6. 6. 刷新 “等待几手” 提示
  7. 7. 隐藏当前用户的操作
  8. 8. 如果有N张公牌,则直接显示N张公牌
  9. 9. 如果是比牌阶段,且有高亮公牌,则高亮相应公牌
  10. 10. 更新座位号
  11. 11. 更新所有座位上的用户信息
  12. 12. 更新庄家信息
  13. 13. 更新底池及筹码堆
  14. 14. 更新总底池信息
  15. 15. 如果满足条件,则显示邀请界面
  16. 16. 更新倒计时动画
  17. 17. 刷新看公牌的按钮
  18. 18. 如果当前用户正在进行游戏,且不是其操作,则显示 “预操作”

二、发牌(WP_dealNotify[handDealNotify])

  1. 1. 刷新 “等待几手” 提示
  2. 2. 等待座位旋转动画完成
  3. 3. 找出发了牌的用户列表,播放发牌动画
  4. 4. 如果当前用户有参与:发完牌后,更新其手牌、手牌类型
  5. // 由于发牌后,会接 "BET_BLIND"、"PRE_FLOP" 流程,所以不需要在这里显示其操作按钮

三、处理用户做的操作通知(WP_actionNotify[handUserActionNotify])

  1. 1. 记录本轮下注的最大分数
  2. 2. 等待座位旋转动画完成
  3. 3. 等待发牌动画完成
  4. 4. 等待公牌动画完成
  5. 5. 针对每个用户操作:
  6. 1) 更新对应的座位上的状态:
  7. ACheck: 播放对应音效、播放check 动画
  8. BBet: 播放对应音效
  9. CCall: 播放对应音效
  10. DFold: 播放对应音效、显示弃牌状态
  11. ERaise: 播放对应音效
  12. FAll In: 播放对应音效、显示 All In 动画
  13. 2) 如果是当前用户的操作,则隐藏自己的操作按钮、隐藏延时按钮

四、处理用户可操作通知(WP_userOptNotify[handUserOptNotify])

  1. 1. 等待座位旋转动画完成
  2. 2. 等待发牌动画完成
  3. 3. 等待公牌动画完成
  4. 4. 如果是当前用户可选的操作,则显示/延长 “延时” 按钮
  5. 5. 只显示可操作用户座位的进度条
  6. 6. 如果当前用户在游戏,且未弃牌:
  7. A、轮到自己操作
  8. a、隐藏预操作
  9. b、显示自己可进行的操作:Fold/Check/Raise/Call/AllIn/Bet
  10. B、不是自己操作
  11. a、隐藏自己所有操作
  12. b、如果没有All In,则显示可进行的预操作:(FoldCall)/(Check/Fold Check)

五、流程更改通知(WP_roundChangeNotify[handRoundChangeNotify])

  1. 1. 隐藏延时按钮
  2. 2. 隐藏看公牌按钮
  3. 3. 隐藏当前用户的所有游戏操作按钮
  4. 4. 等待座位旋转动画完成
  5. 5. 等待发牌动画完成
  6. 6. 等待公牌动画完成
  7. 7. 如果是河牌圈(River)
  8. 那么此时可能在同一时间收到多个 `WP_roundChangeNotify` 通知,会要求多次发公牌。主要是:TURN/RIVER 这两个阶段可能会同时紧跟在 FLOP 后面(全部All In)。 所以每次需要等公牌发完后,再发下一次公牌。
  9. 1) 等待公牌动画完成 // 需要再等一次,不然上面的 `await this.compComCards.wait();` 会同时启动剩余的 TURN/RIVER 的等待,导致同时翻出第4张、第5张。
  10. 2) 再次等待公牌动画完成
  11. 8. 如果此流程里有发公牌(FLOP 三张、TURN 一张、RIVER 一张)
  12. A、如果是 FLOP:
  13. a、取消所有公牌任务
  14. b、如果是通过全部人 All In 开牌,增加任务:等待 2 秒(时间从 All In 开牌开始算)
  15. c、增加任务:清空公牌
  16. d、增加任务:以动画显示发的前 3 张牌
  17. e、增加任务:2.2 秒延时
  18. B、如果是 TURN:
  19. a、如果 All In 开始,且没有等待的任务,则增加任务:等待2.5秒(时间从 All In 开牌开始算)
  20. b、增加任务:以动画显示第 4 张牌
  21. c、增加任务:2.0 秒延时
  22. C、如果是 RIVER:
  23. a、增加任务:以动画显示第 5 张牌
  24. 9. 如果此时轮到某个用户操作,则执行 (四)
  25. 10. 桌面上每个有用户的座位处理此次流程
  26. 1) 更新座位上的分数
  27. 2) 隐藏 Check 动画
  28. 3) 如果是未弃牌且不是翻前圈(!FLOP)
  29. 如果此用户已 All In,则显示其 All In 行为显示区;否则隐藏行为显示区
  30. 4) 如果有筹码,则播放筹码入底池动画
  31. 6) 如果不是 THAN,且不是所有人 All In 导致的开牌,则清空亮出过的手牌

六、结果通知(WP_playResultNotify[handPlayResultNotify])

  1. 1. 停止所有座位倒计时
  2. 2. 隐藏当前登录用户的可进行的游戏操作按钮、预操作按钮
  3. 3. 针对每个有参与的座位显示结果
  4. A、如果所有用户都 All In
  5. 1) 显示座位的摊牌
  6. 2) 延时 0.2s
  7. 1、如果此用户赢,则 playResultWin()
  8. 2handPlayResult()
  9. B、如果此座位参与了比牌
  10. 1) 延时 0.75s
  11. 1、显示座位用户的摊牌
  12. 2、如果此用户赢,则 playResultWin()
  13. 2) 延时 (0.75 + 0.45 + 0.5)s handPlayResult()
  14. C、否则(即 其余玩家全部弃牌后停留时长)
  15. 1) 延时 0.5s 后,显示座位用户的摊牌
  16. 2)延时 0.6s 后,如果此用户赢,则 playResultWin()
  17. 3)延时 (0.2 + 0.45 + 0.5)s
  18. 1、如果此用户结果分大于0,则播放收筹码动画。再延时 0.7s 后,更新座位分,且桌面重置底池
  19. 4. 如果有公牌显示任务,则取消所有任务,并强制展示所有公牌
  20. 5. 如果有高亮公牌,则延时 `delay` 后:
  21. `delay` 默认为 0.5s;如果不是所有比牌玩家都 All In,且有摊牌,则为 (0.75 + 0.45 + 0.5)s
  22. 1)、显示高亮公牌;
  23. 2)、显示赢家的牌型
  24. 6. 根据当前登录用户能否查看剩余公牌,显示/隐藏 查看公牌 按钮
  25. function playResultWin() {
  26. 1、播放 Winner 动画
  27. 2、如果是特殊牌型,且是登录用户,则显示特殊牌型动画
  28. }
  29. function handPlayResult() {
  30. A、用户结果分大于0
  31. 1) 播放收筹码动画
  32. 2) 延时 0.7s 后,更新座位分,且桌面重置底池
  33. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注