Exemple #1
0
                //Hook by replacing method body of ModuleScoop.ControlInputManual()
                internal static void ControlInputManual(ModuleWeapon module, int aim, int fire)
                {
                    bool shouldFireDefault = (fire != 0) && (Time.timeScale != 0f);
                    var  shouldFireEvent   = new CanFireEvent <ModuleWeapon>(module, shouldFireDefault);

                    CanFire?.Invoke(shouldFireEvent);

                    bool performBehaviour = true;

                    if (shouldFireEvent.Fire)
                    {
                        var fireEvent = new FireEvent <ModuleWeapon>(module);
                        OnFire?.Invoke(fireEvent);
                        performBehaviour = fireEvent.PerformVanillaBehaviour;
#warning Remove duplicate versions of this
                    }
                    if (performBehaviour)
                    {
                        module.AimControl       = aim;
                        module.FireControl      = shouldFireEvent.Fire;
                        module.m_TargetPosition = Vector3.zero;
                        if (module.FireControl && module.block.tank && module.block.tank.beam.IsActive && !Mode <ModeMain> .inst.TutorialLockBeam)
                        {
                            module.block.tank.beam.EnableBeam(false, false);
                        }
                    }
                }
 private void Update()
 {
     if (Input.GetButton("Fire1"))
     {
         OnFire?.Invoke();
     }
 }
Exemple #3
0
                //Hook by replacing method body of ModuleScoop.ControlInput()
                internal static void ControlInput(ModuleScoop module, int aim, int fire)
                {
                    bool shouldFireDefault = (fire != 0);
                    var  shouldFireEvent   = new CanFireEvent <ModuleScoop>(module, shouldFireDefault);

                    CanFire?.Invoke(shouldFireEvent);

                    bool performBehaviour = true;

                    if (shouldFireEvent.Fire)
                    {
                        var fireEvent = new FireEvent <ModuleScoop>(module);
                        OnFire?.Invoke(fireEvent);
                        performBehaviour = fireEvent.PerformVanillaBehaviour;
#warning Remove duplicate versions of this
                    }
                    if (performBehaviour)
                    {
                        /*if (module.actuator.isPlaying)
                         * {
                         *      return;
                         * }
                         * if (!module.m_Lifted && shouldFireEvent.Fire)
                         * {
                         *      module.actuator.Play(module.m_LiftAnim.name);
                         *      module.m_Lifted = true;
                         *      return;
                         * }
                         * if (module.m_Lifted && (!shouldFireEvent.Fire || (module.m_UpAndDownMode && shouldFireEvent.Fire)))
                         * {
                         *      module.actuator.Play(module.m_DropAnim.name);
                         *      module.m_Lifted = false;
                         * }*/
                    }
                }
Exemple #4
0
    public void Init(EventNotifier notifier, int msg, int code, bool isAll, object onFire)
    {
        if (onFire is OnFire)
        {
            this.onFire = (OnFire)onFire; fireType = enFire.onFire;
        }
        else if (onFire is OnFire1)
        {
            this.onFire1 = (OnFire1)onFire; fireType = enFire.onFire1;
        }
        else if (onFire is OnFire2)
        {
            this.onFire2 = (OnFire2)onFire; fireType = enFire.onFire2;
        }
        else if (onFire is OnFire3)
        {
            this.onFire3 = (OnFire3)onFire; fireType = enFire.onFire3;
        }
        else if (onFire is OnFireOb)
        {
            this.onFireOb = (OnFireOb)onFire; fireType = enFire.onFireOb;
        }
        else if (onFire is OnVote)
        {
            this.onVote = (OnVote)onFire; fireType = enFire.onVote;
        }


        this.notifier = notifier;
        this.msg      = msg;
        this.code     = code;
        this.isAll    = isAll;
        removeCounter = 0;
    }
Exemple #5
0
        private void Update()
        {
            MousePos = _camera.ScreenToWorldPoint(Input.mousePosition);

            CheckInput();
            if (_isHoldFireButton)
            {
                IncrementHoldFireButtonTimer();
            }

            if (!_isFire)
            {
                return;
            }

            if (_holdFireTimer <= _holdFirePressThreshold)
            {
                OnFire?.Invoke();
                ResetHoldFireButtonTimer();
            }
            else
            {
                OnHoldFire?.Invoke(_holdFireTimer >= _holdFireFullPressThreshold);
                ResetHoldFireButtonTimer();
            }
        }
