页游php怎么读其他文件夹,PHP网页游戏学习之Xnova(ogame)源码解读(十)
十三、 建造总览(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)源码解读(十)相关推荐
- 微信小程序开发之文件上传下载应用场景(附Demo源码)
微信小程序开发之文件上传下载应用场景(附Demo源码),Demo为小相册应用,源码在附件中,本示例需要腾讯云支持. http://www.henkuai.com/forum.php?mod=viewt ...
- jpcsp源码解读6:PSF文件
当你运行了模拟器,通过模拟器菜单选择并加载一个umd镜像,模拟器就用这个umd镜像实例化一个UmdIsoReader(见上一篇,源码解读5). 通过这个UmdIsoReader,从光盘提取的第一个文件 ...
- PTMs:QLoRA技巧之源码解读(qlora.py文件)—解析命令与加载参数→数据预处理→模型训练+评估+推理
PTMs:QLoRA技巧之源码解读(qlora.py文件)-解析命令与加载参数→数据预处理→模型训练+评估+推理 目录 QLoRA技巧之源码解读(qlora.py文件)-解析命令与加载参数→数据预处理 ...
- python遍历一个文件夹下所有excel,读取所有sheet页,然后写入另一个文件夹下对应模板的excel中
本来想直接写入,但是我们的excel报表太麻烦了,里面表头有多处要求合并的,用python去写太要命了,想了下,设置一堆空的excel模板,这样只需要把原文件的数据读出来就可以了,简单多了 #读取文件 ...
- 使用Process.Start打开文件夹或网页
代码 /// <summary> /// 打开文件所在的文件夹 /// </summary> public static void OpenFileDialog(string ...
- php文件夹转换网页,PHP转换文件夹下所有文件的编码 适合发布网站的其他编码版本...
PHP转换文件夹下所有文件的编码 适合发布网站的其他编码版本 比如你有一个GBK版本 你想有一个UTF8版本 或者你只有GBK的源码 你想二次开发 但是你不想改变IDE的编码方式 你可以用这个程序将其 ...
- 安卓游戏服务器文件是哪个文件夹,安卓手机游戏数据包放在哪个文件夹
数据包路径一般为sdcard\ANDRIOD\data\某游戏数据包(com.游戏英文名称就是那个游戏的数据包). 安卓4.0及以上的话就是在内置存储中,也即文件管里中的sdcard目录(外置存储卡叫 ...
- 如何新建一个看不见的文件夹(我们的游戏都在里头)
首先在桌面新建一个正常的文件夹 右击中英文切换 然后将半角设定成全角 之后重命名我们的文件夹 按一下空格,之后因为系统识别全角就不是空格啦 我们就可以按一下回车 他就变成了金色的文件夹啦 之后右击- ...
- 35.FFmpeg学习笔记 - ffplay源码解读3之读文件
本篇文章看看ffplay是如何读取packet放入队列中的. 一.先看入口函数: int main(int argc, char **argv) {VideoState *is;...av_init_ ...
- steam文件夹移动后游戏需要重新安装怎么办
有的时候我们一不小心当时年少轻狂不小心把游戏文件夹装到了c盘后来c盘空间太少移到了d盘不能用了怎么办呢,其实很简单,看网上有很多方法都不是好用的,下面就告诉你咋办 1.移动路径 直接拖拽就行这里我直接 ...
最新文章
- GoogleFusionTablesAPI初探地图与云计算
- 阿里新财报霸道惨了!菜鸟加速全球72小时必达,世界都沸腾!
- linux cp复制文件夹下的软连接,Linux培训:cp命令复制文件和目录
- Mac终端 bash和zsh切换方法
- 每天一道LeetCode-----有效回文串
- vc++ List Control控件获得所有选中行的序号
- 前端基础-html-表格的基本标签和相关属性
- C#结构体和字节数组的转换
- read 系统调用剖析【转】
- 90-40-010-源码-CUBE-引擎为MR写入Habse的构建
- java解析excelpoi_Java解析Excel之POI(一)
- Firefox 将添加画中画功能
- 谷歌app使用的是什么字体_如何使用Google字体
- 智能门锁到底安不安全?
- 动态数码管显示(proteus仿真图和程序)
- 计算机网络管理工程师技术水平证书,计算机网络管理工程师技术水平证书有什么用...
- ZBlogPHP评论验证码无法显示
- 为什么计算机连不上无线网络,笔记本无线连不上是什么原因_为什么笔记本电脑连不上wifi-win7之家...
- 2022美赛C题题目及思路--交易策略
- 微软拼音输入法卸载相关
热门文章
- 什么样的代码是好代码?
- SAP_ABAP_FI_BAPI清单案例教程——采购付款/销售收款_BAPI_ACC_DOCUMENT_POST_F-02
- 大师非凡能力来源何处?思维方式是关键
- factorymenu什么意思_menu是什么意思啊
- java使用微信图片鉴黄
- 成都前端开发培训哪家好
- c++程序判断该关系是否为函数与函数类型_C++高级编程之——函数重载、内联、缺省参数、隐式转换
- python中tuple函数_Python中元组(Tuple)和字典(dict)用法以及函数
- 迪赛智慧数——饼图(玫瑰饼图):全国情侣型节日送礼意愿分析
- 简洁精美源于分析透彻,构思明确、求精,逻辑练达。(6)