Implement "Read Books"

This commit is contained in:
SilicaAndPina 2021-02-03 17:27:34 +13:00
parent 0b06cd1810
commit 6c42c57bfe
6 changed files with 243 additions and 1 deletions

View file

@ -525,6 +525,17 @@ namespace HISP.Server
Vet vet = new Vet(id, cost);
Logger.DebugPrint("Registered Vet: " + vet.Id + " selling at: " + vet.PriceMultiplier);
}
int totalBooks = gameData.books.Count;
for (int i = 0; i < totalBooks; i++)
{
int id = gameData.books[i].id;
string author = gameData.books[i].author;
string title = gameData.books[i].title;
string text = gameData.books[i].text;
Book book = new Book(id, title, author, text);
Logger.DebugPrint("Registered Libary Book: " + book.Id + " " + book.Title + " by " + book.Author);
}
HorseInfo.HorseNames = gameData.horses.names.ToObject<string[]>();
Item.Present = gameData.item.special.present;
@ -602,6 +613,11 @@ namespace HISP.Server
Messages.StatMiscNoneRecorded = gameData.messages.meta.misc_stats.no_stats_recorded;
Messages.StatMiscEntryFormat = gameData.messages.meta.misc_stats.stat_format;
// Books (Libary)
Messages.BooksOfHorseIsle = gameData.messages.meta.libary.books.books_of_horseisle;
Messages.BookEntryFormat = gameData.messages.meta.libary.books.book_entry;
Messages.BookReadFormat = gameData.messages.meta.libary.books.book_read;
// Awards (Libary)
Messages.AwardsAvalible = gameData.messages.meta.libary.awards.all_earnable_awards;
Messages.AwardEntryFormat = gameData.messages.meta.libary.awards.award_entry;

View file

@ -1370,6 +1370,11 @@ namespace HISP.Server
metaPacket = PacketBuilder.CreateMetaPacket(Meta.BuildAllStats(sender.LoggedinUser));
sender.SendPacket(metaPacket);
break;
case "38":
sender.LoggedinUser.MetaPriority = true;
metaPacket = PacketBuilder.CreateMetaPacket(Meta.BuildBooksLibary());
sender.SendPacket(metaPacket);
break;
case "53": // Misc Stats / Tracked Items
sender.LoggedinUser.MetaPriority = true;
metaPacket = PacketBuilder.CreateMetaPacket(Meta.BuildMiscStats(sender.LoggedinUser));
@ -1405,6 +1410,33 @@ namespace HISP.Server
break;
default:
if(buttonIdStr.StartsWith("39c")) // Book Read
{
string idStr = buttonIdStr.Substring(3);
int bookId = -1;
try
{
bookId = int.Parse(idStr);
}
catch (FormatException)
{
Logger.DebugPrint(sender.LoggedinUser.Username + " Tried to read a book of id NaN");
break;
};
if(Book.BookExists(bookId))
{
Book book = Book.GetBookById(bookId);
sender.LoggedinUser.MetaPriority = true;
metaPacket = PacketBuilder.CreateMetaPacket(Meta.BuildBookReadLibary(book));
sender.SendPacket(metaPacket);
}
else
{
Logger.HackerPrint(sender.LoggedinUser.Username + "Tried to read a book that doesnt exist.");
}
break;
}
if(buttonIdStr.StartsWith("32c")) // Horse Whisperer
{
string idStr = buttonIdStr.Substring(3);