mirror of
https://github.com/islehorse/HISP.git
synced 2025-04-23 05:05:53 +12:00
Auctions still dont work but i gtg.
This commit is contained in:
parent
cc22dbcf0b
commit
0f95462294
12 changed files with 385 additions and 44 deletions
|
@ -1,4 +1,5 @@
|
|||
using HISP.Game.Horse;
|
||||
using HISP.Player;
|
||||
using HISP.Security;
|
||||
using HISP.Server;
|
||||
using System.Collections.Generic;
|
||||
|
@ -14,6 +15,44 @@ namespace HISP.Game.Services
|
|||
AuctionEntries = new List<AuctionEntry>();
|
||||
Database.LoadAuctionRoom(this, RoomId);
|
||||
}
|
||||
|
||||
public class AuctionBid
|
||||
{
|
||||
public User BidUser;
|
||||
public AuctionEntry AuctionItem;
|
||||
public int BidAmount;
|
||||
|
||||
public void PlaceBid(int bidAmount)
|
||||
{
|
||||
string yourBidRaisedTo = Messages.FormatAuctionBidRaised(BidAmount, BidAmount + bidAmount);
|
||||
|
||||
BidAmount += bidAmount;
|
||||
if (BidAmount > AuctionItem.HighestBid)
|
||||
{
|
||||
AuctionItem.HighestBid += BidAmount;
|
||||
if(AuctionItem.HighestBidder != BidUser.Id)
|
||||
{
|
||||
if (GameServer.IsUserOnline(AuctionItem.HighestBidder))
|
||||
{
|
||||
User oldBidder = GameServer.GetUserById(AuctionItem.HighestBidder);
|
||||
byte[] outbidMessage = PacketBuilder.CreateChat(Messages.FormatAuctionYourOutbidBy(BidUser.Username, AuctionItem.HighestBid), PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||
oldBidder.LoggedinClient.SendPacket(outbidMessage);
|
||||
}
|
||||
}
|
||||
|
||||
AuctionItem.HighestBidder = BidUser.Id;
|
||||
yourBidRaisedTo += Messages.AuctionTopBid;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
yourBidRaisedTo += Messages.AuctionExistingBidHigher;
|
||||
}
|
||||
|
||||
byte[] bidPlacedMsg = PacketBuilder.CreateChat(yourBidRaisedTo, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||
BidUser.LoggedinClient.SendPacket(bidPlacedMsg);
|
||||
}
|
||||
}
|
||||
public class AuctionEntry
|
||||
{
|
||||
public AuctionEntry(int timeRemaining, int highestBid, int highestBidder, int randomId=-1)
|
||||
|
@ -26,10 +65,71 @@ namespace HISP.Game.Services
|
|||
|
||||
public HorseInstance Horse;
|
||||
public int OwnerId;
|
||||
|
||||
public bool Completed
|
||||
{
|
||||
get
|
||||
{
|
||||
return done;
|
||||
}
|
||||
set
|
||||
{
|
||||
done = value;
|
||||
if(done)
|
||||
{
|
||||
Horse.Owner = HighestBidder;
|
||||
Horse.Hidden = false;
|
||||
|
||||
if(GameServer.IsUserOnline(highestBidder))
|
||||
{
|
||||
User userWon = GameServer.GetUserById(highestBidder);
|
||||
byte[] wonAuction = PacketBuilder.CreateChat(Messages.FormatAuctionBroughtHorse(highestBid), PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||
userWon.LoggedinClient.SendPacket(wonAuction);
|
||||
userWon.Money -= highestBid;
|
||||
}
|
||||
else
|
||||
{
|
||||
Database.SetPlayerMoney(Database.GetPlayerMoney(highestBidder) - highestBid, highestBidder);
|
||||
}
|
||||
if(GameServer.IsUserOnline(OwnerId))
|
||||
{
|
||||
User userSold = GameServer.GetUserById(highestBidder);
|
||||
byte[] horseSold = PacketBuilder.CreateChat(Messages.FormatAuctionHorseSold(highestBid), PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||
userSold.LoggedinClient.SendPacket(horseSold);
|
||||
userSold.Money += highestBid;
|
||||
}
|
||||
else
|
||||
{
|
||||
Database.SetPlayerMoney(Database.GetPlayerMoney(OwnerId) + highestBid, OwnerId);
|
||||
}
|
||||
}
|
||||
Database.SetAuctionDone(RandomId, done);
|
||||
}
|
||||
}
|
||||
|
||||
public void Bid(User bidder, int bidAmount)
|
||||
{
|
||||
|
||||
foreach(AuctionBid bid in bidder.Bids)
|
||||
{
|
||||
if (bid.AuctionItem.RandomId == this.RandomId)
|
||||
{
|
||||
bid.PlaceBid(bidAmount);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
AuctionBid newBid = new AuctionBid();
|
||||
newBid.AuctionItem = this;
|
||||
newBid.BidUser = bidder;
|
||||
newBid.BidAmount = 0;
|
||||
newBid.PlaceBid(bidAmount);
|
||||
bidder.Bids.Add(newBid);
|
||||
}
|
||||
|
||||
public int RandomId;
|
||||
private int timeRemaining;
|
||||
|
||||
private bool done;
|
||||
private int highestBid;
|
||||
private int highestBidder;
|
||||
|
||||
|
@ -43,6 +143,7 @@ namespace HISP.Game.Services
|
|||
{
|
||||
timeRemaining = value;
|
||||
Database.SetAuctionTimeout(RandomId, value);
|
||||
|
||||
}
|
||||
}
|
||||
public int HighestBid
|
||||
|
@ -74,10 +175,34 @@ namespace HISP.Game.Services
|
|||
|
||||
}
|
||||
|
||||
public void UpdateAuctionRoom()
|
||||
{
|
||||
foreach (World.SpecialTile tile in World.SpecialTiles)
|
||||
{
|
||||
if (tile.Code != null)
|
||||
{
|
||||
if (tile.Code.StartsWith("AUCTION-"))
|
||||
{
|
||||
int id = int.Parse(tile.Code.Split('-')[1]);
|
||||
if (id == this.RoomId)
|
||||
{
|
||||
GameServer.UpdateAreaForAll(tile.X, tile.Y);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
public void DeleteEntry(AuctionEntry entry)
|
||||
{
|
||||
Database.DeleteAuctionRoom(entry.RandomId);
|
||||
AuctionEntries.Remove(entry);
|
||||
}
|
||||
|
||||
public void AddEntry(AuctionEntry entry)
|
||||
{
|
||||
Database.AddAuctionRoom(entry, this.RoomId);
|
||||
AuctionEntries.Add(entry);
|
||||
|
||||
}
|
||||
|
||||
public List<AuctionEntry> AuctionEntries;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue