PHP网页游戏学习之Xnova(ogame)源码解读(十四)

  十七、资源更新(PlanetResourceUpdate.php页面)

  前面基本把重要的功能讲解完了,这章节我们分析重要的一个函数PlanetResourceUpdate,主要功能是更新资源、制造船舰和防御单位;代码很有条理,下面是详细的说明:

  1.计算星球的最大存储空间,包括系统设置的浮动值

  2.计算星球三种资源的产量和能量消耗总量,包括专家的加成

  3.如果星球是月球,以上计算的产量和能量直接为0

  4.计算上次更新资源到现在的时间

  5.计算由于能量比率而引起的产量变化,能量为0的时候,只有基本产量

  6.接下来要判断是否假期了,不是假期的话,根据前面准备好的数据,计算出这段时间内的产量,并加到现有的资源里面

  7.取得这段时间应该完成的船舰和防御数量,函数HandleElementBuildingQueue

  8.构造SQL语句,提交给服务器,资源更新完成

  这个函数在玩家每次点击每个功能的时候执行,给玩家的感觉好像资源是早计算好了一样,呵呵。不过在一些版本里面,当一个玩家长期不登录的时候,这个玩家的资源也就不能更新了;这个时候,需要处理这个玩家的资源更新,具体更新方法可以随便,我使用的是每次间谍探测时更新。

  下面讲解下函数HandleElementBuildingQueue,逻辑不复杂,还是很容易理解的。

  这里要记住: b_hangar_id是要建造的字符串,b_hangar是上次保持的建造时间

  说明下:

  1.先判断是否有建造队列

  2.取得经过的时间并加上保持的时间

  3.解析建造队列,保存在数组里面备用

  4.下面foreach就是一个一个的建造了

  5.最后如果有未造完的保持起来下次建造,并返回