游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3167|回复: 2

Host状态机CHostState

[复制链接]

12

主题

19

帖子

19

积分

新手上路

Rank: 1

积分
19
发表于 2003-10-28 14:09:00 | 显示全部楼层 |阅读模式
CHostState只有一个静态单件实例,
src_main\engine\host_state.cpp定义了一组HostState_XXX()函数用来操作Host状态机。
(用全局函数组接口代替类接口,吐血!)

HostState_XXX()状态操作函数主要由Host_XXXXX()函数调用,
即Host_XXXXX()是一系列应用于Host状态机的动作。
但是状态不是立即就变的,而是进入一个状态队列(长度仅为1),
待状态处理循环时执行状态变化的代码。

HostState_Frame()就是状态处理主循环,需要隔一段时间进入一次。
HostState_Frame()由CEngine.Frame()在消息循环中调用。
HostState_Frame
  CEngine.Frame
    RunListenServer(内有消息循环)
    CDedicatedServerAPI.RunFrame

几个 HostState_XXX() 调用者关系图:

HostState_Init
  Host_Init
    Sys_InitGame
      CEngine.Load
        RunListenServer
          CEngineAPI.Run
            LauncherMain
HostState_NewGame
  Host_Map_Helper
  Host_Restart_f
  Host_Reload_f
HostState_ChangeLevelSP
  Host_Changelevel2_f
HostState_GameShutdown
  Host_Disconnect
HostState_Shutdown
  Host_Quit_f

12

主题

94

帖子

99

积分

注册会员

Rank: 2

积分
99
发表于 2003-10-28 15:38:00 | 显示全部楼层

Re:Host状态机CHostState

好!
顶!!!!!!!!!!!!!!

90

主题

797

帖子

833

积分

高级会员

论坛版主

Rank: 4

积分
833
QQ
发表于 2003-10-28 17:19:00 | 显示全部楼层

Re:Host状态机CHostState

为什么状态队列长度为1呢?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-16 19:23

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表