// 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(); } }
/// <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)); }
/// <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)); }
private void Awake() { _weaponProvider = GetComponent <IWeaponProvider>(); }
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); } }); }