using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MissionStatsStar { class MPLeaderboardBinder // { /* private List lbs; private List cols; public MPLeaderboardBinder() { lbs = new List(); cols = new List(); } internal object AddLB(Leaderboard lb) { lbs.Add(lb); return lb;//whatever you return gets put in the listbox } internal object AddCOL(Leaderboard.Column cb) { cols.Add(cb); return cb;//whatever you return gets put in the listbox } internal void RemoveLB(object p) { if (lbs.Contains(p)) { lbs.Remove((Leaderboard)p); } } internal void RemoveCOL(object p) { if (cols.Contains(p)) { cols.Remove((Leaderboard.Column)p); } } public struct scriptArg { public string type; public string name; public uint colID; }; private List makeArgsForBoard(Leaderboard l) { List args = new List(); bool bvalid = false; foreach(Leaderboard.Column c in l.getColumns()) { scriptArg arg = new scriptArg(); switch (c.m_LbProp.m_Type) { case DataTypes.XUSER_DATA_TYPE_INT64: case DataTypes.XUSER_DATA_TYPE_INT32: bvalid = true; arg.type = "INT"; break; case DataTypes.XUSER_DATA_TYPE_FLOAT: case DataTypes.XUSER_DATA_TYPE_DOUBLE: bvalid = true; arg.type = "FLOAT"; break; } arg.colID = c.m_Id; //make sure the arg isn't on the invalidation list foreach (Leaderboard.Column co in cols) { if (co.m_Name.CompareTo(c.m_Name) == 0) { bvalid = false; } } if (bvalid) { arg.name = c.m_Name; args.Add(arg); } } return args; } internal void ExportScriptHeader(string target) { string buffer = "//MSS MP Leaderboard write auto generated script header\r\n\r\n"; foreach (Leaderboard l in lbs) { List callArgs = makeArgsForBoard(l); buffer += "//Writer function for "+ l.m_Name +" \r\n"; buffer += "PROC LEADERBOARD_WRITE_TO_" + l.m_Name + "("; int nth = callArgs.Count(); foreach (scriptArg a in callArgs) { buffer += a.type + " " + a.name; if (nth > 1) { buffer += ","; } --nth; } buffer += ")\r\n\r\n"; buffer += "\tLeaderboardUpdateData lbrd\r\n"; buffer += "\tlbrd.m_LeaderboardId = " + l.m_LeaderboardId + "\r\n"; buffer += "\tLEADERBOARDS2_WRITE_DATA(lbrd)\r\n"; foreach (scriptArg a in callArgs) { if (a.type.CompareTo("FLOAT") == 0) { //LEADERBOARDS_WRITE_SET_FLOAT buffer += "\tLEADERBOARDS_WRITE_SET_FLOAT("; } else if (a.type.CompareTo("INT") == 0) { //LEADERBOARDS_WRITE_SET_INT buffer += "\tLEADERBOARDS_WRITE_SET_INT("; } buffer += a.colID + "," + a.name; buffer += ")\r\n"; } buffer += "\r\n\r\nENDPROC\r\n\r\n"; } FileStream f = new FileStream(target, FileMode.Create); StreamWriter w = new StreamWriter(f); w.Write(buffer); w.Close(); } internal void SaveMPBinds(BinaryWriter bw) { bw.Write(lbs.Count()); bw.Write(cols.Count()); foreach (Leaderboard l in lbs) { bw.Write(l.m_Name); bw.Write(l.m_LeaderboardId); } foreach (Leaderboard.Column c in cols) { bw.Write(c.m_Name); bw.Write(c.m_Id); } } internal void LoadMPBinds(BinaryReader br, LeaderboardCollection leaderboards) { lbs.Clear(); cols.Clear(); //read the totals int lnum = br.ReadInt32(); int cnum = br.ReadInt32(); //load the data for(int i = 0;i < lnum;++i) { //brute force lookup because we don't care if this is slow string name = br.ReadString(); uint id = br.ReadUInt32(); foreach (Leaderboard l in leaderboards.GetLeaderboards()) { if (l.m_LeaderboardId == id && name.CompareTo(l.m_Name) == 0) { lbs.Add(l); break; } } } for(int i = 0;i < cnum;++i) { string name = br.ReadString(); uint id = br.ReadUInt32(); bool bfound = false; foreach (Leaderboard l in leaderboards.GetLeaderboards()) { foreach (Leaderboard.Column c in l.getColumns()) { if (c.m_Id == id && name.CompareTo(c.m_Name) == 0)// { cols.Add(c); bfound = true; break; } } if (bfound) { break; } } } } internal void RefreshMyLists(System.Windows.Forms.ListBox Boards, System.Windows.Forms.ListBox Cols) { Boards.Items.Clear(); Cols.Items.Clear(); foreach (Leaderboard l in lbs) { Boards.Items.Add(l); } foreach (Leaderboard.Column c in cols) { Cols.Items.Add(c); } }*/ } }