public virtual void Init(SideType side)
 {
     this.side = side;
     config    = this is MainBullet
         ? LogicConfig.MainBullet
         : LogicConfig.NormalBullet;
 }
 public override void Initialize(BulletConfig bulletConfig)
 {
     base.Initialize(bulletConfig);
     InitializeModel(bulletConfig);
     InitializeRigidbody();
     InitializeDamageDealer();
 }
Example #3
0
        public Entity CreateBulletEntity(int cmdSeq, EntityKey entityKey, int serverTime, Vector3 dir, int weaponId, EBulletCaliber caliber,
                                         BulletConfig bulletConfig, Vector3 viewPosition, Vector3 emitPosition)
        {
            int bulletEntityId = _entityIdGenerator.GetNextEntityId();

            Vector3 velocity     = dir * bulletConfig.EmitVelocity;
            var     bulletEntity = _bulletContext.CreateEntity();
            float   maxDistance  = bulletConfig.MaxDistance;

            bulletEntity.AddEntityKey(new EntityKey(bulletEntityId, (int)EEntityType.Bullet));

            bulletEntity.AddBulletData(velocity, 0, bulletConfig.Gravity, 0, serverTime, maxDistance, bulletConfig.PenetrableLayerCount,
                                       bulletConfig.BaseDamage, bulletConfig.PenetrableThickness, bulletConfig, bulletConfig.VelocityDecay,
                                       caliber, weaponId, bulletConfig.DistanceDecayFactor);
            bulletEntity.AddPosition();
            bulletEntity.position.Value = viewPosition;
            bulletEntity.AddOwnerId(entityKey);
            bulletEntity.bulletData.CmdSeq     = cmdSeq;
            bulletEntity.bulletData.StartPoint = viewPosition;
            bulletEntity.bulletData.EmitPoint  = emitPosition;
            bulletEntity.bulletData.StartDir   = dir;
            bulletEntity.isNew = true;
            bulletEntity.AddEmitPosition(emitPosition);
            bulletEntity.isFlagSyncNonSelf = true;
            bulletEntity.AddLifeTime(DateTime.Now, SharedConfig.BulletLifeTime); // in case user logout
            return(bulletEntity);
        }
Example #4
0
    /// <summary>
    /// Perform any queued NoteActions that have triggered
    /// </summary>
    private void Update()
    {
        if (GameController.Instance.IsResetting())
        {
            return;
        }

        timeElapsed += Time.deltaTime;

        int actionsCompleted = 0;

        for (int i = 0; i < queuedBullets.Count; i++)
        {
            BulletConfig bulletConfig = queuedBullets[i];
            if (bulletConfig.EmissionTime <= timeElapsed)
            {
                Shoot(bulletConfig);
                actionsCompleted++;
            }
            else
            {
                // Since we assume that the queuedShots list is ordered by FireTime, we know that none of the remaining shots should be fired yet
                break;
            }
        }

        queuedBullets.RemoveRange(0, actionsCompleted);
    }
Example #5
0
 private void InitializeData(BulletConfig bulletConfig)
 {
     Damage = bulletConfig.damage;
     Range  = bulletConfig.range;
     Speed  = bulletConfig.speed;
     DamageDealFrequency = bulletConfig.damageDealFrequency;
     Penetrable          = bulletConfig.penetrable;
 }
Example #6
0
 public IBulletFire CreateBulletFireLogic(BulletConfig config)
 {
     if (null != config)
     {
         return(new DefaultBulletFireLogic());
     }
     return(null);
 }
Example #7
0
 public IBulletFireListener  CreateBulletFireListener(BulletConfig config)
 {
     if (null != config)
     {
         return(new BulletFireEventListener());
     }
     return(null);
 }
Example #8
0
    public override void dispose()
    {
        base.dispose();

        _data        = null;
        _unit        = null;
        _config      = null;
        _levelConfig = null;
    }
        public void SpawnBullet(BulletConfig bulletConfig, Vector3 position, Quaternion rotation)
        {
            BulletView bulletView = Instantiate(bulletConfig.viewPrefab, position, rotation).GetComponent <BulletView>();

            bulletView.Init(bulletConfig);
            bulletView.OnCollide     += BulletViewOnOnCollide;
            bulletView.OnCollideExit += BulletViewOnOnCollideExit;
            bullets.Add(bulletView);
        }
Example #10
0
    public override void init()
    {
        base.init();

        _data        = _bullet.getData();
        _unit        = _bullet.getUnit();
        _config      = BulletConfig.get(_data.id);
        _levelConfig = BulletLevelConfig.get(_data.id, _data.level);
    }
        private void InitializeModel(BulletConfig bulletConfig)
        {
            var sphere = GameObject.CreatePrimitive(PrimitiveType.Sphere);

            sphere.transform.SetParent(transform);
            sphere.transform.position   = Vector3.zero;
            sphere.transform.localScale = Vector3.one * bulletConfig.scale;
            sphere.GetComponent <Renderer>().material = bulletConfig.material;
        }
Example #12
0
 public void SetWeapon(GameObject cur, string name, float fireRate, GameObject TypeOfBullet)
 {
     //changingWeapon = true;
     equippedWeapon = cur;
     //this.gun = gun;
     timerReset      = fireRate;
     this.fireRate   = timerReset;
     weaponBullet    = TypeOfBullet;
     clsBulletConfig = weaponBullet.GetComponent <BulletConfig>();
 }
Example #13
0
 public void Initialize(BulletConfig config, OpponentController opponent, int damage)
 {
     opponent.OnDead        += OnEnemyDead;
     this.transform.position = new Vector3(transform.position.x, transform.position.y + 1f, transform.position.z);
     this.opponent           = opponent;
     this.enemyName          = opponent.name;
     this.damage             = damage;
     speed   = config.speed;
     isAlive = true;
 }
Example #14
0
    /// <summary>
    /// On Awake I check for the fire rate to be not be negative since that would break the wait in the coroutine.
    /// I set the values for the BulletConfig based on weapon settings. This implies that it cannot be modified in runtime so far (Not modified anywhere else, only used).
    /// </summary>
    private void Awake()
    {
        if (_fireRate <= 0)
        {
            Debug.LogException(new Exception("Fire rate is <= 0, it will be set to 0.1"), this.gameObject);
            _fireRate = 0.1f;
        }

        //Bullet Setup
        _bullet = new BulletConfig(_spawnPoint.forward, _weaponDamage, _bulletSpeed, CalculateBulletSize(_weaponDamage));
    }
Example #15
0
        protected override void ExecuteUserCmd(PlayerEntity playerEntity, IUserCmd cmd)
        {
            var          controller   = playerEntity.WeaponController();
            var          attackProxy  = playerEntity.WeaponController().AttackProxy;
            var          dataList     = controller.BulletList;
            BulletConfig bulletConfig = attackProxy.WeaponConfigAssy.S_BulletCfg;

            if (bulletConfig == null)
            {
                return;
            }
            int weaponConfigId = attackProxy.WeaponConfigAssy.S_Id;
            var caliber        = (EBulletCaliber)attackProxy.WeaponConfigAssy.NewWeaponCfg.Caliber;

            var          damageBuff = attackProxy.GetAttachedAttributeByType(WeaponAttributeType.BaseDamage);
            var          speedBuff  = attackProxy.GetAttachedAttributeByType(WeaponAttributeType.EmitVelocity);
            var          decayBuff  = attackProxy.GetAttachedAttributeByType(WeaponAttributeType.DistanceDecay);
            BulletEntity bulletEntity;

            foreach (var bulletData in dataList)
            {
                bulletEntity = BulletEntityFactory.CreateBulletEntity(bulletData, playerEntity.entityKey.Value);
                float distanceDecay = bulletConfig.DistanceDecayFactor * (1 + decayBuff / 100);
                float velocityDecay = bulletConfig.VelocityDecay * (1 + decayBuff / 100);
                float maxDistance   = bulletConfig.MaxDistance * (1 + decayBuff / 100);


                var entityBulletData = bulletEntity.bulletData;
                entityBulletData.Velocity      = bulletConfig.EmitVelocity * (1 + speedBuff / 100) * bulletData.Dir;
                entityBulletData.DistanceDecay = Math.Min(0.99f, distanceDecay.FloatPrecision(2));
                entityBulletData.WeaponId      = weaponConfigId;
                entityBulletData.Caliber       = caliber;
                entityBulletData.ServerTime    = cmd.RenderTime;
                entityBulletData.Gravity       = bulletConfig.Gravity;

                entityBulletData.VelocityDecay        = velocityDecay.FloatPrecision(2);
                entityBulletData.DefaultBulletConfig  = bulletConfig;
                entityBulletData.IsAimShoot           = attackProxy.IsAiming;
                entityBulletData.PenetrableThickness  = bulletConfig.PenetrableThickness;
                entityBulletData.BaseDamage           = bulletConfig.BaseDamage + damageBuff;
                entityBulletData.PenetrableLayerCount = bulletConfig.PenetrableLayerCount;
                entityBulletData.MaxDistance          = maxDistance.FloatPrecision(2);
                entityBulletData.CmdSeq = cmd.Seq;
                entityBulletData.StatisticsInfo.cmdSeq = cmd.Seq;
                // entityBulletData.StatisticsInfo.originStr         = bulletData.ToStringExt(sb);
                // entityBulletData.StatisticsInfo.bulletBaseStr     = entityBulletData.ToBaseString(sb);
                // entityBulletData.StatisticsInfo.bulletRunStartStr = entityBulletData.ToDynamicString(sb);


                //DebugUtil.AppendShootText(cmd.Seq, "[Bullet Gen]BulletEnity :{0}", entityBulletData);
            }

            dataList.Clear();
        }
        public override void Initialize(BulletConfig bulletConfig)
        {
            base.Initialize(bulletConfig);

            LineRenderer lineRenderer = gameObject.AddComponent <LineRenderer>();

            lineRenderer.material          = bulletConfig.material;
            lineRenderer.widthMultiplier   = bulletConfig.scale;
            lineRenderer.shadowCastingMode = ShadowCastingMode.Off;
            lineRenderer.receiveShadows    = false;
        }
