コード例 #1
0
ファイル: Bank.xaml.cs プロジェクト: Disaytid/Computer-Era
        public void ProcessingServices(GameEvent @event)
        {
            string[]            keys    = @event.Name.Split(new char[] { ':' });
            List <PlayerTariff> tariffs = GameEnvironment.Services.PlayerTariffs.Where(t => t.Service.UId.ToString() == keys[0] & t.UId.ToString() == keys[1] & t.Amount.ToString() == keys[2]).ToList();

            if (tariffs.Count == 1)
            {
                PlayerTariff tariff = tariffs[0];
                if (tariff.Service.Type == TransactionType.TopUp)
                {
                    tariff.Currency.TopUp("Выплата по услуге \"" + tariff.Service.Name + "\" (" + tariff.Name + ")", Properties.Resources.BankName, GameEnvironment.GameEvents.GameTimer.DateAndTime, (tariff.Amount * tariff.Coefficient / 100));
                    if (DateTime.Compare(GetDateByPeriod(tariff.StartDateOfService, tariff.TermUnit, tariff.Term), @event.ResponseTime) <= 0)
                    {
                        GameEnvironment.GameEvents.Events.Remove(@event);
                        GameEnvironment.Services.PlayerTariffs.Remove(tariff);
                        tariff.Currency.TopUp("Возврат средств в связи с истечением периода оказания услуги \"" + tariff.Service.Name + "\" (" + tariff.Name + ")", Properties.Resources.BankName, GameEnvironment.GameEvents.GameTimer.DateAndTime, tariff.Amount);
                    }
                }
                else if (tariff.Service.Type == TransactionType.Withdraw)
                {
                    int per_s = GetNumberOfPeriods(tariff.Periodicity, tariff.PeriodicityValue, tariff.StartDateOfService, GetDateByPeriod(tariff.StartDateOfService, tariff.TermUnit, tariff.Term));
                    if (!tariff.Currency.Withdraw("Взыскание по услуге\"" + tariff.Service.Name + "\" (" + tariff.Name + ")", Properties.Resources.BankName, GameEnvironment.GameEvents.GameTimer.DateAndTime, (tariff.Amount + (tariff.Amount * tariff.Coefficient / 100) * tariff.Term) / per_s))
                    {
                        if (tariff.PropertyPledged != null)
                        {
                            if (tariff.PropertyPledged is House)
                            {
                                GameEnvironment.Services.PlayerTariffs.Remove(GameEnvironment.Player.House.PlayerCommunalPayments);
                                GameEnvironment.Player.House = null;
                                GameEnvironment.Services.PlayerTariffs.Remove(tariff);
                                GameEnvironment.GameEvents.Events.Remove(@event);
                                GameEnvironment.Messages.NewMessage("Банк", "У вас изъяли недвижимость в связи с отсутствием средств для выплаты задолженности!", GameMessages.Icon.Info);
                            }
                        }
                        else
                        {
                            GameEnvironment.Scenario.GameOver("Нет денег для выплаты по услуге \"" + tariff.Service.Name + "\" тарифный план \"" + tariff.Name + "\"");
                        }
                    } //ВЫЗОВ СОБЫТИЯ GAME_OVER если не хватает денег (Игрок банкрот), исключение если есть залог
                    if (DateTime.Compare(GetDateByPeriod(tariff.StartDateOfService, tariff.TermUnit, tariff.Term), @event.ResponseTime) <= 0)
                    {
                        if (tariff.PropertyPledged != null)
                        {
                            if (tariff.PropertyPledged is House)
                            {
                                GameEnvironment.Player.House.IsPurchasedOnCredit = false;
                                GameEnvironment.Player.House.IsPurchased         = true;
                            }
                        }
                        GameEnvironment.GameEvents.Events.Remove(@event);
                        GameEnvironment.Services.PlayerTariffs.Remove(tariff);
                    }
                }
            }
            else
            {
                GameMessageBox.Show("Обработка выплат и взысканий", "Что-то пошло не так, тариф не найден!", GameMessageBox.MessageBoxType.Error);
            }
        }
