public GameFont(string name) { FileLocation fl = FileSystem.Instance.Locate(name + ".tex", GameFileLocs.GUI); font = UITextureManager.Instance.CreateInstance(fl); charHeight = font.Height / 7; fl = FileSystem.Instance.Locate(name + ".xml", GameFileLocs.Config); Configuration config = ConfigurationManager.Instance.CreateInstance(fl); charWidth = new int[byte.MaxValue]; foreach (KeyValuePair <string, ConfigurationSection> e in config) { ConfigurationSection sect = e.Value; char ch = (char)sect.GetInt("Char"); charWidth[ch] = sect.GetInt("Width"); } }
public static void LoadRules() { FileLocation fl = FileSystem.Instance.Locate("rules.xml", GameFileLocs.Config); GameConfiguration con = new GameConfiguration(fl);// Utils.LoadConfig("rules.xml"); ConfigurationSection sect = con["CityCommon"]; CityBallLimit = sect.GetInt("BallLimit"); CityMaxDevelopment = sect.GetSingle("MaxDevelopment", 10000); CityDevHealthRate = sect.GetSingle("DevHealthRate", 0.1f); CityInitialDevelopment = sect.GetSingle("InitialDevelopment", 1000); CityRadius = sect.GetSingle("Radius", 300); CityDevRBallHealthRate = sect.GetSingle("DevRBallHealthRate"); CityArmor = sect.GetSingle("Armor"); sect = con["NRCommon"]; FRecoverBias = sect.GetSingle("ORecoverBias", 1); ORecoverBias = sect.GetSingle("FRecoverBias", 1); FRecoverRate = sect.GetSingle("FRecoverRate", 0.0015f); sect = con["HarvCommon"]; HarvLoadingSpeed = sect.GetSingle("LoadingSpeed", 2.5f); HarvLoadingTime = sect.GetSingle("HarvLoadingTime", 3); #region 各种资源球配置读取 sect = con["OilBall"]; OilBallBaseHealth = sect.GetSingle("BaseHealth"); OilBallCost = sect.GetSingle("Cost"); OilBallContribution = sect.GetSingle("Contribution"); OilBallBaseDamage = sect.GetSingle("BaseDamage"); OilBallBaseHeal = sect.GetSingle("BaseHeal"); sect = con["GreenBall"]; GreenBallBaseHealth = sect.GetSingle("BaseHealth"); GreenBallCost = sect.GetSingle("Cost"); GreenBallContribution = sect.GetSingle("Contribution"); GreenBallBaseDamage = sect.GetSingle("BaseDamage"); GreenBallBaseHeal = sect.GetSingle("BaseHeal"); sect = con["EducationBall"]; EducationBallBaseHealth = sect.GetSingle("BaseHealth"); EducationBallGenInterval = sect.GetSingle("GenInterval"); EducationBallContribution = sect.GetSingle("Contribution"); EducationBallBaseDamage = sect.GetSingle("BaseDamage"); EducationBallBaseHeal = sect.GetSingle("BaseHeal"); sect = con["HealthBall"]; HealthBallBaseHealth = sect.GetSingle("BaseHealth"); HealthBallGenInterval = sect.GetSingle("GenInterval"); HealthBallContribution = sect.GetSingle("Contribution");; HealthBallBaseDamage = sect.GetSingle("BaseDamage"); HealthBallBaseHeal = sect.GetSingle("BaseHeal"); sect = con["DiseaseBall"]; DiseaseBallBaseHealth = sect.GetSingle("BaseHealth"); DiseaseBallGenInterval = sect.GetSingle("GenInterval"); DiseaseBallContribution = sect.GetSingle("Contribution"); DiseaseBallBaseDamage = sect.GetSingle("BaseDamage"); DiseaseBallBaseHeal = sect.GetSingle("BaseHeal"); sect = con["VolienceBall"]; VolienceBallBaseHealth = sect.GetSingle("BaseHealth"); VolienceBallGenInterval = sect.GetSingle("GenInterval"); VolienceBallContribution = sect.GetSingle("Contribution"); VolienceBallBaseDamage = sect.GetSingle("BaseDamage"); VolienceBallBaseHeal = sect.GetSingle("BaseHeal"); #endregion #region 各种城市的配置读取 sect = con["OilCity"]; OilGatherDistance = sect.GetSingle("GatherDistance", 150); OilHarvHP = sect.GetSingle("HarvHealth", 300); OilHarvStorage = sect.GetSingle("HarvStorage", 300); OilHarvSpeed = sect.GetSingle("HarvSpeed", 1); OilDevelopStep = sect.GetSingle("DevelopStep", 10); sect = con["GreenCity"]; GreenGatherDistance = sect.GetSingle("GatherDistance", 150); GreenHarvHP = sect.GetSingle("HarvHealth", 300); GreenHarvStorage = sect.GetSingle("HarvStorage", 300); GreenHarvSpeed = sect.GetSingle("HarvSpeed", 1); GreenDevelopStep = sect.GetSingle("DevelopStep", 10); sect = con["DiseaseCity"]; DiseaseDevelopStep = sect.GetSingle("DevelopStep", 10); sect = con["VolienceCity"]; VolienceDevelopStep = sect.GetSingle("VolienceCity", 10); sect = con["HealthCity"]; HealthDevelopStep = sect.GetSingle("HealthCity", 10); sect = con["EducationCity"]; EducationDevelopStep = sect.GetSingle("EducationCity", 10); #endregion }
private unsafe TreeModelLibrary(RenderSystem rs) { renderSys = rs; FileLocation fl = FileSystem.Instance.Locate("trees.xml", GameFileLocs.Config); Configuration conf = ConfigurationManager.Instance.CreateInstance(fl); foreach (KeyValuePair <string, ConfigurationSection> s in conf) { ConfigurationSection sect = s.Value; TreeModelData mdl; int type = sect.GetInt("Type", 0); string fileName = sect.GetString("Level0", string.Empty); FileLocation fl2 = FileSystem.Instance.Locate(fileName, GameFileLocs.Model); ModelMemoryData mdlData = new ModelMemoryData(rs, fl2); loadedModels.Add(mdlData); MeshData[] dataArr = mdlData.Entities; if (dataArr.Length == 1) { MeshData data = dataArr[0]; Material[][] mtrls = data.Materials; int partCount = mtrls.Length; FastList <int>[] indices = new FastList <int> [partCount]; for (int i = 0; i < partCount; i++) { indices[i] = new FastList <int>(); } mdl.Materials = new Material[partCount]; mdl.Indices = new int[partCount][]; mdl.PartVtxCount = new int[partCount]; MeshFace[] faces = data.Faces; for (int i = 0; i < faces.Length; i++) { int matId = faces[i].MaterialIndex; indices[matId].Add(faces[i].IndexA); indices[matId].Add(faces[i].IndexB); indices[matId].Add(faces[i].IndexC); } for (int i = 0; i < partCount; i++) { Material mtrl = mtrls[i][0]; mdl.Materials[i] = mtrl; indices[i].Trim(); mdl.Indices[i] = indices[i].Elements; int partVtxCount = 0; bool[] passed = new bool[data.VertexCount]; for (int j = 0; j < mdl.Indices[i].Length; j++) { passed[indices[i][j]] = true; } for (int j = 0; j < data.VertexCount; j++) { if (passed[j]) { partVtxCount++; } } mdl.PartVtxCount[i] = partVtxCount; } mdl.VertexCount = data.VertexCount; mdl.VertexData = new byte[data.VertexCount * data.VertexSize]; fixed(byte *dst = &mdl.VertexData[0]) { Memory.Copy(data.Data.ToPointer(), dst, mdl.VertexData.Length); } if (typedList[type] == null) { typedList[type] = new FastList <TreeModelData>(); } typedList[type].Add(mdl); } BuildTrunk(rs); } for (int i = 0; i < typedList.Length; i++) { typedList[i].Trim(); } }