// Note : we will be able to get a rules manager here
 private void CheckRights(IPlayer player)
 {
     if (player.CurrentLevel == 1)
     {
         this._defaultProvider = new WeaponProvider();
     }
     else
     {
         this._defaultProvider = new Level2WeaponProvider();
     }
 }
Esempio n. 2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="GangManager"/> class.
 /// </summary>
 /// <param name="gangProvider">Gang provider</param>
 /// <param name="gangerProvider">Ganger provider</param>
 /// <param name="territoryProvider">Territory provider</param>
 /// <param name="weaponProvider">Weapon provider</param>
 /// <param name="injuryProvider">Injury provider</param>
 /// <param name="skillProvider">Skill provider</param>
 /// <param name="diceRoller">Dice roller</param>
 public GangManager(
     IGangProvider gangProvider,
     IGangerProvider gangerProvider,
     ITerritoryProvider territoryProvider,
     IWeaponProvider weaponProvider,
     IInjuryProvider injuryProvider,
     ISkillProvider skillProvider,
     IDiceRoller diceRoller)
 {
     _gangProvider      = gangProvider ?? throw new ArgumentNullException(nameof(gangProvider));
     _gangerProvider    = gangerProvider ?? throw new ArgumentNullException(nameof(gangerProvider));
     _territoryProvider = territoryProvider ?? throw new ArgumentNullException(nameof(territoryProvider));
     _weaponProvider    = weaponProvider ?? throw new ArgumentNullException(nameof(weaponProvider));
     _injuryProvider    = injuryProvider ?? throw new ArgumentNullException(nameof(InjuryProvider));
     _skillProvider     = skillProvider ?? throw new ArgumentNullException(nameof(skillProvider));
     _diceRoller        = diceRoller ?? throw new ArgumentNullException(nameof(diceRoller));
 }
Esempio n. 3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="WeaponManager"/> class.
 /// </summary>
 /// <param name="weaponProvider">Weapon provider</param>
 /// <param name="gangerProvider">Ganger provider</param>
 public WeaponManager(IWeaponProvider weaponProvider, IGangerProvider gangerProvider)
 {
     _weaponProvider = weaponProvider ?? throw new ArgumentNullException(nameof(weaponProvider));
     _gangerProvider = gangerProvider ?? throw new ArgumentNullException(nameof(GangerProvider));
 }
Esempio n. 4
0
 private void Awake()
 {
     _weaponProvider = GetComponent <IWeaponProvider>();
 }
Esempio n. 5
0
        protected override void Setup()
        {
            //敵対関係のグループを作成
            chaosRelationShipId = World.AddRelationshipGroup("Inferno:ChaosPeds");

            var chaosSettingLoader = new ChaosModeSettingLoader();

            chaosModeSetting = chaosSettingLoader.LoadSettingFile(@"ChaosMode_Default.conf");

            chaosChecker = new CharacterChaosChecker(chaosModeSetting.DefaultMissionCharacterTreatment,
                                                     chaosModeSetting.IsChangeMissionCharacterWeapon);

            defaultWeaponProvider = new CustomWeaponProvider(chaosModeSetting.WeaponList, chaosModeSetting.WeaponListForDriveBy);

            //キーワードが入力されたらON/OFFを切り替える
            CreateInputKeywordAsObservable(Keyword)
            .Subscribe(_ =>
            {
                IsActive = !IsActive;
                chaosedPedList.Clear();
                StopAllChaosCoroutine();
                if (IsActive)
                {
                    DrawText("ChaosMode:On/" + currentTreatType.ToString(), 3.0f);
                    World.SetRelationshipBetweenGroups(Relationship.Hate, chaosRelationShipId, PlayerPed.RelationshipGroup);
                }
                else
                {
                    DrawText("ChaosMode:Off", 3.0f);
                    World.SetRelationshipBetweenGroups(Relationship.Neutral, chaosRelationShipId, PlayerPed.RelationshipGroup);
                }
            });

            nextTreatType = currentTreatType;

            //F7でキャラカオスの切り替え(暫定
            OnKeyDownAsObservable
            .Where(x => IsActive && x.KeyCode == Keys.F7)
            .Do(_ =>
            {
                nextTreatType = (MissionCharacterTreatmentType)(((int)nextTreatType + 1) % 3);
                DrawText("CharacterChaos:" + nextTreatType.ToString(), 1.1f);
            })
            .Throttle(TimeSpan.FromSeconds(1))
            .Subscribe(_ =>
            {
                currentTreatType = nextTreatType;
                chaosChecker.MissionCharacterTreatment = nextTreatType;
                DrawText("CharacterChaos:" + currentTreatType.ToString() + "[OK]", 3.0f);
                chaosedPedList.Clear();
                StopAllChaosCoroutine();
            });

            //interval設定
            Interval = chaosModeSetting.Interval;

            var oneSecondTich = CreateTickAsObservable(TimeSpan.FromSeconds(1));

            //市民をカオス化する
            oneSecondTich
            .Where(_ => IsActive && PlayerPed.IsSafeExist() && PlayerPed.IsAlive)
            .Subscribe(_ => CitizenChaos());

            //プレイヤが死んだらリセット
            oneSecondTich
            .Where(_ => PlayerPed.IsSafeExist())
            .Select(_ => PlayerPed.IsDead)
            .DistinctUntilChanged()
            .Where(x => x)
            .Subscribe(_ =>
            {
                chaosedPedList.Clear();
                StopAllChaosCoroutine();
            });

            oneSecondTich
            .Where(_ => IsActive)
            .Subscribe(_ => NativeFunctions.SetAllRandomPedsFlee(Game.Player, false));

            //イベントが来たら武器を変更する
            OnRecievedInfernoEvent
            .OfType <IEventMessage, ChasoModeEvent>()
            .Subscribe(e =>
            {
                if (e is ChangeToDefaultEvent)
                {
                    singleWeaponProvider = null;
                }
                else if (e is ChangeWeaponEvent)
                {
                    var s = (ChangeWeaponEvent)e;
                    singleWeaponProvider = new SingleWeaponProvider(s.Weapon);
                }
            });
        }