コード例 #2
0
        private void Accept_Click(object sender, RoutedEventArgs e)
        {
            if (bank == null)
            {
                return;
            }

            if (bank.ServiceType.SelectedItem == null)
            {
                SellerText.Text = "Уважаемый не балуйтесь, выберите уже тип услуги!"; return;
            }
            if (bank.ServiceTariff.SelectedItem == null)
            {
                SellerText.Text = "Уважаемый не балуйтесь, тариф сам себя не выберет!"; return;
            }

            Service service = (Service)bank.ServiceType.SelectedItem;
            Tariff  tariff  = (Tariff)bank.ServiceTariff.SelectedItem;

            if (double.TryParse(bank.Sum.Text, out double sum))
            {
                if (tariff.MinSum != 0 & sum < tariff.MinSum || tariff.MaxSum != 0 & sum > tariff.MaxSum)
                {
                    SellerText.Text = "Разве не видно что вы не вкладываетесь в рамки тарифа?"; return;
                }
                double sum_tarrifs = 0;
                foreach (PlayerTariff p_tariff in GameEnvironment.Services.PlayerTariffs)
                {
                    if (p_tariff.Service.UId == service.UId)
                    {
                        sum_tarrifs += p_tariff.Amount;
                    }
                }

                if (service.Type == TransactionType.Withdraw)
                {
                    if (service.TotalMaxDebt != 0 & service.TotalMaxDebt < ((sum_tarrifs + sum) / tariff.Currency.Course))
                    {
                        SellerText.Text = "Уважаемый, введенная вами сумма превышает максимальную сумму по данному типу услуги на: " + ((sum_tarrifs + sum) - (service.TotalMaxDebt * tariff.Currency.Course)) + " " + tariff.Currency.Abbreviation; return;
                    }
                }
                PlayerTariff playerTariff = new PlayerTariff(tariff.UId, tariff.Name, tariff.Currency, tariff.Coefficient,
                                                             tariff.MinSum, tariff.MinSum, tariff.Periodicity,
                                                             tariff.PeriodicityValue, tariff.TermUnit, tariff.MinTerm,
                                                             tariff.MaxTerm, service, sum,
                                                             Convert.ToInt32(bank.TariffPeriod.Value),
                                                             GameEnvironment.GameEvents.GameTimer.DateAndTime, house, tariff.SpecialOffer);
                int          uid = GameEnvironment.Services.AllServices.Count + 1; //Возможно прийдеться поменять
                PlayerTariff playerCommunalTariff = new PlayerTariff(uid, house.Name, GameEnvironment.Money.PlayerCurrency[0], 0, house.Price, house.Price, Periodicity.Month, 1, Periodicity.Month, 1, 1, communal_service, house.CommunalPayments * GameEnvironment.Money.PlayerCurrency[0].Course, 1, GameEnvironment.GameEvents.GameTimer.DateAndTime);
                GameEnvironment.Services.PlayerTariffs.Add(playerCommunalTariff);
                GameEnvironment.Services.PlayerTariffs.Add(playerTariff);

                GameEnvironment.Player.House = new PlayerHouse(house.UId, house.Name, house.Area, house.StorageSize, house.Rent, house.Price, house.CommunalPayments, house.Location, house.Distance, house.IsPurchase, house.IsRent, house.IsCreditPurchase, house.Image, playerCommunalTariff, false, false, true, playerTariff);
                GameEnvironment.GameEvents.Events.Add(new GameEvent(service.UId + ":" + tariff.UId + ":" + sum,
                                                                    GameEnvironment.GameEvents.GetDateTimeFromPeriodicity(GameEnvironment.GameEvents.GameTimer.DateAndTime, tariff.Periodicity, tariff.PeriodicityValue),
                                                                    tariff.Periodicity, tariff.PeriodicityValue, bank.ProcessingServices, true));
                DateTime date = GameEnvironment.GameEvents.GameTimer.DateAndTime; date = new DateTime(date.Year, date.Month, 15, date.Hour, date.Minute, date.Second);
                GameEnvironment.GameEvents.Events.Add(new GameEvent(communal_service.UId + ":" + playerCommunalTariff.UId + ":" + (house.CommunalPayments * playerCommunalTariff.Currency.Course),
                                                                    GameEnvironment.GameEvents.GetDateTimeFromPeriodicity(date, playerCommunalTariff.Periodicity, playerCommunalTariff.PeriodicityValue),
                                                                    playerCommunalTariff.Periodicity, playerCommunalTariff.PeriodicityValue, CommunalPayment, true));
                SellerText.Text = "Благодарим за покупку, с Вами приятно иметь дело!";
                GameEnvironment.Messages.NewMessage("Агенство недвижимости", "Вы купили: " + house.Name + ". Поздравляем Вас с покупкой!", GameMessages.Icon.Info);

                RentPanel.Visibility   = Visibility.Visible;
                CreditPanel.Visibility = Visibility.Hidden;
                CreditPanel.Children.Clear();
            }
        }
