public static bool DoExecute(this TradeDeal This) { Pair <int, int> currencyFmt = Utility.GetCurrencyFmt(); if (debug) { Log.Message(currencyFmt.First + "," + currencyFmt.Second); } UpdateCurrencyCount(This, currencyFmt); bool flag = false; foreach (Tradeable item in (List <Tradeable>)tradeables.GetValue(This)) { if (item.ActionToDo != 0) { flag = true; } item.ResolveTrade(); } This.Reset(); if (flag) { Utility.ResetCacheNotes(); } return(flag); }
public void OnNewTradeDeal(TradeDeal newtradedeal) { if (ActiveTradeDeal == TradeDeal.None) { NextTradeDealCheck = DateTime.UtcNow + TimeSpan.FromDays(TradeDealCostPeriod); } else if (newtradedeal == TradeDeal.None) { NextTradeDealCheck = DateTime.MinValue; TradeDealStart = DateTime.MinValue; } else { TradeDealStart = DateTime.UtcNow; } ActiveTradeDeal = newtradedeal; if (Stone != null) { Stone.InvalidateProperties(); } foreach (CityLoyaltyEntry player in PlayerTable.OfType <CityLoyaltyEntry>()) { if (player.UtilizingTradeDeal) { player.UtilizingTradeDeal = false; } } }
//[TestMethod] public void test_deals() { FinancialInstrument instr = controller.get_instrument("SPFB_LKOH_140101_140331.txt"); TradingStrategy strategy = controller.get_strategy("Test5").Originator; ForecastingModule forecastingModule = new ForecastingModule(strategy, instr); ForecastResult result = forecastingModule.run(); int numDeal = 5; TypeDeal expType = TypeDeal.Sell; DateTime expDateOpen = new DateTime(14, 2, 12, 12, 35, 0); DateTime expDateClose = new DateTime(14, 2, 12, 12, 36, 0); double expOpenPrice = 20430, expClosePrice = 20438; TradeDeal tradeDeal = result.get_deal(numDeal); double actOpenPrice = tradeDeal.OpeningPrice; double actClosePrice = tradeDeal.ClosingPrice; Assert.AreEqual( true, tradeDeal.Opening == false && tradeDeal.Type == expType && actOpenPrice == expOpenPrice //&& tradeDeal.DateTimeOpen.Equals(expDateOpen) //&& tradeDeal.DateTimeClose == expDateClose && actClosePrice == expClosePrice ); }
static bool Prefix(TradeDeal __instance) { if (TradingWindow.drawingTrade != null) { MpTradeSession.current.Reset(); return(false); } return(true); }
public void Deal_JSONProperlyInitialized() { string jsonstring = "{\"Id\": \"6cd85277-4590-49d4-b0cf-ba0a921faad0\", \"CardToTrade\": \"1cb6ab86-bdb2-47e5-b6e4-68c5ab389334\", \"Type\": \"monster\", \"MinimumDamage\": 15}"; TradeDeal trade = JsonSerializer.Deserialize <TradeDeal>(jsonstring); Assert.AreEqual("6cd85277-4590-49d4-b0cf-ba0a921faad0", trade.Id); Assert.AreEqual("1cb6ab86-bdb2-47e5-b6e4-68c5ab389334", trade.CardToTrade); Assert.AreEqual("monster", trade.Type); Assert.AreEqual(15, trade.MinimumDamage); }
public static bool CanColonyAffordTrade(TradeDeal This) { int num = This.CurrencyTradeable.CountPostDealFor(Transactor.Colony); int notesBalanceAvaliable = Utility.GetNotesBalanceAvaliable(Transactor.Colony); if (num + notesBalanceAvaliable > 0) { return(true); } return(false); }
static void Postfix(ref TradeDeal __instance, ref bool __result) { if (TradeSession.trader.TraderKind.defName == "FCResearchTrader") { FactionFC faction = Find.World.GetComponent <FactionFC>(); if (__result == true && faction.tradedAmount != 0) { Find.LetterStack.ReceiveLetter("FCFactionResearch".Translate(), TranslatorFormattedStringExtensions.Translate("PointsAddedToResearchPool", faction.tradedAmount), LetterDefOf.PositiveEvent); faction.tradedAmount = 0; } } }
public static void Postfix(TradeDeal __instance, bool __result) { if (TradeSession.giftMode == true && __result && Utilities.FactionsWar().GetByFaction(TradeSession.trader.Faction) != null) { float totalValue = 0; foreach (Tradeable t in __instance.AllTradeables) { totalValue += t.BaseMarketValue; } Utilities.FactionsWar().GetByFaction(TradeSession.trader.Faction).resources += totalValue; } }
public static bool HasTradeDeal(Mobile m, TradeDeal deal) { CityLoyaltySystem sys = GetCitizenship(m); if (sys != null) { CityLoyaltyEntry entry = sys.GetPlayerEntry <CityLoyaltyEntry>(m, true); return(sys.ActiveTradeDeal == deal && entry != null && entry.UtilizingTradeDeal); } return(false); }
public void OpenCity(City c) { CloseCity(); CurrentCity = c; if (c == null) { Debug.LogError("Tried to open null city"); } cityName.text = CurrentCity.name; cityMenu.OpenMenu(cityPage); diploMenu.OpenMenu(); exports = c.GetPossibleExports(); foreach (ItemOrder export in exports) { //don't allow trade if item is not whitelisted if (!ResourcesDatabase.ItemAllowed(export.GetItemName())) { continue; } GameObject deal = Instantiate(UIObjectDatabase.GetUIElement("TradeDeal")); deal.transform.SetParent(exportsGrid.transform); TradeDeal td = deal.GetComponent <TradeDeal>(); td.order = export; td.trade = tradeController; td.diplo = this; } imports = c.GetPossibleImports(); foreach (ItemOrder import in imports) { //don't allow trade if item is not whitelisted if (!ResourcesDatabase.ItemAllowed(import.GetItemName())) { continue; } GameObject deal = Instantiate(UIObjectDatabase.GetUIElement("TradeDeal")); deal.transform.SetParent(importsGrid.transform); TradeDeal td = deal.GetComponent <TradeDeal>(); td.order = import; td.trade = tradeController; td.diplo = this; } }
internal static void UpdateCurrencyCount(this TradeDeal _this) { float silverCount = 0f; FieldInfo tradeablesFieldInfo = typeof(TradeDeal).GetField("tradeables", BindingFlags.Instance | BindingFlags.NonPublic); List <Tradeable> tradeables = (List <Tradeable>)tradeablesFieldInfo.GetValue(_this); foreach (Tradeable current in tradeables) { if (!current.IsCurrency) { silverCount += current.CurTotalSilverCost; } } _this.SilverTradeable.countToDrop = -Mathf.CeilToInt(silverCount); }
private Response CreateTradeDeal(Request request) { TradeDeal deal = JsonSerializer.Deserialize <TradeDeal>(request.Payload); string username = Session.GetUsername(ExtractAuthorizationToken(request.Authorization)); CardsRepository cardsRepo = new CardsRepository(); UsersRepository usersRepo = new UsersRepository(); TradeDealsRepository dealer = new TradeDealsRepository(); DecksRepository decksRepo = new DecksRepository(); if (!deal.Validate()) { return(ResponseManager.BadRequest("invalid format for trade deal json object")); } if (dealer.DealExists(deal.Id)) { return(ResponseManager.BadRequest($"trade deal with id {deal.Id} allready exists")); } if (username.IsNull()) { return(ResponseManager.Unauthorized("No session found")); } if (!cardsRepo.CardExists(deal.CardId)) { return(ResponseManager.NotFound($"card {deal.CardId} doesn't exist")); } if (!cardsRepo.InStack(username, deal.CardId)) { return(ResponseManager.NotFound($"you don't own card {deal.CardId}")); } if (decksRepo.HasCardInDeck(username, deal.CardId)) { return(ResponseManager.BadRequest($"card {deal.CardId} is in the deck for {username}. You can't trade cards in the deck")); } deal.OwnerId = usersRepo.GetUserID(username); dealer.AddDeal(deal); return(ResponseManager.Created($"trade deal {deal.Id} created")); }
public static void UpdateCurrencyCount(TradeDeal This, Pair <int, int> currencyfmt) { This.CurrencyTradeable.ForceTo(currencyfmt.Second); int num = Math.Abs(currencyfmt.First); Transactor transactor = (currencyfmt.First >= 0) ? Transactor.Trader : Transactor.Colony; for (int num2 = cacheNotes.Count - 1; num2 > -1; num2--) { int num3 = cacheNotes[num2].CountHeldBy(transactor); if (debug) { Utility.DebugprintfUpdateCurrencyCount(num, num3, transactor); } if (num3 != 0) { if (num < num3) { num3 = num; num = 0; } else { num -= num3; } if (transactor == Transactor.Colony) { num3 = -num3; } if (debug) { Utility.DebugprintfUpdateCurrencyCount(num, num3, transactor); } cacheNotes[num2].ForceTo(num3); if (num == 0) { break; } } } if (debug) { Utility.DebugOutputTradeables((List <Tradeable>)tradeables.GetValue(This)); } }
public void AddDeal(TradeDeal deal) { string statement = $"INSERT INTO \"{Table}\" (id, owner_id, card_id, min_damage, max_weakness, card_type, element) " + $"VALUES (@id, @owner_id, @card_id, @min_damage, @max_weakness, @card_type, @element)"; var max_weakness = deal.MaximumWeakness.IsNull() ? new NpgsqlParameter("max_weakness", DBNull.Value) : new NpgsqlParameter("max_weakness", deal.MaximumWeakness); var card_type = deal.CardType.IsNull() ? new NpgsqlParameter("card_type", DBNull.Value) : new NpgsqlParameter("card_type", deal.CardType); var element = deal.ElementType.IsNull() ? new NpgsqlParameter("element", DBNull.Value) : new NpgsqlParameter("element", deal.ElementType); database.ExecuteNonQuery(statement, new NpgsqlParameter("id", deal.Id), new NpgsqlParameter("owner_id", deal.OwnerId), new NpgsqlParameter("card_id", deal.CardId), new NpgsqlParameter("min_damage", deal.MinimumDamage), max_weakness, card_type, element ); }
private bool OfferMeatsDealRequirements(CardData offeredCard, TradeDeal deal) { // check constraints if (offeredCard.Damage < deal.MinimumDamage) { return(false); } if (offeredCard.Weakness > deal.MaximumWeakness) { return(false); } if (!ElementTypeForTradeIsOk(offeredCard.Name, deal.ElementType)) { return(false); } if (!CardTypeForTradeIsOk(offeredCard.Name, deal.CardType)) { return(false); } return(true); }
public void test_run() { FinancialInstrument instr = controller.get_instrument("SPFB.Si_090101_091231.txt"); TradingStrategy strategy = controller.get_strategy("Test5").Originator; strategy.subscribe_analyzer(new AnalyzerDirection()); ForecastingModule forecastingModule = new ForecastingModule(strategy, instr); ForecastResult result = forecastingModule.run(); //result.print(); double profitExepted = -3419; int numDeal = 5; TypeDeal expType = TypeDeal.Buy; DateTime expDateOpen = new DateTime(2009, 5, 13, 10, 49, 0); DateTime expDateClose = new DateTime(2009, 5, 13, 10, 53, 0); double expOpenPrice = 32110, expClosePrice = 32094; TradeDeal tradeDeal = result.get_deal(numDeal); double actOpenPrice = tradeDeal.OpeningPrice; double actClosePrice = tradeDeal.ClosingPrice; DateTime actDateTimeOpen = tradeDeal.DateTimeOpen; DateTime actDateTimeClose = tradeDeal.DateTimeClose; Assert.AreEqual(true, profitExepted == result.CurProfit && tradeDeal.Opening == false && tradeDeal.Type == expType && actOpenPrice == expOpenPrice && actClosePrice == expClosePrice && actDateTimeOpen == expDateOpen && actDateTimeClose == expDateClose); }
public static bool HasTradeDeal(Mobile m, TradeDeal deal) { CityLoyaltySystem sys = GetCitizenship(m); if (sys != null) { CityLoyaltyEntry entry = sys.GetPlayerEntry<CityLoyaltyEntry>(m, true); return sys.ActiveTradeDeal == deal && entry != null && entry.UtilizingTradeDeal; } return false; }
public void OnNewTradeDeal(TradeDeal newtradedeal) { if(ActiveTradeDeal == TradeDeal.None) { NextTradeDealCheck = DateTime.UtcNow + TimeSpan.FromDays(TradeDealCostPeriod); } else if (newtradedeal == TradeDeal.None) { NextTradeDealCheck = DateTime.MinValue; TradeDealStart = DateTime.MinValue; } else TradeDealStart = DateTime.UtcNow; ActiveTradeDeal = newtradedeal; if (Stone != null) Stone.InvalidateProperties(); foreach (CityLoyaltyEntry player in PlayerTable.OfType<CityLoyaltyEntry>()) { if (player.UtilizingTradeDeal) player.UtilizingTradeDeal = false; } }