Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add universal tokens to itemshop #10

Merged
merged 1 commit into from
Jan 27, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 20 additions & 15 deletions src/Perpetuum/Services/ItemShop/ItemShop.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public class ItemShop : Unit
private readonly IStandingHandler _standingHandler;
private readonly CharacterWalletFactory _characterWalletFactory;

public ItemShop(IStandingHandler standingHandler,CharacterWalletFactory characterWalletFactory)
public ItemShop(IStandingHandler standingHandler, CharacterWalletFactory characterWalletFactory)
{
_standingHandler = standingHandler;
_characterWalletFactory = characterWalletFactory;
Expand All @@ -42,7 +42,7 @@ private ItemShopEntry GetEntry(int entryID)
JOIN itemshoplocations sl ON its.presetid = sl.presetid
WHERE sl.locationeid = @eid AND its.id = @id";

var record = Db.Query().CommandText(qryStr).SetParameter("@eid",Eid).SetParameter("@id", entryID).ExecuteSingleRow();
var record = Db.Query().CommandText(qryStr).SetParameter("@eid", Eid).SetParameter("@id", entryID).ExecuteSingleRow();
if (record == null)
return null;

Expand All @@ -56,7 +56,7 @@ private List<ItemShopEntry> GetAll()
JOIN itemshoplocations sl ON its.presetid = sl.presetid
WHERE sl.locationeid = @eid";

var records = Db.Query().CommandText(qryStr).SetParameter("@eid",Eid).Execute();
var records = Db.Query().CommandText(qryStr).SetParameter("@eid", Eid).Execute();

var entries = new List<ItemShopEntry>();

Expand All @@ -82,11 +82,9 @@ private static ItemShopEntry CreateItemShopEntryFromRecord(IDataRecord record)
var tmCoin = record.GetValue<int?>("tmCoin") ?? 0;
var icsCoin = record.GetValue<int?>("icscoin") ?? 0;
var asiCoin = record.GetValue<int?>("asicoin") ?? 0;
var uniCoin = record.GetValue<int?>("unicoin") ?? 0;




return new ItemShopEntry(id, EntityDefault.Get(targetDefinition), targetAmount, tmCoin,icsCoin,asiCoin , price, globalLimit, purchaseCount,standing);
return new ItemShopEntry(id, EntityDefault.Get(targetDefinition), targetAmount, tmCoin, icsCoin, asiCoin, uniCoin, price, globalLimit, purchaseCount, standing);
}

public Dictionary<string, object> EntriesToDictionary()
Expand All @@ -96,7 +94,7 @@ public Dictionary<string, object> EntriesToDictionary()

