⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bohandler.h

📁 这是整套横扫千军3D版游戏的源码
💻 H
字号:
struct UnitDef;

struct BOInfo
{
	string name;

	float mp;	// metal production
	float ep;	// energy production
	float me;	// metal production per energy upkeep
	float em;	// energy production per metal upkeep

	bool isMex;
	bool isGeo;

	float spacing;

	float metalCost;
	float energyCost;
	float totalCost;
	float buildTime;
};

struct compareMetal
{
	bool operator()(BOInfo* const& bo1, BOInfo* const& bo2)
	{
		bool sameMetal	= max(bo1->mp,bo2->mp) / min(bo1->mp,bo2->mp) < 3 ? true : false;
		bool sameCost	= max(bo1->totalCost,bo2->totalCost) / min(bo1->totalCost,bo2->totalCost) < 10 ? true : false;

		if( sameMetal &&  sameCost) return bo1->me > bo2->me;
		if(!sameMetal &&  sameCost) return bo1->mp > bo2->mp;
		if( sameMetal && !sameCost) return (bo1->me / bo1->totalCost) > (bo2->me / bo2->totalCost);
		if(!sameMetal && !sameCost) return (bo1->mp / bo1->totalCost) > (bo2->mp / bo2->totalCost);
	}
};
struct compareEnergy
{
	bool operator()(BOInfo* const& bo1, BOInfo* const& bo2)
	{
		bool sameEnergy	= max(bo1->ep,bo2->ep) / min(bo1->ep,bo2->ep) < 3 ? true : false;
		bool sameCost	= max(bo1->totalCost,bo2->totalCost) / min(bo1->totalCost,bo2->totalCost) < 10 ? true : false;

		if( sameEnergy &&  sameCost) return bo1->em > bo2->em;
		if(!sameEnergy &&  sameCost) return bo1->ep > bo2->ep;
		if( sameEnergy && !sameCost) return (bo1->em / bo1->totalCost) > (bo2->em / bo2->totalCost);
		if(!sameEnergy && !sameCost) return (bo1->ep / bo1->totalCost) > (bo2->ep / bo2->totalCost);
	}
};


class CBoHandler
{
	public:
		CBoHandler(IAICallback* aicb,float mmkrME,float avgMetal,float maxPartitionRadius);
		virtual ~CBoHandler();

		void ClearBuildOptions();
		void AddBuildOptions(const UnitDef* unitDef);
		void SortBuildOptions();

		map<string,BOInfo*> allBO;
		vector<BOInfo*> bestMetal;	// ordered buildoptions for best metal production
		vector<BOInfo*> bestEnergy;	// ordered buildoptions for best energy production
	private:
		IAICallback* aicb;
		bool BOchanged;

		float mmkrME;

		float tidalStrength;
		float avgWind;
		float avgMetal;
		float maxPartitionRadius;
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -