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); }
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; }
private void GetChangeBuildTypeInput() { for (int i = 0; i < _buildables.Length; i++) { BuildConfig.BuildableBlueprint blueprint = _buildables[i]; if (Input.GetKeyDown(blueprint.buildHotKey)) { SetBuildType(blueprint.key); } } }
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); } } }
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); }
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); }
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(); }); }
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); }); }