Exemplo n.º 1
0
    private void Start()
    {
        if (GetComponent <InteractManager>() && GetComponent <PlayerFunctions>())
        {
            inputManager = InputController.Instance;
            gameManager  = HFPS_GameManager.Instance;
            floatingItem = FloatingIconManager.Instance;
            interact     = GetComponent <InteractManager>();
            pfunc        = GetComponent <PlayerFunctions>();
            paperUI      = gameManager.PaperTextUI;
            paperText    = gameManager.PaperReadText;
        }
        else
        {
            Debug.LogError("Missing one or more scripts in " + gameObject.name);
            return;
        }

        if (examineLight)
        {
            examineLight.enabled = false;
        }

        delay              = transform.root.gameObject.GetComponentInChildren <DelayEffect>();
        PlayerCam          = ScriptManager.Instance.MainCamera;
        ArmsCam            = ScriptManager.Instance.ArmsCamera;
        DefaultMainCamMask = ScriptManager.Instance.MainCamera.cullingMask;
        DefaultArmsCamMask = ArmsCam.cullingMask;
        pickupRange        = interact.RaycastRange;
    }
Exemplo n.º 2
0
 void Start()
 {
     inputController = InputController.Instance;
     gameManager     = HFPS_GameManager.Instance;
     delay           = transform.root.GetComponentInChildren <DelayEffect>(true);
     InteractLayer   = GetComponent <InteractManager>().InteractLayer;
     RayLength       = GetComponent <InteractManager>().RaycastRange;
 }
Exemplo n.º 3
0
 private void Awake()
 {
     delay        = gameObject.transform.GetChild(0).GetChild(1).GetChild(0).GetChild(0).gameObject.GetComponent <DelayEffect>();
     interact     = GetComponent <InteractManager>();
     inputManager = GetComponent <ScriptManager>().GetScript <InputController>();
     gameManager  = GetComponent <ScriptManager>().GetScript <HFPS_GameManager>();
     pfunc        = GetComponent <PlayerFunctions>();
     playerCam    = Camera.main;
 }
Exemplo n.º 4
0
 private void Awake()
 {
     delay        = gameObject.transform.GetChild(0).GetChild(1).GetChild(0).GetChild(0).gameObject.GetComponent <DelayEffect>();
     interact     = GetComponent <InteractManager>();
     inputManager = InputController.Instance;
     gameManager  = HFPS_GameManager.Instance;
     pfunc        = GetComponent <PlayerFunctions>();
     playerCam    = ScriptManager.Instance.MainCamera;
     PickupRange  = interact.RaycastRange;
 }
Exemplo n.º 5
0
    private void Start()
    {
        if (GetComponent <ScriptManager>() && GetComponent <InteractManager>() && GetComponent <PlayerFunctions>())
        {
            inputManager = GetComponent <ScriptManager>().GetScript <InputController>();
            gameManager  = GetComponent <ScriptManager>().GetScript <HFPS_GameManager>();
            interact     = GetComponent <InteractManager>();
            pfunc        = GetComponent <PlayerFunctions>();
            paperUI      = gameManager.PaperTextUI;
            paperText    = gameManager.PaperReadText;
        }
        else
        {
            Debug.LogError("Missing one or more scripts in " + gameObject.name);
        }

        delay              = gameObject.transform.GetChild(0).GetChild(1).GetChild(0).GetChild(0).gameObject.GetComponent <DelayEffect>();
        playerCam          = Camera.main;
        ArmsCam            = GetComponent <ScriptManager>().ArmsCameraBlur.GetComponent <Camera>();
        DefaultMainCamMask = Camera.main.cullingMask;
        DefaultArmsCamMask = ArmsCam.cullingMask;
    }
