十三、 建造总览(buildings.php)

从这篇文章开始,对xnova的研究重点放在流程上面,其实就是大量的函数;至于页面的构造将不再仔细解释。

buildings.php文件不只是处理建筑金属矿产等,而是包括了建筑、研究、造船厂、防御四个功能;通过传递不同的参数来决定进入哪个功能,所以这个文件其实是一个导航文件。下面我们简单解释下这个文件。

//更新当前星球的建筑队列,比较复杂

UpdatePlanetBatimentQueueList ( $planetrow, $user );

//处理当前用户的科技研究

HandleTechnologieBuild ( $planetrow, $user );

//下面是根据参数进入不同的功能页面

//造船厂页面

case 'fleet':

FleetBuildingPage ( $planetrow, $user );

//研究页面

case 'research':

ResearchBuildingPage ( $planetrow, $user, $IsWorking['OnWork'], $IsWorking['WorkOn'] );

//防御页面

case 'defense':

DefensesBuildingPage ( $planetrow, $user );

//剩下的自然是建筑页面

default:

BatimentBuildingPage ( $planetrow, $user );

下面我们看更新当前星球的建筑队列函数

function UpdatePlanetBatimentQueueList ( &$CurrentPlanet, &$CurrentUser ) {

$RetValue = false;

//判断是否有建筑队列,字段b_building_id保存建筑队列

if ( $CurrentPlanet['b_building_id'] != 0 ) {

//进入循环,开始处理队列

while ( $CurrentPlanet['b_building_id'] != 0 ) {

//如果当前建造的建筑时间小于time的话,就处理,字段b_building保存建筑到期的时间

if ( $CurrentPlanet['b_building'] <= time() ) {

//先更新下星球的资源,以后再解析

PlanetResourceUpdate ( $CurrentUser, $CurrentPlanet, $CurrentPlanet['b_building'], false );

//处理掉当前的建筑,并把当前建筑字段清空;代码很多,其实比较简单

$IsDone = CheckPlanetBuildingQueue( $CurrentPlanet, $CurrentUser );

//如果前面处理成功,这里就要处理队列中的下一个建筑,包括扣除资源

if ( $IsDone == true ) {

SetNextQueueElementOnTop ( $CurrentPlanet, $CurrentUser );

}

} else {

$RetValue = true;

break;

}

}

}

return $RetValue;

}

我们继续下去,跟踪入CheckPlanetBuildingQueue函数,这个函数代码挺多,其实简单;我不写注释了,说下流程。先从字段b_building_id解析出来建筑的种类、建筑或拆除、结束建筑的时间等;然后更新该建筑的等级,升级或者降级;更新星球的最大空间和使用空间;更新当前建筑的时间为0和更新当前的剩余建筑队列。不难吧,呵呵。

接下来处理队列中的下一个建筑,跟踪SetNextQueueElementOnTop函数,也不难。先从队列中解析出建筑数据;然后判断是否可以建造,如果可以就要计算建造资源等;如果不行就发送消息等;最后更新建筑完成的时间、剩余建筑队列和资源等。和上面的流程一样简单,拿下。

