示例#1
0
        public void CreateBullet(LVector2 pos, EDir dir, int type, IEntity pEntity)
        {
            var owner     = pEntity as GameEntity;
            var createPos = pos + DirUtil.GetDirLVec(dir) * TankUtil.TANK_HALF_LEN;

            var entity = CreateUnit(createPos, _gameConfigService.bulletPrefabs, type, dir);

            entity.bullet.ownerLocalId = owner.localId.value;
            entity.unit.camp           = owner.unit.camp;
        }
示例#2
0
        private void Update()
        {
            if (_entity == null)
            {
                return;
            }
            transform.localPosition = _entity.pos.value.ToVector3();
            var deg = DirUtil.GetDirDeg(_entity.dir.value);

            transform.localRotation = Quaternion.Euler(0, 0, deg);
        }
示例#3
0
        public void CreateBullet(LVector2 pos, EDir dir, ushort type, IEntity pEntity)
        {
            var owner     = pEntity as GameEntity;
            var createPos = pos + DirUtil.GetDirLVec(dir) * TankUtil.TANK_HALF_LEN;
            var entity    = CreateUnit(createPos, EntityUtil.CreateEntityBullet(_gameContext, type), dir);

            entity.bullet.ownerLocalId = owner.entityId.value;
            entity.unit.camp           = owner.unit.camp;
            entity.collider.radius     = new LFloat(null, 300);
            entity.collider.size       = LVector2.zero;
        }
示例#4
0
        public bool HasColliderWithBorder(EDir dir, LVector2 fTargetHead, LFloat size)
        {
            LVector2 borderDir    = DirUtil.GetBorderDir(dir);
            var      fBorder1     = fTargetHead + borderDir * size;
            var      fBorder2     = fTargetHead - borderDir * size;
            var      isColHead    = HasCollider(fTargetHead);
            var      isColBorder1 = HasCollider(fBorder1);
            var      isColBorder2 = HasCollider(fBorder2);

            return(isColHead ||
                   isColBorder1 ||
                   isColBorder2);
        }
示例#5
0
        public List <LVector3Int> DebugQueryCollider(EDir dir, LVector2 fTargetHead, LFloat size)
        {
            var      ret          = new List <LVector3Int>();
            LVector2 borderDir    = DirUtil.GetBorderDir(dir);
            var      fBorder1     = fTargetHead + borderDir * size;
            var      fBorder2     = fTargetHead - borderDir * size;
            var      isColHead    = HasCollider(fTargetHead);
            var      isColBorder1 = HasCollider(fBorder1);
            var      isColBorder2 = HasCollider(fBorder2);

            ret.Add(new LVector3Int(fTargetHead.Floor().x, fTargetHead.Floor().y, isColHead ? 1 : 0));
            ret.Add(new LVector3Int(fBorder1.Floor().x, fBorder1.Floor().y, isColBorder1 ? 1 : 0));
            ret.Add(new LVector3Int(fBorder2.Floor().x, fBorder2.Floor().y, isColBorder2 ? 1 : 0));
            return(ret);
        }
示例#6
0
        public void RebindView(GameEntity entity)
        {
            var id = entity.localId.value;

            if (_linkedEntities.ContainsKey(id))
            {
                return;
            }

            var assetId = entity.asset.assetId;
            var prefab  = Resources.Load <GameObject>(GameConfig.GetAssetPath(assetId));
            var go      = GameObject.Instantiate(prefab,
                                                 transform.position + entity.pos.value.ToVector3(),
                                                 Quaternion.Euler(0, 0, DirUtil.GetDirDeg(entity.dir.value)), transform);

            go.AddComponent <PosListener>();
            go.AddComponent <DirListener>();
            BindView(entity, _gameContext, go);
        }
        public void Upgrade(IEntity iEntity){
            var entity = iEntity as GameEntity;
            var playerCount = _gameConfigService.playerPrefabs.Count;
            var targetType = entity.unit.detailType + 1;
            if (targetType >= playerCount) {
                Debug.Log($"hehe already max level can not upgrade");
                return;
            }

            var ecsPrefab = _gameConfigService.playerPrefabs[targetType] as ConfigUnit;
            var rawPos = entity.pos.value;
            var rawDir = entity.dir.value;
            ecsPrefab.SetComponentsTo(entity);
            entity.pos.value = rawPos;
            entity.dir.value = rawDir;
            if (!_constStateService.IsVideoLoading) {
                _viewService.DeleteView(entity.localId.value);
                _viewService.BindView(entity, (ushort) ecsPrefab.asset.assetId, rawPos,
                    DirUtil.GetDirDeg(rawDir));
            }
        }
示例#8
0
        public void RebindView(GameEntity entity)
        {
            var id = entity.entityId.value;

            if (_linkedEntities.ContainsKey(id))
            {
                return;
            }

            var assetId = entity.asset.assetId;
            var path    = _resService.GetAssetPath((ushort)assetId);

            if (string.IsNullOrEmpty(path))
            {
                return;
            }
            var prefab = Resources.Load <GameObject>(path);
            var go     = Object.Instantiate(prefab,
                                            transform.position + entity.pos.value.ToVector3(),
                                            Quaternion.Euler(0, 0, DirUtil.GetDirDeg(entity.dir.value)), transform);

            BindView(entity, go);
        }
示例#9
0
        public void Upgrade(IEntity iEntity)
        {
            var entity    = iEntity as GameEntity;
            var targetKey = entity.asset.assetId + 1;

            if (!Table_ConfigPlayer.HasData(targetKey))
            {
                Debug.Log($"hehe already max level can not upgrade");
                return;
            }

            var rawPos  = entity.pos.value;
            var rawDir  = entity.dir.value;
            var tblData = Table_ConfigPlayer.GetData(targetKey);

            tblData.AssignToEntity(entity);
            entity.pos.value = rawPos;
            entity.dir.value = rawDir;
            if (!_constStateService.IsVideoLoading)
            {
                _viewService.DeleteView(entity.entityId.value);
                _viewService.BindView(entity, (ushort)entity.asset.assetId, rawPos, DirUtil.GetDirDeg(rawDir));
            }
        }
示例#10
0
        private void Update()
        {
            var deg = DirUtil.GetDirDeg(_entity.dir.value);

            transform.localRotation = Quaternion.Euler(0, 0, deg);
        }
示例#11
0
 public void OnDir(GameEntity entity, EDir value)
 {
     var deg = DirUtil.GetDirDeg(value);
     //transform.localRotation = Quaternion.Euler(0,0,deg);
 }