十三、 建造总览(buildings.php)
从这篇文章开始,对xnova的研究重点放在流程上面,其实就是大量的函数;至于页面的构造将不再仔细解释。
buildings.php文件不只是处理建筑金属矿产等,而是包括了建筑、研究、造船厂、防御四个功能;通过传递不同的参数来决定进入哪个功能,所以这个文件其实是一个导航文件。下面我们简单解释下这个文件。
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
//更新当前星球的建筑队列,比较复杂
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函数,也不难。先从队列中解析出建筑数据;然后判断是否可以建造,如果可以就要计算建造资源等;如果不行就发送消息等;最后更新建筑完成的时间、剩余建筑队列和资源等。和上面的流程一样简单,拿下。
相关文章
猜你喜欢
- ASP.NET本地开发时常见的配置错误及解决方法? 2025-06-10
- ASP.NET自助建站系统的数据库备份与恢复操作指南 2025-06-10
- 个人网站服务器域名解析设置指南:从购买到绑定全流程 2025-06-10
- 个人网站搭建:如何挑选具有弹性扩展能力的服务器? 2025-06-10
- 个人服务器网站搭建:如何选择适合自己的建站程序或框架? 2025-06-10
TA的动态
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
- 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
- 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
- 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
- 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
快网idc优惠网
QQ交流群
您的支持,是我们最大的动力!
热门文章
-
2025-05-25 64
-
2025-05-25 71
-
2025-05-25 84
-
2025-05-29 40
-
2025-05-25 13
热门评论