コード例 #3
0
        private void RentButton_Click(object sender, RoutedEventArgs e)
        {
            Button button = sender as Button;

            if (!(button.Tag is House))
            {
                return;
            }
            House house = button.Tag as House;

            if (GameEnvironment.Player.House != null)
            {
                if (GameEnvironment.Player.House.IsRent == true & GameEnvironment.Player.House.IsRentedOut & house.UId == GameEnvironment.Player.House.UId)
                {
                    _ = GameMessageBox.Show("Аренда", "Вы уже арендовали данное жилье", GameMessageBox.MessageBoxType.Warning); return;
                }
                if (GameEnvironment.Player.House.IsPurchased)
                {
                    if (GameMessageBox.Show("Аренда", "У вас куплено жилье, вы действительно хотите его продать?", GameMessageBox.MessageBoxType.ConfirmationWithYesNo) == MessageBoxResult.No)
                    {
                        return;
                    }
                }
                if (GameEnvironment.Player.House.IsPurchasedOnCredit)
                {
                    _ = GameMessageBox.Show("Аренда", "Нельзя арендовать если есть купленное в кредит жилье!", GameMessageBox.MessageBoxType.Information); return;
                }
            }

            Service service          = null;
            Service communal_service = null;

            for (int i = 0; i <= GameEnvironment.Services.AllServices.Count - 1; i++)
            {
                if (GameEnvironment.Services.AllServices[i].SystemName == "rent")
                {
                    service = GameEnvironment.Services.AllServices[i];
                }
                else if (GameEnvironment.Services.AllServices[i].SystemName == "communal_payments")
                {
                    communal_service = GameEnvironment.Services.AllServices[i];
                }
                if (service != null && communal_service != null)
                {
                    break;
                }
            }
            if (service == null)
            {
                GameMessageBox.Show("Аренда", "Не найдена услуга аренды, убедитесь в целостности базы данных!", GameMessageBox.MessageBoxType.Error); return;
            }
            if (communal_service == null)
            {
                GameMessageBox.Show("Аренда", "Не найдена услуга коммунальных платежей, убедитесь в целостности базы данных!", GameMessageBox.MessageBoxType.Error); return;
            }
            PropertyForSale();

            int          uid                  = GameEnvironment.Services.AllServices.Count + 1; //Возможно прийдеться поменять
            PlayerTariff playerTariff         = new PlayerTariff(uid, house.Name, GameEnvironment.Money.PlayerCurrency[0], 0, house.Rent, house.Rent, Periodicity.Month, 1, Periodicity.Month, 1, 1, service, house.Rent * GameEnvironment.Money.PlayerCurrency[0].Course, 1, GameEnvironment.GameEvents.GameTimer.DateAndTime);
            PlayerTariff playerCommunalTariff = new PlayerTariff(uid + 1, house.Name, GameEnvironment.Money.PlayerCurrency[0], 0, house.Rent, house.Rent, Periodicity.Month, 1, Periodicity.Month, 1, 1, communal_service, house.CommunalPayments * GameEnvironment.Money.PlayerCurrency[0].Course, 1, GameEnvironment.GameEvents.GameTimer.DateAndTime);

            GameEnvironment.Services.PlayerTariffs.Add(playerTariff);
            GameEnvironment.Services.PlayerTariffs.Add(playerCommunalTariff);
            GameEnvironment.Player.House = new PlayerHouse(house.UId, house.Name, house.Area, house.StorageSize, house.Rent, house.Price, house.CommunalPayments, house.Location, house.Distance, house.IsPurchase, house.IsRent, house.IsCreditPurchase, house.Image, playerCommunalTariff, true, false, false, playerTariff);

            GameEnvironment.GameEvents.Events.Add(new GameEvent(service.UId + ":" + playerTariff.UId + ":" + (house.Rent * playerTariff.Currency.Course),
                                                                GameEnvironment.GameEvents.GetDateTimeFromPeriodicity(GameEnvironment.GameEvents.GameTimer.DateAndTime, playerTariff.Periodicity, playerTariff.PeriodicityValue),
                                                                playerTariff.Periodicity, playerTariff.PeriodicityValue, RentalPayment, true));
            DateTime date = GameEnvironment.GameEvents.GameTimer.DateAndTime; date = new DateTime(date.Year, date.Month, 15, date.Hour, date.Minute, date.Second);

            GameEnvironment.GameEvents.Events.Add(new GameEvent(communal_service.UId + ":" + playerCommunalTariff.UId + ":" + (house.CommunalPayments * playerCommunalTariff.Currency.Course),
                                                                GameEnvironment.GameEvents.GetDateTimeFromPeriodicity(date, playerCommunalTariff.Periodicity, playerCommunalTariff.PeriodicityValue),
                                                                playerCommunalTariff.Periodicity, playerCommunalTariff.PeriodicityValue, CommunalPayment, true));
            GameEnvironment.Messages.NewMessage("Агенство недвижимости", "Вы арендовали: " + house.Name + ". Поздравляем Вас!", GameMessages.Icon.Info);
        }