Exemple #6
0
    protected override void OnUpdate()
    {
        base.OnUpdate();

        if (emptyTimer > 0)
        {
            emptyTimer -= Time.deltaTime;
            return;
        }

        if (attackCooldownTimer > 0f)
        {
            OnFire.Invoke();

            attackCooldownTimer -= Time.deltaTime;

            ammoUseTimer += Time.deltaTime;
            if (ammoUseTimer >= AmmoUseTime)
            {
                if (character.ammunition[UsesAmmo] >= AmmoUseAmount)
                {
                    character.ammunition[UsesAmmo] -= AmmoUseAmount;
                }

                ammoUseTimer -= AmmoUseTime;
            }
        }
    }
    private void FireRandomBullets()
    {
        if (_fireRandomBullets != null)
        {
            StopCoroutine(_fireRandomBullets);
        }

        _fireRandomBullets = StartCoroutine(FireRandomBulletsCoroutine());

        IEnumerator FireRandomBulletsCoroutine()
        {
            while (true)
            {
                yield return(new WaitForSeconds(0.25f)); //GetRandomNumber());

                OnFire?.Invoke(Rigidbody.velocity.magnitude, Transform.position, GetRandomDirection());
            }
        }

        int GetRandomNumber()
        {
            return(Random.Range(3, 10));
        }

        Vector2 GetRandomDirection()
        {
            var direction = Vector2.one;

            direction.x = GetRandomNumber();
            direction.x = GetRandomNumber();

            return(direction.normalized);
        }
    }
Exemple #8
0
 private void UnsubscribeMethods()
 {
     System.Delegate[] subscribedMethods = OnFire.GetInvocationList();
     foreach (var x in subscribedMethods)
     {
         OnFire -= (x as Fire);
     }
 }
 IEnumerator Fire()
 {
     while (true)
     {
         OnFire?.Invoke();
         yield return(new WaitForFixedUpdate());
     }
 }
Exemple #10
0
    public void Fire()
    {
        Fireball newFireball = Instantiate(fireball, transform.position + new Vector3(0.9f, 0, 0), Quaternion.identity);

        newFireball.gameObject.SetActive(true);
        OnFire.Invoke();
        isFire = true;
    }
Exemple #11
0
        /// <summary>
        /// AI使用发射槽来控制发射武器
        /// 普通发射使用发射类型
        /// </summary>
        /// <param name="i"></param>
        public void FireAI(int i)
        {
            //Log.Trace("FireAI: 发射槽" + i + " 发射槽总数" + skills.Count);
            if (skills.Count <= i)
            {
                //Log.Trace("FireAI: 发射槽 超过了 发射槽总数");
                return;
            }
            if (skills[i] is ISkillContainer actor)
            {
                //var weaponactor = actor.Clone();
                //weaponactor.SetActorId(level.GetCreateInternalComponentBase().GetCreateID());
                //var weapon = weaponactor as ISkillContainer;
                if (actor.GetActorType() == ActorTypeBaseDefine.ContinuousLaserActor)
                {
                    foreach (var s in skillInitList)
                    {
                        if (s.ActorType == ActorTypeBaseDefine.ContinuousLaserActor)
                        {
                            return;
                        }
                    }
                }
                if (actor.GetActorType() == ActorTypeBaseDefine.ContinuousLaserActor)
                {
                    if (skillcd[i] == 0)
                    {
                        return;
                    }
                }
                else
                {
                    if (skillcd[i] != 0)
                    {
                        return;
                    }
                }
                var id     = level.GetCreateInternalComponentBase().GetCreateID();
                var weapon = actor as ISkillContainer;
                weapon.SetRelPosition(0, 0);
                //Log.Trace("当前发射者 位置:" + container.GetPhysicalinternalBase().GetBody().Position + " 朝向:" +
                //          container.GetPhysicalinternalBase().GetBody().Forward);
                //Log.Trace("当前武器箱 位置:"+actor.GetBody().Position + " 朝向:"+actor.GetBody().Forward);
                //Log.Trace("被发射武器"+weapon.GetBody().Id+" 位置:" + weapon.GetBody().Position + " 朝向:" + weapon.GetBody().Forward+" 朝向角度:"+weapon.GetBody().Angle);


                //level.GetEnvirinfointernalBase().AddActor(weapon as ActorBase);
                var init = weapon.GetInitData();
                level.AddEventMessagesToHandlerForward(new InitEventMessage(id, actor.GetCamp(), actor.GetActorType(), init.point_x, init.point_y, init.angle, weapon.GetLinerDamping(), ownerid: weapon.GetOwnerID(), relatpoint_x: weapon.GetRelPositionX(), relatpoint_y: weapon.GetRelPositionY()));

                skillInitList.Add(new UserData(id, weapon.GetActorType()));
                OnFire?.Invoke(weapon);
                if (actor.GetActorType() != ActorTypeBaseDefine.ContinuousLaserActor)
                {
                    skillcd[i] = DateTime.Now.Ticks;
                }
            }
        }