Example #17
0
 public void SetWeapon(GameObject cur, string name, float fireRate, GameObject TypeOfBullet, Sprite weaponSprite)
 {
     //changingWeapon = true;
     equippedWeapon = cur;
     //this.gun = gun;
     timerReset      = fireRate;
     timer           = timerReset;
     weaponBullet    = TypeOfBullet;
     clsBulletConfig = weaponBullet.GetComponent <BulletConfig>();
     clsPlayerSpriteManager.UpdateWeaponSprite(weaponSprite);
 }
Example #18
0
 public static void Decode()
 {
     BulletConfig.DecodeTable(Resources.Load("config/Bullet") + "");
     GunConfig.DecodeTable(Resources.Load("config/Gun") + "");
     ItemConfig.DecodeTable(Resources.Load("config/Item") + "");
     PlayerConfig.DecodeTable(Resources.Load("config/Player") + "");
     BulletConfig.DecodeTableItem();
     GunConfig.DecodeTableItem();
     ItemConfig.DecodeTableItem();
     PlayerConfig.DecodeTableItem();
 }
        protected override void ExecuteUserCmd(PlayerEntity playerEntity, IUserCmd cmd)
        {
            var controller = playerEntity.WeaponController();
            var dataList   = controller.BulletList;

            if (dataList != null && dataList.Count > 0)
            {
                BulletConfig bulletConfig = controller.HeldWeaponAgent.BulletCfg;
                if (null == bulletConfig)
                {
                    return;
                }
                int weaponConfigId = controller.HeldWeaponAgent.ConfigId;
                var caliber        = (EBulletCaliber)UserWeaponConfigManagement.FindConfigById(weaponConfigId).NewWeaponCfg.Caliber;

                foreach (var bulletData in dataList)
                {
                    int bulletEntityId = _entityIdGenerator.GetNextEntityId();

                    Vector3 velocity     = bulletData.Dir * bulletConfig.EmitVelocity;
                    var     bulletEntity = _bulletContext.CreateEntity();
                    float   maxDistance  = bulletConfig.MaxDistance;
                    bulletEntity.AddEntityKey(new EntityKey(bulletEntityId, (int)EEntityType.Bullet));

                    bulletEntity.AddBulletData(
                        velocity,
                        0,
                        bulletConfig.Gravity,
                        0,
                        cmd.RenderTime,
                        maxDistance,
                        bulletConfig.PenetrableLayerCount,
                        bulletConfig.BaseDamage,
                        bulletConfig.PenetrableThickness,
                        bulletConfig,
                        bulletConfig.VelocityDecay,
                        caliber,
                        weaponConfigId);
                    bulletEntity.AddPosition(bulletData.ViewPosition);
                    bulletEntity.AddOwnerId(playerEntity.entityKey.Value);
                    bulletEntity.bulletData.CmdSeq     = cmd.Seq;
                    bulletEntity.bulletData.StartPoint = bulletData.ViewPosition;
                    bulletEntity.bulletData.EmitPoint  = bulletData.EmitPosition;
                    bulletEntity.bulletData.StartDir   = bulletData.Dir;
                    bulletEntity.isNew = true;
                    bulletEntity.AddEmitPosition(bulletData.EmitPosition);
                    bulletEntity.isFlagSyncNonSelf = true;
                    bulletEntity.AddLifeTime(DateTime.Now, SharedConfig.BulletLifeTime); // in case user logout
                    bulletData.ReleaseReference();
                }
                dataList.Clear();
            }
        }