コード例 #4
0
        private void BuyButton_Click(object sender, RoutedEventArgs e)
        {
            Button button = sender as Button;

            if (!(button.Tag is House))
            {
                return;
            }
            House house = button.Tag as House;

            if (GameEnvironment.Player.House != null)
            {
                if (GameEnvironment.Player.House.IsRent == true & GameEnvironment.Player.House.IsRentedOut & house.UId == GameEnvironment.Player.House.UId)
                {
                    if (GameMessageBox.Show("Покупка", "Данное жилье арендовано вами, вы действительно хотите расторгнуть аренду?", GameMessageBox.MessageBoxType.ConfirmationWithYesNo) == MessageBoxResult.No)
                    {
                        return;
                    }
                }
                if ((GameEnvironment.Player.House.IsPurchased || GameEnvironment.Player.House.IsPurchasedOnCredit) && house.UId == GameEnvironment.Player.House.UId)
                {
                    _ = GameMessageBox.Show("Покупка", "У вас уже куплено данное жилье!", GameMessageBox.MessageBoxType.Information); return;
                }
                if (GameEnvironment.Player.House.IsPurchasedOnCredit && house.UId != GameEnvironment.Player.House.UId)
                {
                    _ = GameMessageBox.Show("Покупка", "Нельзя купить новое жилье пока не погасите кредит за текущее!", GameMessageBox.MessageBoxType.Information); return;
                }
                if (GameEnvironment.Player.House.IsPurchased && house.UId != GameEnvironment.Player.House.UId)
                {
                    if (GameMessageBox.Show("Покупка", "У вас есть другое купленно жилье, вы действительно хотите его продать?", GameMessageBox.MessageBoxType.ConfirmationWithYesNo) == MessageBoxResult.No)
                    {
                        return;
                    }
                }
            }

            Service communal_service = null;

            for (int i = 0; i <= GameEnvironment.Services.AllServices.Count - 1; i++)
            {
                if (GameEnvironment.Services.AllServices[i].SystemName == "communal_payments")
                {
                    communal_service = GameEnvironment.Services.AllServices[i]; break;
                }
            }
            if (communal_service == null)
            {
                GameMessageBox.Show("Покупка", "Не найдена услуга коммунальных платежей, убедитесь в целостности базы данных!", GameMessageBox.MessageBoxType.Error); return;
            }
            PropertyForSale();

            double price = house.Price * GameEnvironment.Money.PlayerCurrency[0].Course;

            if (GameEnvironment.Money.PlayerCurrency[0].Withdraw("Покупка " + house.Name, "Агенство недвижимости \"Крыша над головой\"", GameEnvironment.GameEvents.GameTimer.DateAndTime, price))
            {
                CoinCount.Content = GameEnvironment.Money.PlayerCurrency[0].Count.ToString("N3") + " " + GameEnvironment.Money.PlayerCurrency[0].Abbreviation;
                int          uid = GameEnvironment.Services.AllServices.Count + 1; //Возможно прийдеться поменять
                PlayerTariff playerCommunalTariff = new PlayerTariff(uid + 1, house.Name, GameEnvironment.Money.PlayerCurrency[0], 0, house.Rent, house.Rent, Periodicity.Month, 1, Periodicity.Month, 1, 1, communal_service, house.CommunalPayments * GameEnvironment.Money.PlayerCurrency[0].Course, 1, GameEnvironment.GameEvents.GameTimer.DateAndTime);
                GameEnvironment.Services.PlayerTariffs.Add(playerCommunalTariff);

                DateTime date = GameEnvironment.GameEvents.GameTimer.DateAndTime; date = new DateTime(date.Year, date.Month, 15, date.Hour, date.Minute, date.Second);
                GameEnvironment.GameEvents.Events.Add(new GameEvent(communal_service.UId + ":" + playerCommunalTariff.UId + ":" + (house.CommunalPayments * playerCommunalTariff.Currency.Course),
                                                                    GameEnvironment.GameEvents.GetDateTimeFromPeriodicity(date, playerCommunalTariff.Periodicity, playerCommunalTariff.PeriodicityValue),
                                                                    playerCommunalTariff.Periodicity, playerCommunalTariff.PeriodicityValue, CommunalPayment, true));
                GameEnvironment.Player.House = new PlayerHouse(house.UId, house.Name, house.Area, house.StorageSize, house.Rent, house.Price, house.CommunalPayments, house.Location, house.Distance, house.IsPurchase, house.IsRent, house.IsCreditPurchase, house.Image, playerCommunalTariff, false, true, false);
                SellerText.Text = "Благодарим за покупку, с Вами приятно иметь дело!";
                GameEnvironment.Messages.NewMessage("Агенство недвижимости", "Вы купили: " + house.Name + ". Поздравляем Вас с покупкой!", GameMessages.Icon.Info);
            }
            else
            {
                SellerText.Text = "К сожалению на вашем счету недостаточно средств!";
            }
        }