Exemple #12
0
 // Update is called once per frame
 void Update()
 {
     if (Input.GetButtonUp("Fire1"))
     {
         RaycastHit hit = GetMouseRaycast();
         args.Set(hit);
         OnFire.Invoke(this, args);
     }
 }
Exemple #13
0
 public static void Ignite(Block block)
 {
     if (block != null && block.FindFlag(typeof(Spatioport)) == null)
     {
         block.AddState(State.OnFire);
         OnFire of = (OnFire)block.states[State.OnFire];
         of.id = currentFire++;
     }
 }
Exemple #14
0
 public override void OnClear()
 {
     notifier = null;
     onFire   = null;
     onFire1  = null;
     onFire2  = null;
     onFire3  = null;
     onFireOb = null;
     onVote   = null;
 }
Exemple #15
0
        private void RpcSpawnRocketBot(bool isGreenTeam)
        {
            OnFire?.Invoke();

            GameObject rocket = GameObject.Instantiate(rocketPrefab, rocketLaunchPos.position, rocketLaunchPos.rotation) as GameObject;

            rocket.GetComponent <Rocket>().travelDir = this.transform.forward;
            rocket.GetComponent <Rocket>().greenTeam = isGreenTeam;
            NetworkServer.Spawn(rocket);
        }
Exemple #16
0
        private void Update()
        {
            Horizontal = Input.GetAxis(HORIZONTAL);
            Vertical   = Input.GetAxis(VERTICAL);

            if (Input.GetButtonDown(FIRE))
            {
                OnFire?.Invoke();
            }
        }
 private void Fire()
 {
     if (Time.time >= _nextBulletTime)
     {
         _nextBulletTime = Time.time + _fireRate;
         OnFire?.Invoke(Rigidbody.velocity.magnitude, Transform.position, Transform.up);
         // play with rapid fire check?
         // RapidFireCheck();
     }
 }
Exemple #18
0
    private void OnDisable()
    {
        lastFireTime = Time.time;
        LevelManager levelManager = FindObjectOfType <LevelManager>();

        if (levelManager)
        {
            levelManager.RemoveOnGameStateEnter(GameStateEntered);
        }
        fireWatchers = null;
    }
Exemple #19
0
    static IEnumerator IgniteBlocks(Block[] blocks, int id)
    {
        yield return(new WaitForEndOfFrame());

        foreach (Block b in blocks)
        {
            b.AddState(State.OnFire);
            OnFire f = (OnFire)b.states[State.OnFire];
            f.id = id;
        }
    }
Exemple #20
0
 IEnumerator FireEventCoroutine()
 {
     while (GameManager.isRunning)
     {
         //erkundigt sich alle shootSpeed Sekunden nach dem Target und feuert das Event ab. Wenn kein Enemy mehr vorhanden ist und ein neuer gespawnt wird während man wartet, gibt es eine Verzögerung,
         // bis das neue Target erfasst wird, weil dies erst im nächsten Schleifendruchlauf nach der Wartezeit geschieht. Es wird sich immer erkundigt, auch wenn enemy.Count leer ist
         OnFire?.Invoke(GetTargetEnemy(towerProperties.shootTarget));
         yield return(new WaitForSeconds(1 / towerProperties.shootSpeed));     //nicht cachen, weil shootspeed sich je nach Level ändert
     }
     UnsubscribeMethods();
 }
Exemple #21
0
 public void Fire(InputAction.CallbackContext context)
 {
     if (context.started && !paused && recordingManager != null && ball != null && !ball.isMoving())
     {
         // fire the ball at an angle between 20 and 160 degrees to ensure that it
         // does not start off going too horizontal or even below the paddle...
         int   frame         = recordingManager.getFrame();
         float movementSpeed = ball.getMovementSpeed();
         commandProcessor.Execute(new FireCommand(ball, frame, Random.Range(89, 91), movementSpeed));
         OnFire?.Invoke();
     }
 }
