Ejemplo n.º 1
0
        public void Init()
        {
            //init building pool
            _gameplayCam   = GameObject.FindObjectOfType <GameplayCamera>();
            _gameBoard     = GameObject.FindObjectOfType <GameBoard>();
            _buildHologram = GameObject.Instantiate <BuildHologram>(_buildConfig.buildHologram);

            GameObject pool = GameObject.FindGameObjectWithTag("ScenePool");

            if (!pool)
            {
                Debug.LogError("NO SCENE POOL TRANSFORM FOUND IN SCENE");
            }
            _buildingGenerator = new GenericPooler(pool ? pool.transform : null);
            BuildConfig.BuildableBlueprint[] blueprints = _buildConfig.buildables;
            for (int i = 0; i < blueprints.Length; i++)
            {
                BuildConfig.BuildableBlueprint blueprint = blueprints[i];
                _buildingGenerator.InitPool(blueprint.GetKey(), 10, blueprint.prefab);
            }

            //UI
            _buildViewController = new BuildViewController(this, _inventorySystem, _buildConfig);

            //Build Cam
            //_buildCam = new BuildCam(_buildConfig,_gameplayCam);

            //init currenty build type
            SetBuildType(_buildConfig.startingBuildType);
        }
Ejemplo n.º 2
0
        public virtual void Build(Vector3 finalPos, float buildTime, int fallheight, Ease easeType, BuildConfig.BuildableBlueprint blueprint)
        {
            _blueprint = blueprint;
            Vector3 startPosition = finalPos + (Vector3.up * fallheight);

            transform.position = startPosition;
        }
Ejemplo n.º 3
0
 private void GetChangeBuildTypeInput()
 {
     for (int i = 0; i < _buildables.Length; i++)
     {
         BuildConfig.BuildableBlueprint blueprint = _buildables[i];
         if (Input.GetKeyDown(blueprint.buildHotKey))
         {
             SetBuildType(blueprint.key);
         }
     }
 }
Ejemplo n.º 4
0
        private void BuildCoreLoop()
        {
            if (_builderRecharging)
            {
                return;
            }
            int  cost   = _buildConfig.GetCost(_currentBuildType);
            bool canBuy = _inventorySystem.CanBuy(Storeable.Type.Coin, cost);

            //Set our hologram position
            Ray ray = _gameplayCam.camera.ScreenPointToRay(Input.mousePosition);

            //IF WE ARE ON THE GAMEBOARD
            if (Physics.RaycastNonAlloc(ray, _hitResults, 100, _gameBoard.GetLayer()) > 0)
            {
                Vector3 hitPoint = _hitResults[0].point;
                seaLevelPos.x = hitPoint.x;
                seaLevelPos.z = hitPoint.z;
                GridPosition gridPos = GetHoloGramPosition(hitPoint);
                float        yOffset = _buildConfig.GetOffset(_currentBuildType);
                _buildHologram.SetPosition(gridPos, yOffset);
                Debug.DrawRay(hitPoint, Vector3.up, Color.blue);

                bool colliding = false;
                if (_collisionDetectionEnabled)
                {
                    Collider[] overlap = Physics.OverlapBox(_buildHologram.GetPosition(), (_buildHologram.GetScale() / 2.1f), Quaternion.identity, _buildConfig._collisionLayerMask);
                    colliding = overlap.Length > 0;
                    //if(colliding)
                    //{
                    //    Debug.Log(overlap[0].transform.name);
                    //}
                }



                _buildHologram.UpdateHologram(!colliding && canBuy, _buildConfig.hologramData);

                //TRY TO BUILD
                if (canBuy && !colliding && Input.GetKey(KeyCode.Mouse1))
                {
                    //BUILD!
                    BuildConfig.BuildableBlueprint blueprint = _buildConfig.GetBuildableBlueprint(_currentBuildType);
                    Buildable building = _buildingGenerator.GetPooledObject(blueprint.GetKey()) as Buildable;
                    building.Build(_buildHologram.GetPosition(), blueprint.buildTime, blueprint.fallHeight, blueprint.buildEaseType, blueprint);

                    _builderRecharging = true;
                    BuyBuildable(cost);
                }
            }
        }
Ejemplo n.º 5
0
        public void SetBuildType(Buildable.TYPE type)
        {
            _currentBuildType = type;

            //morph hologram
            BuildConfig.BuildableBlueprint blueprint = _buildConfig.GetBuildableBlueprint(type);
            _buildHologram.SetMesh(blueprint.hollogramMesh);
            _buildHologram.SetMaterial(blueprint.hologramMat);
            _buildHologram.SetScale(blueprint.hologramScale);
            _buildHologram.UpdateHologram(false, _buildConfig.hologramData);

            _collisionDetectionEnabled = blueprint.enableCollisionDetection;
            _buildRechargeRate         = blueprint.buildRechargeRate;

            _buildViewController.OnBuildTypeChange(type);
            Singleton.instance.audioSystem.PlaySound(SoundBank.Type.BuildSwitch);
        }
Ejemplo n.º 6
0
        public override void Build(Vector3 finalPos, float buildTime, int fallheight, Ease easeType, BuildConfig.BuildableBlueprint blueprint)
        {
            _explosionMask = LayerMask.GetMask(maskList);
            health         = 1;

            base.Build(finalPos, buildTime, fallheight, easeType, blueprint);

            _dropTween = transform.DOMove(finalPos, buildTime)
                         .SetEase(easeType)
                         .OnComplete(killTweens);
        }
Ejemplo n.º 7
0
        public override void Build(Vector3 finalPos, float buildTime, int fallheight, Ease easeType, BuildConfig.BuildableBlueprint blueprint)
        {
            _explosionMask = LayerMask.GetMask(maskList);
            base.Build(finalPos, buildTime, fallheight, easeType, blueprint);

            Tween t = transform.DOMove(finalPos, buildTime).SetEase(easeType).OnComplete(() =>
            {
                DamageUtil.ApplyExplosionDamage(this, finalPos, _blueprint.explodeRadius, _blueprint.damage, _explosionMask, ref _cachedColliders);

                Singleton.instance.particleGod.GenerateParticle(Particle.Type.HelixBomb, finalPos);
                Singleton.instance.audioSystem.PlaySound(SoundBank.Type.HelixBomb);
                RemoveFromPool();
            });
        }
Ejemplo n.º 8
0
        public override void Build(Vector3 finalPos, float buildTime, int fallheight, Ease easeType, BuildConfig.BuildableBlueprint blueprint)
        {
            health = 8;

            Sequence s = DOTween.Sequence();

            base.Build(finalPos, buildTime, fallheight, easeType, blueprint);
            Tween t = transform.DOMove(finalPos, buildTime).SetEase(easeType).OnUpdate(() =>
            {
                Vector3 center      = _boxCollider.center;
                center.y            = -transform.position.y + 0.5f;
                _boxCollider.center = center;
            });

            s.Insert(0.0f, t);
            s.InsertCallback(t.Duration() * 0.375f, () =>
            {
                Singleton.instance.particleGod.GenerateParticle(Particle.Type.BuildingGlow, finalPos += glowVector);
                Singleton.instance.audioSystem.PlaySound(SoundBank.Type.Build);
            });
        }