PHP网页游戏学习之Xnova(ogame)源码解读(十)
程序员文章站
2023-12-02 16:49:52
十三、 建造总览(buildings.php)
从这篇文章开始,对xnova的研究重点放在流程上面,其实就是大量的函数;至于页面的构造将不再仔细解释。
building...
十三、 建造总览(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网页游戏学习之Xnova(ogame)源码解读(七)
-
PHP网页游戏学习之Xnova(ogame)源码解读(九)
-
PHP网页游戏学习之Xnova(ogame)源码解读(四)
-
PHP网页游戏学习之Xnova(ogame)源码解读(五)
-
PHP网页游戏学习之Xnova(ogame)源码解读(十)
-
PHP网页游戏学习之Xnova(ogame)源码解读(二)
-
PHP网页游戏学习之Xnova(ogame)源码解读(十一)
-
PHP网页游戏学习之Xnova(ogame)源码解读(八)
-
PHP网页游戏学习之Xnova(ogame)源码解读(三)
-
PHP网页游戏学习之Xnova(ogame)源码解读(六)