Example #20
0
    public static Sequence SpawnBullet(BulletConfig Bullet, Transform start, Transform target)
    {
        if (Bullet.projectile == null)
        {
            return(DOTween.Sequence());
        }

        // MDebug.Log("spawn bullet");
        float     distance      = (start.position - target.position).magnitude;
        float     time          = distance / Bullet.speed;
        Vector3   offset_target = Random.insideUnitSphere * Bullet.randomOffset;
        Transform new_target    = new GameObject().transform;

        M_Math.CopyTransform(target, new_target);

        new_target.SetParent(target);


        if (offset_target.magnitude > 0)
        {
            new_target.localPosition += offset_target;
        }


        GameObject bullet = GameObject.Instantiate(Bullet.projectile, start.position, start.rotation) as GameObject;

        //just to be safe we run an own sequence that is just based on time (and will be hooked to game logic)
        //  Sequence delayed_call_back = DOTween.Sequence();
        //  delayed_call_back.AppendInterval(time);

        Sequence emit = DOTween.Sequence();

        emit.Append(bullet.transform.DOMove(new_target.position, time).SetEase(Bullet.Animation_Curve));
        //  MDebug.Log("start move "+emit.Duration());
        emit.AppendCallback(() =>
        {
            // MDebug.Log("start kaputt");
            bullet.transform.Translate(new_target.position - bullet.transform.position);
        });
        emit.AppendInterval(0.1f);
        emit.AppendCallback(() =>
        {
            bullet.transform.GetComponentsInChildren <ParticleSystem>().ToList().ForEach(b => b.StopAll());
            bullet.transform.GetComponentsInChildren <ParticleSystem>().ToList().ForEach(b => b.RemoveAllParticlesWhenInactive());
            bullet.transform.DetachChildren();
            GameObject.Destroy(new_target.gameObject);
            GameObject.Destroy(bullet);
        });
        return(emit);

        ;
    }
Example #21
0
    protected override void OnInit(params object[] objs)
    {
        base.OnInit(objs);
        m_Animator       = GetComponent <Animator>();
        m_Animator.speed = 1;
        _damage          = int.Parse(objs[0].ToString());
        _targetLayer     = int.Parse(objs[1].ToString());
        m_BulletCfg      = BulletConfig.GetData(Id);

        _timeCount = 0;

        RegistFsm();
    }
Example #22
0
    public static void DecodeTable(string str)
    {
        str = StringUtils.Replace(str, '\r', '\n');
        str = StringUtils.Replace(str, "\n\n", '\n');
        List <List <string> > list = CSV.Parse(str);

        for (int i = 2, len = list.Count; i < len; i++)
        {
            BulletConfig item = new BulletConfig();
            item.Decode(list[i]);
            Configs.Add(item);
        }
    }
Example #23
0
 public void LoadConfigs()
 {
     ItemConfig.LoadCsvCfg();
     AnimConfig.LoadCsvCfg();
     PlayerConfig.LoadCsvCfg();
     MonsterConfig.LoadCsvCfg();
     BossConfig.LoadCsvCfg();
     BuffConfig.LoadCsvCfg();
     SkillConfig.LoadCsvCfg();
     LevelConfig.LoadCsvCfg();
     BulletConfig.LoadCsvCfg();
     BarrageConfig.LoadCsvCfg();
     ColliderConfig.LoadCsvCfg();
 }
Example #24
0
    /// <summary>
    /// 初始化子弹属性
    /// </summary>
    /// <param name="side">0:sideA  1:sideB</param>
    /// <param name="type">TowerType</param>
    public virtual void Init(int side, int type)
    {
        this.side = side;
        this.type = type;
        switch (type)
        {
        case (int)TowerType.Normal:
            this.config = GameConfig.MainBulletConfig;
            break;

        case (int)TowerType.Main:
            this.config = GameConfig.NormalBulletConfig;
            break;
        }
    }
