コード例 #1
0
ファイル: Weapon.cs プロジェクト: Alx666/ProjectPhoenix
    private void Awake()
    {
        Owner = GetComponent<Actor>();
        QueueLocators = new Queue<GameObject>(ShootLocators);
        m_hPool = GlobalFactory.GetPool(BulletPrefab);

        //Automatic State Machine Composition
        //One Ready State
        m_hTrigger = new WeaponReady();

        //N Wait And Shoot for Barrage Implemenation
        IWeaponState hLast = m_hTrigger;

        if (BulletDelay > 0f)
        {
            for (int i = 0; i < Barrage; i++)
            {
                WeaponShoot hShoot = new WeaponShoot(this, Mode);
                WeaponWait hWait = new WeaponWait(BulletDelay);
                hLast.Next = hShoot;
                hShoot.Next = hWait;
                hLast = hWait;
            }
        }
        else
        {
            WeaponShoot hShoot = new WeaponShoot(this, Barrage, Mode);
            WeaponWait hWait = new WeaponWait(BulletDelay);
            hLast.Next = hShoot;
            hShoot.Next = hWait;
            hLast = hWait;
        }


        (hLast as WeaponWait).Delay = BarrageDelay;
        hLast.Next = m_hTrigger;
        m_hStateMachine = hLast;
    }
コード例 #2
0
ファイル: Weapon.cs プロジェクト: Alx666/ProjectPhoenix
 //RESET
 public void Reset()
 {
     bool iterated = false;
     IWeaponState hCurrent = m_hTrigger;
     while(!iterated)
     {
         hCurrent.Reset();
         hCurrent = hCurrent.Next;
         if (hCurrent == m_hTrigger)
             iterated = true;
     }
     this.m_hStateMachine = m_hTrigger;
 }
コード例 #3
0
ファイル: Weapon.cs プロジェクト: Alx666/ProjectPhoenix
 private void Update()
 {
     m_hStateMachine = m_hStateMachine.Update();
     IsReady = m_hStateMachine as WeaponReady != null;
 }
コード例 #4
0
 private void LaserState()
 {
     WeaponState = new LaserState();
     WeaponState.ChangeState(this);
     CurrentWeaponType = WeaponType.Laser;
 }
コード例 #5
0
 private void IonState()
 {
     WeaponState = new IonState();
     WeaponState.ChangeState(this);
     CurrentWeaponType = WeaponType.Ion;
 }
コード例 #6
0
 public void SetState(IWeaponState state)
 {
     WeaponState = state;
     WeaponState.ChangeState(this);
 }
コード例 #7
0
 private void EnemyState()
 {
     WeaponState = new EnemyState();
     WeaponState.ChangeState(this);
     CurrentWeaponType = WeaponType.Enemy;
 }
コード例 #8
0
 private void PlasmaState()
 {
     WeaponState = new PlasmaState();
     WeaponState.ChangeState(this);
     CurrentWeaponType = WeaponType.Plasma;
 }
コード例 #9
0
ファイル: Weapon.cs プロジェクト: kmyumyun/SoftUni
 protected Weapon(string name, IWeaponState weaponState, Rarities rarity)
 {
     this.Name        = name;
     this.Rarities    = rarity;
     this.WeaponState = weaponState;
 }