public List<NewsItem> GetNews(Account acc)
{
MySqlCommand cmd = CreateQuery();
cmd.CommandText = "SELECT icon, title, text, link, date FROM news ORDER BY date LIMIT 10;";
var ret = new List<NewsItem>();
using (MySqlDataReader rdr = cmd.ExecuteReader())
{
while (rdr.Read())
ret.Add(new NewsItem
{
Icon = rdr.GetString("icon"),
Title = rdr.GetString("title"),
TagLine = rdr.GetString("text"),
Link = rdr.GetString("link"),
Date = DateTimeToUnixTimestamp(rdr.GetDateTime("date")),
});
}
if (acc != null)
{
cmd.CommandText = @"SELECT charId, characters.charType, level, death.totalFame, time
FROM characters, death
WHERE dead = TRUE AND
characters.accId=@accId AND death.accId=@accId
AND characters.charId=death.chrId;";
cmd.Parameters.AddWithValue("@accId", acc.AccountId);
using (MySqlDataReader rdr = cmd.ExecuteReader())
{
while (rdr.Read())
ret.Add(new NewsItem
{
Icon = "fame",
Title = string.Format("Your {0} died at level {1}",
XmlDatas.TypeToId[(short)rdr.GetInt32("charType")],
rdr.GetInt32("level")),
TagLine = string.Format("You earned {0} glorious Fame",
rdr.GetInt32("totalFame")),
Link = "fame:" + rdr.GetInt32("charId"),
Date = DateTimeToUnixTimestamp(rdr.GetDateTime("time")),
});
}
}
ret.Sort((a, b) => -Comparer<int>.Default.Compare(a.Date, b.Date));
return ret.Take(10).ToList();
}
public void HandleRequest(HttpListenerContext context) { NameValueCollection query; using (StreamReader rdr = new StreamReader(context.Request.InputStream)) query = HttpUtility.ParseQueryString(rdr.ReadToEnd()); using (var db1 = new Database()) { chrs = new Chars() { Characters = new List<Char>() { }, NextCharId = 2, MaxNumChars = 1, Account = db1.Verify(query["guid"], query["password"]), Servers = new List<ServerItem>() { new ServerItem() { Name = "EUSouth", Lat = 22.28, Long = 114.16, DNS = db.confreader.getservers(false).ToString(), //127.0.0.1, CHANGE THIS TO LET YOUR FRIENDS CONNECT Usage = 0.2, AdminOnly = false } //new ServerItem() //{ // Name = "Admin Realm", // Lat = 22.28, // Long = 114.16, // DNS = "127.0.0.1", // Usage = 0.2, // AdminOnly = true //} } }; if (chrs.Account != null) { db1.GetCharData(chrs.Account, chrs); db1.LoadCharacters(chrs.Account, chrs); chrs.News = db1.GetNews(chrs.Account); } else { chrs.Account = Database.CreateGuestAccount(query["guid"]); chrs.News = db1.GetNews(null); } MemoryStream ms = new MemoryStream(); XmlSerializer serializer = new XmlSerializer(chrs.GetType(), new XmlRootAttribute(chrs.GetType().Name) { Namespace = "" }); XmlWriterSettings xws = new XmlWriterSettings(); xws.OmitXmlDeclaration = true; xws.Encoding = Encoding.UTF8; XmlWriter xtw = XmlWriter.Create(context.Response.OutputStream, xws); serializer.Serialize(xtw, chrs, chrs.Namespaces); } }