Example #25
0
    private void Awake()
    {
        Instance = this;
        //模拟第一种角色
        RoleConfig role = new RoleConfig();

        role.id        = 1;
        role.prefabURL = "prefab/player";
        roles.Add(role.id, role);

        //模拟第一种子弹
        BulletConfig bullet = new BulletConfig();

        bullet.id            = 1;
        bullet.prefabURL     = "bullet/FireBullet";
        bullet.hitPrefabURL  = "bullet/HitAnimation";
        bullet.startV        = 5f;
        bullet.rotationRange = 10;
        bullets.Add(bullet.id, bullet);

        //模拟第二种子弹
        bullet               = new BulletConfig();
        bullet.id            = 2;
        bullet.prefabURL     = "bullet/FireBullet";
        bullet.hitPrefabURL  = "bullet/HitAnimation";
        bullet.startV        = 1f;
        bullet.rotationRange = 20;
        bullets.Add(bullet.id, bullet);

        //模拟第一种枪
        GunConfig gun = new GunConfig();

        gun.id          = 1;
        gun.prefabURL   = "gun/Gun";
        gun.bulletId    = 1;
        gun.cd          = 100;
        gun.bulletCount = 1;
        guns.Add(gun.id, gun);

        //模拟第二种枪
        gun             = new GunConfig();
        gun.id          = 2;
        gun.prefabURL   = "gun/Gun";
        gun.bulletId    = 2;
        gun.cd          = 50;
        gun.bulletCount = 1;
        guns.Add(gun.id, gun);
    }
Example #26
0
 public void DecodeConfigItem()
 {
     for (int i = 0; i < list.Count; i++)
     {
         if (i == 1)
         {
             List <string> itemList = StringUtils.Split(list[1], ',');
             for (int n = 0; n < itemList.Count; n++)
             {
                 int item = (int)StringUtils.ToNumber(itemList[n]);
                 Bullets.Add(BulletConfig.GetConfig(item));
             }
         }
     }
     list = null;
 }
Example #27
0
    void Awake()
    {
        moveHorizontal = true;
        myBody         = GetComponent <Rigidbody2D>();
        m_PhotonView   = GetComponent <PhotonView>();

        if (defaultbulletConfig == null)
        {
            Debug.LogWarning("MovementComponent, misisng default config !!");
            enabled = false;//deactive
        }
        else
        {
            activeBulletConfig = defaultbulletConfig;
        }

        healthPlayer = GetComponent <HealthPlayer>();
    }
Example #28
0
    void Update()
    {
        if (PhotonNetwork.connected && m_PhotonView.isMine == false)
        {
            return;
        }

        if (HealthPlayer.instane.isDead)
        {
            return;
        }
        timerChange -= Time.deltaTime;
        if (timerChange <= 0)
        {
            activeBulletConfig = defaultbulletConfig;
        }

        cooldown         -= Time.deltaTime;
        cooldownDynamite -= Time.deltaTime;
    }
Example #29
0
 // Update is called once per frame
 void Update()
 {
     if (vo.fireFlag)
     {
         if (GameVO.Instance.currentTime - vo.lastShootTime > vo.config.cd)
         {
             vo.lastShootTime = GameVO.Instance.currentTime;
             //发射子弹
             //获取子弹信息
             BulletConfig bulletConfig = ConfigManager.Instance.GetBullet(vo.config.bulletId);
             GameObject   bullet       = Instantiate(ResourceManager.Instance.GetResource(bulletConfig.prefabURL), shootPointTransform.position, shootPointTransform.localRotation) as GameObject;
             bullet.GetComponent <Bullet>().config = bulletConfig;
             bullet.transform.parent        = LayerManager.Instance.bulletLayer.transform;
             bullet.transform.localPosition = new Vector3(bullet.transform.localPosition.x, bullet.transform.localPosition.y, 0);
             float scale = shootPointTransform.lossyScale.x > 0 ? 1 : -1;
             //设置子弹的缩放,根据角色的左右
             bullet.transform.localScale = new Vector3(bullet.transform.localScale.x * scale, bullet.transform.localScale.y, bullet.transform.localScale.z);
             //设置子弹的初始速度
             bullet.GetComponent <Rigidbody2D>().velocity = new Vector2(bulletConfig.startV * scale, 0);
         }
     }
 }
Example #30
0
 protected void Shoot(BulletConfig bulletConfig)
 {
     Shoot(bulletConfig.Bullet, bulletConfig.Logic, bulletConfig.LocalPosition, bulletConfig.LocalRotation);
 }