Exemple #22
0
        internal void Fire(TriggerStateType triggerStateType)
        {
            IsFired          = true;
            TriggerStateType = triggerStateType;
            if (CheckConditionToFire())
            {
                CalledOnFire(triggerStateType);
                OnFire?.Invoke(this);
            }

            IsFired = false;
        }
Exemple #23
0
 internal void HandleFire(float overshotTime)
 {
     Fire(overshotTime);
     ammo--;
     if (shootSounds.Count > 0)
     {
         AudioHandler.AudioContext adjustedContext = audioContext;
         adjustedContext.volume *= SettingsHandler.cache.volume_gun * SettingsHandler.cache.volume_master;
         AudioHandler.PlaySound(shootSounds[Random.Range(0, shootSounds.Count - 1)], adjustedContext, firepoint.position);
     }
     OnFire?.Invoke();
     CalculateCooldown();
 }
Exemple #24
0
        private void Update()
        {
            var worldPosition = camera.ScreenToWorldPoint(UnityEngine.Input.mousePosition);

            worldPosition.z = 0f;

            OnAim?.Invoke(worldPosition);

            if (UnityEngine.Input.GetMouseButtonDown(0))
            {
                OnFire?.Invoke(worldPosition);
            }
        }
Exemple #25
0
    private void CreateRocket()
    {
        Sounds.CreateSound(FireSound, transform.position);

        if (MuzzlePrefab != null)
        {
            GameObject muzzle = Instantiate(MuzzlePrefab);
            muzzle.transform.rotation = _weaponPrefab.transform.rotation * Quaternion.Euler(MuzzleRotation);
            muzzle.transform.position = _weaponPrefab.transform.position + muzzle.transform.TransformDirection(MuzzlePosition);
            muzzle.transform.SetParent(_weaponPrefab.transform);
        }

        if (RocketPrefab != null)
        {
            Rocket rocket = Instantiate(RocketPrefab, LevelLoader.DynamicObjects);
            rocket.owner           = character;
            rocket.Damage          = RocketDamage;
            rocket.ArmDistance     = RocketArmDistance;
            rocket.ArmTimeRange    = RocketArmTimeRange;
            rocket.Force           = RocketForce;
            rocket.Speed           = RocketSpeed;
            rocket.Slowdown        = RocketSlowdown;
            rocket.ExplosionRadius = RocketExplosionRadius;
            rocket.LifeTime        = RocketLifeTime;
            rocket.damageType      = RocketDamageType;
            rocket.Veer            = Random.Range(-Drunkenness, +Drunkenness);

            //make a special raycasting move from character to barrel
            rocket.transform.position = character.transform.position;
            rocket.InitialMove((_weaponPrefab.transform.position + _weaponPrefab.transform.rotation * RocketPosition) - character.transform.position);

            if (AttackDirection == Vector2.zero)
            {
                rocket.transform.rotation = character.LookDirection;
            }
            else
            {
                rocket.transform.rotation = Quaternion.Euler(0, 0, Mathf.Atan2(AttackDirection.x, -AttackDirection.y) * Mathf.Rad2Deg);
            }

            //add spread
            float firstRoll  = Random.Range(-spread, spread);
            float secondRoll = Random.Range(-spread, spread);
            rocket.transform.rotation *= Quaternion.Euler(0, 0, Mathf.Abs(firstRoll) < Mathf.Abs(secondRoll) ? firstRoll : secondRoll);

            rocket.GetComponent <SaveGameObject>().SpawnName = RocketDesignation;
        }

        OnFire.Invoke();
    }
    protected virtual void Fire()
    {
        ammo--;
        cooldownTimer = shootCooldown;
        OnFire?.Invoke(this);
        if (camShake != null)
        {
            camShake.ShakeCameraOmni();
        }

        if (shotAttentionAttractionRadius > 0)
        {
            AI.Attention.Attract(transform.position, shotAttentionAttractionRadius, attentionMask);
        }
    }
 public void AddOnFireDelegate(OnFire del)
 {
     this.OnFireDelegates += del;
 }
 public void RemoveOnFireDelegate(OnFire del)
 {
     this.OnFireDelegates -= del;
 }
 public void SetOnFireDelegate(OnFire del)
 {
     this.OnFireDelegates = del;
 }