Exemplo n.º 6
0
        public override async Task ExecuteAsync(MainRepository repo, Character character, IEnumerable <CharacterCommandParameter> options, CommandSystemData game)
        {
            var isRegularly = options.Any(p => p.Type == CharacterCommandParameterTypes.Regularly);

            var itemTypeOptional = options.FirstOrDefault(p => p.Type == 1);

            if (itemTypeOptional == null || itemTypeOptional.NumberValue == null)
            {
                await game.CharacterLogAsync("アイテム生産のパラメータが不正です。<emerge>管理者にお問い合わせください</emerge>");

                return;
            }
            var itemType = (CharacterItemType)itemTypeOptional.NumberValue;

            var delays = await repo.DelayEffect.GetAllAsync();

            if (delays.Any(d => d.CharacterId == character.Id && d.Type == DelayEffectType.GenerateItem))
            {
                if (!isRegularly)
                {
                    await game.CharacterLogAsync($"アイテム生産しようとしましたが、複数のアイテムを同時に生産することはできません");
                }
                return;
            }

            var infoOptional = CharacterItemInfoes.Get(itemType);

            if (!infoOptional.HasData)
            {
                await game.CharacterLogAsync($"ID: {(short)itemType} のアイテムは存在しません。<emerge>管理者にお問い合わせください</emerge>");

                return;
            }
            var info = infoOptional.Data;

            var generateInfo = GenerateItemInfo.GetInfo(character, itemType);

            if (generateInfo == null)
            {
                await game.CharacterLogAsync("アイテム生産の情報が不正です。<emerge>管理者にお問い合わせください</emerge>");

                return;
            }

            var money = info.IsResource ? info.MoneyPerResource * info.DefaultResource / 16 : info.Money / 16;

            if (character.Money < money)
            {
                await game.CharacterLogAsync("アイテム生産しようとしましたが、金が足りません。<num>" + money + "</num> 必要です");

                return;
            }

            var townOptional = await repo.Town.GetByIdAsync(character.TownId);

            if (townOptional.HasData)
            {
                var country = await repo.Country.GetByIdAsync(character.CountryId);

                var town = townOptional.Data;
                if (town.CountryId != character.CountryId && country.HasData && !country.Data.HasOverthrown)
                {
                    await game.CharacterLogAsync($"<town>{town.Name}</town> でアイテム生産しようとしましたが、自国の都市ではありません");

                    return;
                }

                character.Money -= money;
                var delay = new DelayEffect
                {
                    CharacterId        = character.Id,
                    CountryId          = character.CountryId,
                    AppearGameDateTime = game.GameDateTime,
                    Type     = DelayEffectType.GenerateItem,
                    TypeData = (int)itemType,
                };
                await repo.DelayEffect.AddAsync(delay);

                await repo.SaveChangesAsync();

                await StatusStreaming.Default.SendCharacterAsync(ApiData.From(delay), character.Id);

                var finish = GameDateTime.FromInt(game.GameDateTime.ToInt() + generateInfo.Length);
                generateInfo.AddExAttribute(character);
                if (!isRegularly)
                {
                    character.Contribution += generateInfo.Contribution;
                    character.SkillPoint++;
                }
                await game.CharacterLogAsync($"<town>{town.Name}</town> で <num>{money}</num> を投し、{info.Name} の生産を開始しました。結果は <num>{finish.Year}</num> 年 <num>{finish.Month}</num> 月に来ます");
            }
            else
            {
                await game.CharacterLogAsync("ID:" + character.TownId + " の都市は存在しません。<emerge>管理者にお問い合わせください</emerge>");
            }
        }