private void CheckStanding(Character character, ItemShopEntry shopEntry)
{
if ( shopEntry.Standing == null)
if (shopEntry.Standing == null)
return;

var standing = _standingHandler.GetStanding(Owner, character.Eid);
Expand All @@ -114,7 +112,7 @@ public void Buy(Container container, Character character, int entryID, int quant
throw new PerpetuumException(ErrorCodes.ItemNotFound);

entry.CheckGlobalLimit(quantity);
CheckStanding(character,entry);
CheckStanding(character, entry);

entry.RemoveFromContainer(container, quantity);

Expand All @@ -135,14 +133,14 @@ public void Buy(Container container, Character character, int entryID, int quant
var targetItem = entry.CreateTargetItem(character, quantity);
container.AddItem(targetItem, true);

UpdateGlobalPurchaseCount(targetItem.Definition,targetItem.Quantity);
UpdateGlobalPurchaseCount(targetItem.Definition, targetItem.Quantity);

if (entry.TmCoin > 0)
character.LogTransaction(TransactionLogEvent.Builder()
.SetTransactionType(TransactionType.ItemShopTake)
.SetCharacter(character)
.SetContainer(container)
.SetItem(EntityDefault.GetByName(DefinitionNames.TM_MISSION_COIN).Definition, entry.TmCoin * quantity));
character.LogTransaction(TransactionLogEvent.Builder()
.SetTransactionType(TransactionType.ItemShopTake)
.SetCharacter(character)
.SetContainer(container)
.SetItem(EntityDefault.GetByName(DefinitionNames.TM_MISSION_COIN).Definition, entry.TmCoin * quantity));

if (entry.IcsCoin > 0)
character.LogTransaction(TransactionLogEvent.Builder()
Expand All @@ -158,6 +156,13 @@ public void Buy(Container container, Character character, int entryID, int quant
.SetContainer(container)
.SetItem(EntityDefault.GetByName(DefinitionNames.ASI_MISSION_COIN).Definition, entry.AsiCoin * quantity));

if (entry.UniCoin > 0)
character.LogTransaction(TransactionLogEvent.Builder()
.SetTransactionType(TransactionType.ItemShopTake)
.SetCharacter(character)
.SetContainer(container)
.SetItem(EntityDefault.GetByName(DefinitionNames.UNIVERSAL_MISSION_COIN).Definition, entry.UniCoin * quantity));


character.LogTransaction(TransactionLogEvent.Builder()
.SetTransactionType(TransactionType.ItemShopBuy)
Expand Down
23 changes: 17 additions & 6 deletions src/Perpetuum/Services/ItemShop/ItemShopEntry.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,19 +14,21 @@ public class ItemShopEntry
private readonly int _tmcoin;
private readonly int _icscoin;
private readonly int _asicoin;
private readonly int _unicoin;
private readonly double _credit;
private readonly int? _globalLimit;
private readonly int _purchaseCount;
private readonly double? _standing;

public ItemShopEntry(int id,EntityDefault targetItemED,int targetItemAmount,int tmcoin, int icscoin, int asicoin, double credit, int? globalLimit, int purchaseCount,double? standing)
public ItemShopEntry(int id, EntityDefault targetItemED, int targetItemAmount, int tmcoin, int icscoin, int asicoin, int unicoin, double credit, int? globalLimit, int purchaseCount, double? standing)
{
_id = id;
_targetItemED = targetItemED;
_targetItemAmount = targetItemAmount;
_tmcoin = tmcoin;
_icscoin = icscoin;
_asicoin = asicoin;
_unicoin = unicoin;
_credit = credit;
_purchaseCount = purchaseCount;
_globalLimit = globalLimit;
Expand All @@ -53,18 +55,20 @@ public int TmCoin
get { return _tmcoin; }
}


public int AsiCoin
{
get { return _asicoin; }
}


public int IcsCoin
{
get { return _icscoin; }
}

public int UniCoin
{
get { return _unicoin; }
}

public double Credit
{
Expand All @@ -78,7 +82,7 @@ public double? Standing

public Dictionary<string, object> ToDictionary()
{
var d = new Dictionary<string,object>();
var d = new Dictionary<string, object>();

d[k.ID] = _id;
d[k.targetDefinition] = _targetItemED.Definition;
Expand All @@ -90,10 +94,11 @@ public Dictionary<string, object> ToDictionary()
d[k.tmcoin] = _tmcoin;
d[k.icscoin] = _icscoin;
d[k.asicoin] = _asicoin;
d[k.unicoin] = _unicoin;
return d;
}

public Item CreateTargetItem(Character owner,int quantity)
public Item CreateTargetItem(Character owner, int quantity)
{
var targetItem = (Item)Entity.Factory.CreateWithRandomEID(TargetItemED);
targetItem.Owner = owner.Eid;
Expand All @@ -110,7 +115,7 @@ public void CheckGlobalLimit(int quantity)
if (GlobalLimit <= PurchaseCount)
throw new PerpetuumException(ErrorCodes.OutOfItemGlobally);

var availableAmount = (int) GlobalLimit - PurchaseCount;
var availableAmount = (int)GlobalLimit - PurchaseCount;

//clamp to the available maximum
if (availableAmount < quantity)
Expand All @@ -137,6 +142,12 @@ public void RemoveFromContainer(Container container, int quantity)
var ac = Coin.CreateASICoin(_asicoin);
ac.RemoveFromContainer(container, quantity);
}

if (_unicoin > 0)
{
var ac = Coin.CreateUniversalCoin(_unicoin);
ac.RemoveFromContainer(container, quantity);
}
}
}
}