示例#1
0
        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);
        }
示例#2
0
        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;
                }
            }
        }
示例#3
0
        //[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
                );
        }
示例#4
0
        static bool Prefix(TradeDeal __instance)
        {
            if (TradingWindow.drawingTrade != null)
            {
                MpTradeSession.current.Reset();
                return(false);
            }

            return(true);
        }
示例#5
0
        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);
        }
示例#6
0
        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);
        }
示例#7
0
 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;
         }
     }
 }
示例#8
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;
     }
 }
示例#9
0
        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);
        }
示例#10
0
    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;
        }
    }
示例#11
0
        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);
        }
示例#12
0
文件: Tradings.cs 项目: Taha-cmd/MCTG
        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"));
        }
示例#13
0
        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));
            }
        }
示例#14
0
        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
                                     );
        }
示例#15
0
文件: Tradings.cs 项目: Taha-cmd/MCTG
        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);
        }
示例#16
0
        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);
        }
示例#17
0
        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;
        }
示例#18
0
        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;
            }
        }