Exemplo n.º 7
0
        public static async Task <bool> ResultAsync(MainRepository repo, SystemData system, DelayEffect delay, Func <uint, string, Task> logAsync)
        {
            var chara = await repo.Character.GetByIdAsync(delay.CharacterId);

            var type = (CharacterItemType)delay.TypeData;

            if (!chara.HasData)
            {
                return(false);
            }
            if (chara.Data.HasRemoved)
            {
                return(true);
            }

            var generateInfo = GenerateItemInfo.GetInfo(chara.Data, type);

            if (generateInfo == null)
            {
                return(false);
            }

            if (delay.IntAppearGameDateTime + generateInfo.Length <= system.IntGameDateTime)
            {
                var info = CharacterItemInfoes.Get(type);
                if (info.HasData)
                {
                    var item = new CharacterItem
                    {
                        Type        = type,
                        Status      = CharacterItemStatus.CharacterPending,
                        CharacterId = chara.Data.Id,
                        IntLastStatusChangedGameDate = system.IntGameDateTime,
                    };

                    if (info.Data.IsResource)
                    {
                        item.Resource = (ushort)(info.Data.DefaultResource + RandomService.Next((int)(generateInfo.ResourceAttribute(chara.Data) * 1.4f)));
                    }

                    await ItemService.GenerateItemAndSaveAsync(repo, item);

                    await ItemService.SetCharacterPendingAsync(repo, item, chara.Data);

                    if (info.Data.IsResource)
                    {
                        await logAsync(chara.Data.Id, $"アイテム {info.Data.Name} を生産しました。資源量: <num>{item.Resource}</num>");
                    }
                    else
                    {
                        await logAsync(chara.Data.Id, $"アイテム {info.Data.Name} を生産しました");
                    }

                    return(true);
                }
            }

            return(false);
        }
