研究得分表类。
class DataHighScores extends Object config(HighScoreList);
得分表继承自Object,在UnrealScript中。抽象的物件继承自OBject,具体的物件继承自Actor。
同时还有一个关注的地方就是config(HighScoreList),这一项说明了存储的数值在HighScoreList.ini配置文件中,这个列表名是根据config(HighScoreList)定义的。
而继承的目录应该是一下Src->Classes->AntGame
[AntGame.DataHighScores],前者为程序的文件夹名,后者为得分名。
正式进入该类研究。作为一个排名类,主要完成一些逻辑机制。而显示输出排名情况将会交给UI部分打理。那么排名逻辑应该提供哪些功能呢?
1.首先应该能在配置标文件中存储得分数组列表,用一下方式定义将能存储该类型变量:
struct HighScoreEntry
{
var int score;
var string name;
}; //分排名结构,有名字有成绩
var config array<HighScoreEntry> HighScoresEntries; //注意Config类型,这将能使变量存储在ini中
这就是得分列表,应该有一系列的逻辑机制实现怎样竞分排名。
2.应该有一种检验方法查看一个列表高分能否进入该排名列表里面。
function IsWithinHighScore(HighScoreEntry entry) { local int it; for(it=0;it<HightScoreEntry.length;it++) { if(HighScoreEntry[it].score=<entry.score) return it; //brilliant as linsanity } return -1; //too small to insert }
3.讲一个高分列表插进来
function int AddToScore(HighScoreEntry Entry) { local int it; local int previouslength;
local int InsertAt; previouslength=HighScoresEntries.length;
InsertAt=-1;
for(it=HightScoresEntries.length-1;it>-1;it--)
{
if(it==0||Entry.score<HighScoresEntries[it-1])
{
HighScoreEntries.addItem(it,entry); //位置,结构
InsertAt=it;
break;
}
}
if(HighScoresEntries.length>previouslength)
HighScoresEntries.Remove(HighScoresEntries.length-1,1);
saveConfig(); //将数组变量存储
return InsertAt;}