页游php怎么读其他文件夹,PHP网页游戏学习之Xnova(ogame)源码解读(十)相关推荐

  1. 微信小程序开发之文件上传下载应用场景(附Demo源码)

    微信小程序开发之文件上传下载应用场景(附Demo源码),Demo为小相册应用,源码在附件中,本示例需要腾讯云支持. http://www.henkuai.com/forum.php?mod=viewt ...

  2. jpcsp源码解读6:PSF文件

    当你运行了模拟器,通过模拟器菜单选择并加载一个umd镜像,模拟器就用这个umd镜像实例化一个UmdIsoReader(见上一篇,源码解读5). 通过这个UmdIsoReader,从光盘提取的第一个文件 ...

  3. PTMs:QLoRA技巧之源码解读(qlora.py文件)—解析命令与加载参数→数据预处理→模型训练+评估+推理

    PTMs:QLoRA技巧之源码解读(qlora.py文件)-解析命令与加载参数→数据预处理→模型训练+评估+推理 目录 QLoRA技巧之源码解读(qlora.py文件)-解析命令与加载参数→数据预处理 ...

  4. python遍历一个文件夹下所有excel,读取所有sheet页,然后写入另一个文件夹下对应模板的excel中

    本来想直接写入,但是我们的excel报表太麻烦了,里面表头有多处要求合并的,用python去写太要命了,想了下,设置一堆空的excel模板,这样只需要把原文件的数据读出来就可以了,简单多了 #读取文件 ...

  5. 使用Process.Start打开文件夹或网页

    代码 /// <summary> /// 打开文件所在的文件夹 /// </summary> public static void OpenFileDialog(string ...

  6. php文件夹转换网页,PHP转换文件夹下所有文件的编码 适合发布网站的其他编码版本...

    PHP转换文件夹下所有文件的编码 适合发布网站的其他编码版本 比如你有一个GBK版本 你想有一个UTF8版本 或者你只有GBK的源码 你想二次开发 但是你不想改变IDE的编码方式 你可以用这个程序将其 ...

  7. 安卓游戏服务器文件是哪个文件夹,安卓手机游戏数据包放在哪个文件夹

    数据包路径一般为sdcard\ANDRIOD\data\某游戏数据包(com.游戏英文名称就是那个游戏的数据包). 安卓4.0及以上的话就是在内置存储中,也即文件管里中的sdcard目录(外置存储卡叫 ...

  8. 如何新建一个看不见的文件夹(我们的游戏都在里头)

    首先在桌面新建一个正常的文件夹 右击中英文切换  然后将半角设定成全角 之后重命名我们的文件夹 按一下空格,之后因为系统识别全角就不是空格啦 我们就可以按一下回车 他就变成了金色的文件夹啦 之后右击- ...

  9. 35.FFmpeg学习笔记 - ffplay源码解读3之读文件

    本篇文章看看ffplay是如何读取packet放入队列中的. 一.先看入口函数: int main(int argc, char **argv) {VideoState *is;...av_init_ ...

  10. steam文件夹移动后游戏需要重新安装怎么办

    有的时候我们一不小心当时年少轻狂不小心把游戏文件夹装到了c盘后来c盘空间太少移到了d盘不能用了怎么办呢,其实很简单,看网上有很多方法都不是好用的,下面就告诉你咋办 1.移动路径 直接拖拽就行这里我直接 ...

最新文章

  1. GoogleFusionTablesAPI初探地图与云计算
  2. 阿里新财报霸道惨了!菜鸟加速全球72小时必达,世界都沸腾!
  3. linux cp复制文件夹下的软连接,Linux培训:cp命令复制文件和目录
  4. Mac终端 bash和zsh切换方法
  5. 每天一道LeetCode-----有效回文串
  6. vc++ List Control控件获得所有选中行的序号
  7. 前端基础-html-表格的基本标签和相关属性
  8. C#结构体和字节数组的转换
  9. read 系统调用剖析【转】
  10. 90-40-010-源码-CUBE-引擎为MR写入Habse的构建
  11. java解析excelpoi_Java解析Excel之POI(一)
  12. Firefox 将添加画中画功能
  13. 谷歌app使用的是什么字体_如何使用Google字体
  14. 智能门锁到底安不安全?
  15. 动态数码管显示(proteus仿真图和程序)
  16. 计算机网络管理工程师技术水平证书,计算机网络管理工程师技术水平证书有什么用...
  17. ZBlogPHP评论验证码无法显示
  18. 为什么计算机连不上无线网络,笔记本无线连不上是什么原因_为什么笔记本电脑连不上wifi-win7之家...
  19. 2022美赛C题题目及思路--交易策略
  20. 微软拼音输入法卸载相关

热门文章

  1. 什么样的代码是好代码?
  2. SAP_ABAP_FI_BAPI清单案例教程——采购付款/销售收款_BAPI_ACC_DOCUMENT_POST_F-02
  3. 大师非凡能力来源何处?思维方式是关键
  4. factorymenu什么意思_menu是什么意思啊
  5. java使用微信图片鉴黄
  6. 成都前端开发培训哪家好
  7. c++程序判断该关系是否为函数与函数类型_C++高级编程之——函数重载、内联、缺省参数、隐式转换
  8. python中tuple函数_Python中元组(Tuple)和字典(dict)用法以及函数
  9. 迪赛智慧数——饼图(玫瑰饼图):全国情侣型节日送礼意愿分析
  10. 简洁精美源于分析透彻,构思明确、求精,逻辑练达。(6)