Exemplo n.º 8
0
        private void SetupTable(Table.Table Table, Dictionary <int, TableConfig> TableConfigDict, Dictionary <int, Dictionary <int, IToy> > ToyAssignments)
        {
            foreach (KeyValuePair <int, TableConfig> KV in TableConfigDict)
            {
                int LedWizNr = KV.Key;
                if (ToyAssignments.ContainsKey(LedWizNr))
                {
                    TableConfig TC = KV.Value;


                    foreach (TableConfigColumn TCC in TC.Columns)
                    {
                        if (ToyAssignments[LedWizNr].ContainsKey(TCC.Number))
                        {
                            IToy Toy = ToyAssignments[LedWizNr][TCC.Number];

                            int SettingNumber = 0;
                            foreach (TableConfigSetting TCS in TCC)
                            {
                                SettingNumber++;
                                IEffect Effect = null;

                                int Layer = (TCS.Layer.HasValue ? TCS.Layer.Value : SettingNumber);

                                if (Toy is IRGBAToy || Toy is IAnalogAlphaToy)
                                {
                                    if (Toy is IRGBAToy)
                                    {
                                        RGBAColor ActiveColor = null;
                                        if (TCS.ColorConfig != null)
                                        {
                                            ActiveColor = TCS.ColorConfig.GetCabinetColor().GetRGBAColor();
                                        }
                                        else
                                        {
                                            if (!TCS.ColorName.IsNullOrWhiteSpace())
                                            {
                                                if (TCS.ColorName.StartsWith("#"))
                                                {
                                                    ActiveColor = new RGBAColor();
                                                    if (!ActiveColor.SetColor(TCS.ColorName))
                                                    {
                                                        ActiveColor = null;
                                                        Log.Warning("Skipped setting {0} in column {1} for LedWizEqivalent number {2} since {3} is not a valid color specification.".Build(new object[] { SettingNumber, TCC.Number, LedWizNr, TCS.ColorName }));
                                                    }
                                                }
                                                else
                                                {
                                                    Log.Warning("Skipped setting {0} in column {1} for LedWizEqivalent number {2} since {3} is not a valid color specification.".Build(new object[] { SettingNumber, TCC.Number, LedWizNr, TCS.ColorName }));
                                                }
                                            }
                                            else
                                            {
                                                Log.Warning("Skipped setting {0} in column {1} for LedWizEqivalent number {2} since it does not contain a color specification.".Build(SettingNumber, TCC.Number, LedWizNr));
                                            }
                                        }
                                        if (ActiveColor != null)
                                        {
                                            if (TCS.FadingDownDurationMs > 0 || TCS.FadingUpDurationMs > 0)
                                            {
                                                //Must fade, use fadeeffect
                                                Effect = new RGBAFadeOnOffEffect()
                                                {
                                                    ToyName = Toy.Name, Layer = Layer, FadeActiveDurationMs = TCS.FadingUpDurationMs, FadeInactiveDurationMs = TCS.FadingDownDurationMs, RetriggerBehaviour = RetriggerBehaviourEnum.IgnoreRetrigger, FadeMode = FadeModeEnum.CurrentToDefined, ActiveColor = ActiveColor, InactiveColor = new RGBAColor(0, 0, 0, 0)
                                                };
                                            }
                                            else
                                            {
                                                //No fadinging, set color directly
                                                Effect = new RGBAOnOffEffect()
                                                {
                                                    ToyName = Toy.Name, Layer = Layer, ActiveColor = ActiveColor, InactiveColor = new RGBAColor(0, 0, 0, 0)
                                                };
                                            }
                                        }
                                    }
                                    else if (Toy is IAnalogAlphaToy)
                                    {
                                        AnalogAlphaValue AAV = new AnalogAlphaValue(((int)((double)TCS.Intensity * 5.3125)).Limit(0, 255));
                                        if (TCS.FadingDownDurationMs > 0 || TCS.FadingUpDurationMs > 0)
                                        {
                                            Effect = new AnalogToyFadeOnOffEffect()
                                            {
                                                ToyName = Toy.Name, Layer = Layer, FadeActiveDurationMs = TCS.FadingUpDurationMs, FadeInactiveDurationMs = TCS.FadingDownDurationMs, RetriggerBehaviour = RetriggerBehaviourEnum.IgnoreRetrigger, FadeMode = FadeModeEnum.CurrentToDefined, ActiveValue = AAV, InactiveValue = new AnalogAlphaValue(0, 0)
                                            };
                                        }
                                        else
                                        {
                                            Effect = new AnalogToyOnOffEffect()
                                            {
                                                ToyName = Toy.Name, Layer = Layer, ActiveValue = AAV, InactiveValue = new AnalogAlphaValue(0, 0)
                                            };
                                        }
                                    }
                                    if (Effect != null)
                                    {
                                        Effect.Name = "Ledwiz {0:00} Column {1:00} Setting {2:00} {3}".Build(new object[] { LedWizNr, TCC.Number, SettingNumber, Effect.GetType().Name });
                                        MakeEffectNameUnique(Effect, Table);

                                        Table.Effects.Add(Effect);

                                        if (TCS.Blink != 0)
                                        {
                                            Effect = new BlinkEffect()
                                            {
                                                Name = "Ledwiz {0:00} Column {1:00} Setting {2:00} BlinkEffect".Build(LedWizNr, TCC.Number, SettingNumber), TargetEffectName = Effect.Name, DurationActiveMs = TCS.BlinkIntervalMs, DurationInactiveMs = TCS.BlinkIntervalMs
                                            };
                                            MakeEffectNameUnique(Effect, Table);
                                            Table.Effects.Add(Effect);
                                        }

                                        if (TCS.DurationMs > 0 || TCS.Blink > 0)
                                        {
                                            int Duration = (TCS.DurationMs > 0 ? TCS.DurationMs : (TCS.Blink * 2 - 1) * TCS.BlinkIntervalMs + 1);
                                            Effect = new DurationEffect()
                                            {
                                                Name = "Ledwiz {0:00} Column {1:00} Setting {2:00} DurationEffect".Build(LedWizNr, TCC.Number, SettingNumber), TargetEffectName = Effect.Name, DurationMs = Duration, RetriggerBehaviour = RetriggerBehaviourEnum.RestartEffect
                                            };
                                            MakeEffectNameUnique(Effect, Table);
                                            Table.Effects.Add(Effect);
                                        }
                                        if (TCS.MinDurationMs > 0 || (Toy is IRGBAToy && EffectRGBMinDurationMs > 0) || (!(Toy is IRGBAToy) && EffectMinDurationMs > 0))
                                        {
                                            string N   = (TCS.MinDurationMs > 0 ? "MinDuratonEffect" : "DefaultMinDurationEffect");
                                            int    Min = (TCS.MinDurationMs > 0 ? TCS.MinDurationMs : (Toy is IRGBAToy ? EffectRGBMinDurationMs : EffectMinDurationMs));
                                            Effect = new MinDurationEffect()
                                            {
                                                Name = "Ledwiz {0:00} Column {1:00} Setting {2:00} {3}".Build(new object[] { LedWizNr, TCC.Number, SettingNumber, N }), TargetEffectName = Effect.Name, MinDurationMs = Min
                                            };
                                            MakeEffectNameUnique(Effect, Table);
                                            Table.Effects.Add(Effect);
                                        }


                                        if (TCS.WaitDurationMs > 0)
                                        {
                                            Effect = new DelayEffect()
                                            {
                                                Name = "Ledwiz {0:00} Column {1:00} Setting {2:00} DelayEffect".Build(LedWizNr, TCC.Number, SettingNumber), TargetEffectName = Effect.Name, DelayMs = TCS.WaitDurationMs
                                            };
                                            MakeEffectNameUnique(Effect, Table);
                                            Table.Effects.Add(Effect);
                                        }

                                        switch (TCS.OutputControl)
                                        {
                                        case OutputControlEnum.FixedOn:
                                            Table.AssignedStaticEffects.Add(new AssignedEffect(Effect.Name));
                                            break;

                                        case OutputControlEnum.Controlled:
                                            if (!Table.TableElements.Contains(TCS.TableElementType, TCS.TableElementNumber))
                                            {
                                                Table.TableElements.UpdateState(TCS.TableElementType, TCS.TableElementNumber, 0);
                                            }
                                            Table.TableElements[TCS.TableElementType, TCS.TableElementNumber].AssignedEffects.Add(new AssignedEffect(Effect.Name));
                                            break;

                                        case OutputControlEnum.FixedOff:
                                        default:
                                            break;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
Exemplo n.º 9
0
        private void applyEffectButton_Click(object sender, EventArgs e)
        {
            AudioEffect effect;

            var fs = _signal.SamplingRate;

            var winSize = int.Parse(winSizeTextBox.Text);
            var hopSize = int.Parse(hopSizeTextBox.Text);
            var tsm     = (TsmAlgorithm)tsmComboBox.SelectedIndex;

            var shift = float.Parse(pitchShiftTextBox.Text);

            if (tremoloRadioButton.Checked)
            {
                var freq  = float.Parse(tremoloFrequencyTextBox.Text);
                var index = float.Parse(tremoloIndexTextBox.Text);
                effect = new TremoloEffect(fs, freq, index);
            }
            else if (overdriveRadioButton.Checked)
            {
                var gain = float.Parse(distortionGainTextBox.Text);
                effect = new OverdriveEffect(gain);
            }
            else if (distortionRadioButton.Checked)
            {
                var gain = float.Parse(distortionGainTextBox.Text);
                effect = new DistortionEffect(gain);
            }
            else if (tubeDistortionRadioButton.Checked)
            {
                var gain = float.Parse(distortionGainTextBox.Text);
                var mix  = float.Parse(wetTextBox.Text);
                var dist = float.Parse(distTextBox.Text);
                var q    = float.Parse(qTextBox.Text);
                effect = new TubeDistortionEffect(gain, mix, q, dist);
            }
            else if (echoRadioButton.Checked)
            {
                var delay = float.Parse(echoDelayTextBox.Text);
                var decay = float.Parse(echoDecayTextBox.Text);
                effect = new EchoEffect(fs, delay, decay);
            }
            else if (delayRadioButton.Checked)
            {
                var delay = float.Parse(echoDelayTextBox.Text);
                var decay = float.Parse(echoDecayTextBox.Text);
                effect = new DelayEffect(fs, delay, decay);
            }
            else if (wahwahRadioButton.Checked)
            {
                var lfoFrequency = float.Parse(lfoFreqTextBox.Text);
                var minFrequency = float.Parse(minFreqTextBox.Text);
                var maxFrequency = float.Parse(maxFreqTextBox.Text);
                var q            = float.Parse(lfoQTextBox.Text);
                //effect = new WahwahEffect(fs, lfoFrequency, minFrequency, maxFrequency, q);
                effect = new AutowahEffect(fs, minFrequency, maxFrequency, q);
            }
            else if (flangerRadioButton.Checked)
            {
                var lfoFrequency = float.Parse(lfoFreqTextBox.Text);
                var maxDelay     = float.Parse(maxDelayTextBox.Text);
                effect = new FlangerEffect(fs, maxDelay, lfoFrequency);
            }
            else if (pitchShiftRadioButton.Checked)
            {
                effect = pitchShiftCheckBox.Checked ? new PitchShiftEffect(shift, winSize, hopSize, tsm) : null;
                //effect = pitchShiftCheckBox.Checked ? new WhisperEffect(hopSize, winSize) : null;
                //effect = new MorphEffect(hopSize, winSize);
            }
            else
            {
                var lfoFrequency = float.Parse(lfoFreqTextBox.Text);
                var minFrequency = float.Parse(minFreqTextBox.Text);
                var maxFrequency = float.Parse(maxFreqTextBox.Text);
                var q            = float.Parse(lfoQTextBox.Text);

                var lfo = new SawtoothBuilder()
                          .SetParameter("freq", lfoFrequency)
                          .SetParameter("min", minFrequency)
                          .SetParameter("max", maxFrequency)
                          .SampledAt(_signal.SamplingRate);

                effect = new PhaserEffect(fs, lfo, q);
            }

            if (effect != null)
            {
                effect.Wet = float.Parse(wetTextBox.Text);
                effect.Dry = float.Parse(dryTextBox.Text);

                _filteredSignal = effect.ApplyTo(_signal, FilteringMethod.Auto);

                //DiscreteSignal morph;
                //using (var stream = new FileStream(@"D:\Docs\Research\DATABASE\Dictor1\wav\gtr16khz.wav", FileMode.Open))
                //{
                //    var waveFile = new WaveFile(stream);
                //    morph = waveFile[Channels.Average];
                //}

                //_filteredSignal = ((MorphEffect)effect).ApplyTo(_signal, morph);
            }
            else
            {
                _filteredSignal = Operation.TimeStretch(_signal, shift, tsm);
                //Operation.TimeStretch(_signal, shift, winSize, hopSize, tsm);
            }

            signalAfterFilteringPanel.Signal           = _filteredSignal;
            spectrogramAfterFilteringPanel.Spectrogram = _stft.Spectrogram(_filteredSignal.Samples);
        }
Exemplo n.º 10
0
 void Start()
 {
     inputManager = GetComponent <ScriptManager>().GetScript <InputController>();
     gameManager  = GetComponent <ScriptManager>().GetScript <HFPS_GameManager>();
     delay        = gameObject.transform.GetChild(0).GetChild(1).GetChild(0).GetChild(0).gameObject.GetComponent <DelayEffect> ();
 }
Exemplo n.º 11
0
        private void applyEffectButton_Click(object sender, EventArgs e)
        {
            IFilter effect;

            if (tremoloRadioButton.Checked)
            {
                var freq  = float.Parse(tremoloFrequencyTextBox.Text);
                var index = float.Parse(tremoloIndexTextBox.Text);
                effect = new TremoloEffect(freq, index);
            }
            else if (overdriveRadioButton.Checked)
            {
                effect = new OverdriveEffect();
            }
            else if (distortionRadioButton.Checked)
            {
                var gain = float.Parse(distortionGainTextBox.Text);
                var mix  = float.Parse(distortionMixTextBox.Text);
                effect = new DistortionEffect(gain, mix);
            }
            else if (tubeDistortionRadioButton.Checked)
            {
                var gain = float.Parse(distortionGainTextBox.Text);
                var mix  = float.Parse(distortionMixTextBox.Text);
                var dist = float.Parse(distTextBox.Text);
                var q    = float.Parse(qTextBox.Text);
                effect = new TubeDistortionEffect(gain, mix, q, dist);
            }
            else if (echoRadioButton.Checked)
            {
                var delay = float.Parse(echoDelayTextBox.Text);
                var decay = float.Parse(echoDecayTextBox.Text);
                effect = new EchoEffect(delay, decay);
            }
            else if (delayRadioButton.Checked)
            {
                var delay = float.Parse(echoDelayTextBox.Text);
                var decay = float.Parse(echoDecayTextBox.Text);
                effect = new DelayEffect(delay, decay);
            }
            else if (wahwahRadioButton.Checked)
            {
                var lfoFrequency = float.Parse(lfoFreqTextBox.Text);
                var minFrequency = float.Parse(minFreqTextBox.Text);
                var maxFrequency = float.Parse(maxFreqTextBox.Text);
                var q            = float.Parse(lfoQTextBox.Text);
                effect = new WahwahEffect(lfoFrequency, minFrequency, maxFrequency, q);
            }
            else if (pitchShiftRadioButton.Checked)
            {
                var shift = float.Parse(pitchShiftTextBox.Text);
                effect = pitchShiftCheckBox.Checked ? new PitchShiftEffect(shift) : null;
            }
            else
            {
                var lfoFrequency = float.Parse(lfoFreqTextBox.Text);
                var minFrequency = float.Parse(minFreqTextBox.Text);
                var maxFrequency = float.Parse(maxFreqTextBox.Text);
                var q            = float.Parse(lfoQTextBox.Text);
                effect = new PhaserEffect(lfoFrequency, minFrequency, maxFrequency, q);
            }

            _filteredSignal = effect != null?
                              effect.ApplyTo(_signal, FilteringOptions.Auto) :
                                  Operation.TimeStretch(_signal, float.Parse(pitchShiftTextBox.Text));

            signalAfterFilteringPanel.Signal           = _filteredSignal;
            spectrogramAfterFilteringPanel.Spectrogram = _stft.Spectrogram(_filteredSignal.Samples);
        }
Exemplo n.º 12
0
        public override async Task ExecuteAsync(MainRepository repo, Character character, IEnumerable <CharacterCommandParameter> options, CommandSystemData game)
        {
            var isRegularly = options.Any(p => p.Type == CharacterCommandParameterTypes.Regularly);

            var delays = await repo.DelayEffect.GetAllAsync();

            if (delays.Any(d => d.CharacterId == character.Id && d.Type == DelayEffectType.TownInvestment))
            {
                if (!isRegularly)
                {
                    await game.CharacterLogAsync($"投資しようとしましたが、複数の都市に同時に投資することはできません");
                }
                return;
            }

            var money = game.GameDateTime.Year * 200 + 10000;

            if (character.Money < money)
            {
                await game.CharacterLogAsync("投資しようとしましたが、金が足りません。<num>" + money + "</num> 必要です");

                return;
            }

            var townOptional = await repo.Town.GetByIdAsync(character.TownId);

            if (townOptional.HasData)
            {
                var country = await repo.Country.GetByIdAsync(character.CountryId);

                var town = townOptional.Data;
                if (town.CountryId != character.CountryId && country.HasData && !country.Data.HasOverthrown)
                {
                    await game.CharacterLogAsync($"<town>{town.Name}</town> で投資しようとしましたが、自国の都市ではありません");

                    return;
                }

                character.Money -= money;
                var delay = new DelayEffect
                {
                    CharacterId        = character.Id,
                    CountryId          = character.CountryId,
                    AppearGameDateTime = game.GameDateTime,
                    TownId             = town.Id,
                    Type = DelayEffectType.TownInvestment,
                };
                await repo.DelayEffect.AddAsync(delay);

                await repo.SaveChangesAsync();

                await StatusStreaming.Default.SendCharacterAsync(ApiData.From(delay), character.Id);

                character.AddIntellectEx(500);
                if (!isRegularly)
                {
                    character.Contribution += 200;
                    character.SkillPoint++;
                }
                await game.CharacterLogAsync($"<town>{town.Name}</town> に <num>{money}</num> を投資しました。結果は <num>{game.GameDateTime.Year + 3}</num> 年 <num>{game.GameDateTime.Month}</num> 月に来ます。知力Ex <num>+500</num>");
            }
            else
            {
                await game.CharacterLogAsync("ID:" + character.TownId + " の都市は存在しません。<emerge>管理者にお問い合わせください</emerge>");
            }
        }
Exemplo n.º 13
0
        public static async Task <bool> ResultAsync(MainRepository repo, SystemData system, DelayEffect delay, Func <uint, string, Task> logAsync)
        {
            if (delay.IntAppearGameDateTime + 36 <= system.IntGameDateTime)
            {
                var chara = await repo.Character.GetByIdAsync(delay.CharacterId);

                var town = await repo.Town.GetByIdAsync(delay.TownId);

                if (chara.HasData && town.HasData)
                {
                    var results = new List <string>();
                    var skills  = await repo.Character.GetSkillsAsync(chara.Data.Id);

                    var currentItems = await repo.Character.GetItemsAsync(chara.Data.Id);

                    var items = (await repo.Town.GetItemsAsync(chara.Data.TownId)).Where(i => i.Status == CharacterItemStatus.TownHidden);
                    if (RandomService.Next(0, 10) < items.Count())
                    {
                        var item = RandomService.Next(items);
                        var info = CharacterItemInfoes.Get(item.Type);
                        if (info.HasData && (info.Data.DiscoverFroms == null || info.Data.DiscoverFroms.Contains(chara.Data.From)))
                        {
                            await ItemService.SetCharacterPendingAsync(repo, item, chara.Data);

                            results.Add($"アイテム {info.Data.Name}");
                        }
                    }

                    var money = RandomService.Next(chara.Data.Intellect * 32, Math.Max(chara.Data.Intellect * 48, system.GameDateTime.Year * 650 + 10000));
                    chara.Data.Money += money;
                    results.Add($"金 <num>{money}</num>");

                    var country = await repo.Country.GetByIdAsync(chara.Data.CountryId);

                    if (country.HasData)
                    {
                        var name   = string.Empty;
                        var add    = RandomService.Next(20, 60);
                        var target = RandomService.Next(0, 5);
                        if (target == 0)
                        {
                            name = "農業";
                            town.Data.Agriculture = Math.Min(town.Data.AgricultureMax, town.Data.Agriculture + add);
                        }
                        else if (target == 1)
                        {
                            name = "商業";
                            town.Data.Commercial = Math.Min(town.Data.CommercialMax, town.Data.Commercial + add);
                        }
                        else if (target == 2)
                        {
                            name = "技術";
                            town.Data.Technology = Math.Min(town.Data.TechnologyMax, town.Data.Technology + add);
                        }
                        else if (target == 3)
                        {
                            name           = "城壁";
                            town.Data.Wall = Math.Min(town.Data.WallMax, town.Data.Wall + add);
                        }
                        else if (target == 4)
                        {
                            name = "都市施設";
                            town.Data.TownBuildingValue = Math.Min(Config.TownBuildingMax, town.Data.TownBuildingValue + add);
                        }

                        await logAsync(chara.Data.Id, $"<town>{town.Data.Name}</town> に投資し、{name} の開発に <num>+{add}</num> 貢献し、{string.Join("と", results)}を得ました");
                    }
                    else
                    {
                        await logAsync(chara.Data.Id, $"<town>{town.Data.Name}</town> に投資し、{string.Join("と", results)}を得ました");
                    }

                    return(true);
                }
            }

            return(false);
        }