コード例 #1
0
        //-------------------------------------------------------------------------
        public void onFingerLongPress(Vector2 fire_goal_position)
        {
            CRenderLevel level = mScene.getLevel();

            if (level == null)
            {
                return;
            }

            bool level_isrun = level.isNormal();

            if (!level_isrun)
            {
                return;
            }

            if (miHighFrequencyCount > 2)
            {
                if (!mRenderBufferMgr.hasBuffer("BufRapid"))
                {
                    List <object> param_list = new List <object>();
                    mRenderBufferMgr.addBuffer("BufRapid", param_list);
                }

                miHighFrequencyCount = 0;
            }
            else
            {
                if (!mRenderBufferMgr.hasBuffer("BufLongpress"))
                {
                    List <object> param_list = new List <object>();
                    mRenderBufferMgr.addBuffer("BufLongpress", param_list);
                }
            }
        }
コード例 #2
0
        //-------------------------------------------------------------------------
        public void onFingerDragMove(Vector2 fire_goal_position)
        {
            CRenderLevel level = mScene.getLevel();

            if (level == null)
            {
                return;
            }

            bool level_isrun = level.isNormal();

            if (!level_isrun)
            {
                return;
            }
        }
コード例 #3
0
        //-------------------------------------------------------------------------
        public void onFingerTouch(Vector2 fire_goal_position)
        {
            CRenderLevel level = mScene.getLevel();

            if (level == null)
            {
                return;
            }

            bool level_isrun = level.isNormal();

            if (!level_isrun)
            {
                return;
            }

            if (getPlayerGold() < mTurretRate)
            {
                goldNotEnough();
                return;
            }

            if (mfTotalSecond - mfLastTouchSecond < mfHighFrequencyTimeSpan)
            {
                miHighFrequencyCount++;
            }
            else
            {
                miHighFrequencyCount = 0;
            }

            if (checkWhetherFire())
            {
                int bullet_objid = genBulletObjId(1);
                doLocalFire(fire_goal_position, bullet_objid, CBulletConstant.ManualSpeed);

                mScene.getProtocol().c2sManualFire(mPlayer.et_player_rpcid, bullet_objid,
                                                   mTurretAngle, mTurretRate, _getLockedFishIdFromLockedBuffer());
            }

            mfLastTouchSecond = mfTotalSecond;
        }
コード例 #4
0
        //-------------------------------------------------------------------------
        public override void update(float elapsed_tm)
        {
            if (canDestroy())
            {
                return;
            }

            if (mSpriteFish != null)
            {
                mSpriteFish.update(elapsed_tm);
            }

            CRenderLevel level = mScene.getLevel();

            if (level == null)
            {
                signDestroy();
                return;
            }

            bool level_isrun = level.isNormal();

            if (!level_isrun)
            {
                signDestroy();
                return;
            }

            CRenderFish fish = mScene.getLevel().getFishByObjId(mLockFishObjId);

            if (fish == null || fish.IsDie || !_isInScene(fish.Position))
            {
                mLockFishObjId = -1;
                signDestroy();
                return;
            }

            mTurret.updateTurretAngle(fish.Position);
        }
コード例 #5
0
        //-------------------------------------------------------------------------
        public override void update(float elapsed_tm)
        {
            if (canDestroy())
            {
                return;
            }

            CRenderLevel level = mScene.getLevel();

            if (level == null)
            {
                signDestroy();
                return;
            }

            bool level_isrun = level.isNormal();

            if (!level_isrun)
            {
                signDestroy();
                return;
            }

            mfTotalSecond += elapsed_tm;

            bool is_me = _isMe();

            if (is_me)
            {
                // 本人发炮,子弹生产者
                if (mfTotalSecond - mfLastFireSecond > mfFireTimeSpan)
                {
                    mfLastFireSecond = mfTotalSecond;

                    if (!InputController.Instance.MouseDown)
                    {
                        signDestroy();
                        return;
                    }

                    if (mTurret.getPlayerGold() < mTurret.getTurretRate())
                    {
                        mTurret.goldNotEnough();
                        return;
                    }

                    if (mTurret.checkWhetherFire())
                    {
                        Vector2 mouse_pos    = InputController.Instance.CurrentMousePosition;
                        int     bullet_objid = mTurret.genBulletObjId(1);
                        mTurret.doLocalFire(mouse_pos, bullet_objid, CBulletConstant.AutoRapidSpeed);

                        _tBullet bullet;
                        bullet.bullet_objid      = bullet_objid;
                        bullet.turret_angle      = mTurret.getTurretAngle();
                        bullet.turret_rate       = mTurret.getTurretRate();
                        bullet.locked_fish_objid = mTurret.getLockFishObjId();
                        mQueBullet.Enqueue(bullet);
                    }

                    if (miLeftBulletObjIdNum > 0)
                    {
                        miLeftBulletObjIdNum--;
                    }
                    else
                    {
                        //signDestroy();

                        // 极速转长按
                        CRenderBufferMgr buf_mgr = mTurret.getBufferMgr();
                        buf_mgr.removeBuffer("BufRapid");
                        if (!buf_mgr.hasBuffer("BufLongpress"))
                        {
                            List <object> param_list = new List <object>();
                            buf_mgr.addBuffer("BufLongpress", param_list);
                        }
                    }
                }
            }
            else
            {
                // 他人发炮,子弹消费者
                if (mfTotalSecond - mfLastFireSecond > mfFireTimeSpan)
                {
                    mfLastFireSecond = mfTotalSecond;

                    if (mQueBullet.Count > 0)
                    {
                        _tBullet bullet = mQueBullet.Dequeue();
                        mTurret.setLockFishByFishObjId(bullet.locked_fish_objid);
                        mTurret.setTurretAngle(bullet.turret_angle);
                        mTurret.setTurretRate(bullet.turret_rate);
                        mTurret.doOtherFire(bullet.bullet_objid, CBulletConstant.AutoRapidSpeed);
                    }
                }
            }

            // 如果是本人,则按5Hz的频率进行自动发炮的网络同步
            if (is_me)
            {
                if (mfTotalSecond - mfLastSyncSecond > mfSyncTimeSpan)
                {
                    mfLastSyncSecond = mfTotalSecond;

                    mScene.getProtocol().c2sAutoFire(mTurret.getScenePlayerInfo().et_player_rpcid, mQueBullet);
                }
            }
        }