示例#1
0
 private void OnPlaceableDealtDamage(Spawnable p)
 {
     if (p.target.state != Spawnable.States.Dead)
     {
         float newHealth = p.target.SufferDamage(p.damage);
     }
 }
示例#2
0
    /*
     * Spawn a monster on the current map
     */
    protected override void Spawn(Spawnable spawnable)
    {
        GameObject obj = spawnable.gameObject;

        // if whithout position
        if (obj.transform.position.Equals(Vector3.zero))
        {
            int  nbrCell = (MeshMap.Instance.HeightMap * MeshMap.Instance.WidthMap);
            Cell randomCell;
            // Get a valid cell
            do
            {
                randomCell = MeshMap.Instance.getCellFromId(Random.Range(0, nbrCell));
            }while(randomCell.Content);

            // Spawn
            Vector2?randomPosition = MeshMap.Instance.getPositionFromCell(randomCell);

            if (randomPosition.HasValue)
            {
                Debug.Log("Spawn monster : " + randomPosition);
                obj.transform.position = new Vector3(randomPosition.Value.x, randomPosition.Value.y, -1.0f);
                obj.name = this.prefabSpawnable.name;
                obj.SetActive(true);
                obj.GetComponent <Placable> ().PlaceObject();
            }
        }
        else
        {
            // reload mob
            obj.SetActive(true);
            obj.transform.position = new Vector3(obj.transform.position.x - 0.5f, obj.transform.position.y - 0.5f, -1.0f);
            obj.GetComponent <Placable> ().PlaceObject();
        }
    }
示例#3
0
 //These two functions are only used so different threads don't base on the same data and fs up
 public Spawnable(Spawnable spawnable)
 {
     this._noiseMergeType      = spawnable._noiseMergeType;
     this._noiseSettingsData   = spawnable._noiseSettingsData;
     this._subSpawners         = spawnable._subSpawners;
     this._parentOnly          = spawnable._parentOnly;
     this._rotationAmount      = spawnable._rotationAmount;
     this._noiseStartPoint     = spawnable._noiseStartPoint;
     this._thickness           = spawnable._thickness;
     this._uniformSpreadAmount = spawnable._uniformSpreadAmount;
     this._randomSpread        = spawnable._randomSpread;
     this._offsetAmount        = spawnable._offsetAmount;
     this._spawnFixedHeight    = spawnable._spawnFixedHeight;
     this._size    = spawnable._size;
     this._spacing = spawnable._spacing;
     this._othersCanSpawnInside       = spawnable._othersCanSpawnInside;
     this._spawnDifferencial          = spawnable._spawnDifferencial;
     this._softMinAmount              = spawnable._softMinAmount;
     this._hardMinHeight              = spawnable._hardMinHeight;
     this._softMaxAmount              = spawnable._softMaxAmount;
     this._hardMaxHeight              = spawnable._hardMaxHeight;
     this._surfaceNormalAmount        = spawnable._surfaceNormalAmount;
     this._pointAlongNormalRandomness = spawnable._pointAlongNormalRandomness;
     this._softMinSlope = spawnable._softMinSlope;
     this._hardMinSlope = spawnable._hardMinSlope;
     this._softMaxSlope = spawnable._softMaxSlope;
     this._hardMaxSlope = spawnable._hardMaxSlope;
     this._noise        = spawnable._noise;
     this._offsetNoise  = spawnable._offsetNoise;
     this._spreadNoise  = spawnable._spreadNoise;
     this._prefabs      = spawnable._prefabs;
 }
示例#4
0
 void Start()
 {
     boxCollider = GetComponent <BoxCollider2D>();
     rend        = GetComponent <Renderer>();
     spawnable   = GetComponent <Spawnable>();
     smoke       = GetComponent <ParticleSystem>();
 }
示例#5
0
 void generateContainerIfNoneAvaliable(Spawnable spawnable)
 {
     if (spawnable.container == null)
     {
         spawnable.container = Instantiate(new GameObject("container"), transform);
     }
 }
示例#6
0
    private void SpawnObject(GameObject InSpawnPoint)
    {
        SpawnedObject = (GameObject)Instantiate(PrefabToSpawn, InSpawnPoint.transform.position, InSpawnPoint.transform.rotation);
        SpawnedObject.transform.LookAt(Player.transform.position);
        Spawnable ObjectComponent = SpawnedObject.GetComponent <Spawnable>();

        if (ObjectComponent != null)
        {
            ObjectComponent.TimeLifespan = SpawnedObjectLifespan;
            ObjectComponent.WasSpawned   = true;
            Spawnable.OnDestroyed       += OnSpawnedObjectDestroyed;
            ObjectComponent.SpawnedBy    = this;
            AudioSource Speaker = GetComponent <AudioSource>();
            CubeObject  CubeObj = SpawnedObject.GetComponent <CubeObject>();
            if (CubeObj != null)
            {
                CubeObj.StunnerProgressBar = SpawnStunProgressBar();
            }
            else
            {
                Debug.Log("Spawned obj is not of type CubeObject.");
            }
            Speaker.Play();
        }
        else
        {
            Debug.Log("FATAL ERROR ! Spawned object dont have Spawnable component.");
        }

        IsSpawnedObjectAlive = true;
    }
示例#7
0
    public void PlatformSelected()
    {
        Vector3    loc = Vector3.zero;
        Quaternion rot = Quaternion.identity;

        if (player.GetSpawnLocationAndRotation(out loc, out rot))
        {
            if (gameObject.activeSelf)
            {
                player.ToggleConstructionMenu();
            }
            Spawnable tSpawn = gameManager.GetBlueprint(SpawnableType.Decoration, "FloatingPlatform");
            if (tSpawn.constructionEnergyRequired < player.playerEnergy.GetEnergy())
            {
                player.playerEnergy.SpendEnergy(tSpawn.constructionEnergyRequired);
                loc.x = Mathf.Clamp(loc.x, -112.5f, 112.5f);
                loc.z = Mathf.Clamp(loc.z, -112.5f, 112.5f);
                gameManager.SpawnPlatform(tSpawn.pathStrings, loc);

                //Now Spawn in other quadrants as well.
                //Assuming loc to be ++, other position would be

                Vector3 tLoc = new Vector3(-1 * loc.x, loc.y, loc.z);
                gameManager.SpawnPlatform(tSpawn.pathStrings, tLoc);
                tLoc = new Vector3(loc.x, loc.y, -1 * loc.z);
                gameManager.SpawnPlatform(tSpawn.pathStrings, tLoc);
                tLoc = new Vector3(-1 * loc.x, loc.y, -1 * loc.z);
                gameManager.SpawnPlatform(tSpawn.pathStrings, tLoc);
            }
            else
            {
                player.playerUI.DisplayAlertMessage("You don't have enough energy");
            }
        }
    }
示例#8
0
文件: Pool.cs 项目: YellowmanKit/SDSS
    GameObject NewSpawn(Spawnable spawnable, Vector3 position, Quaternion rotation)
    {
        GameObject newChild = Instantiate(spawnables[spawnable], position, rotation, transform);

        newChild.name = spawnable.ToString();
        return(newChild);
    }
示例#9
0
    //private void OnDespawn(object sender, SpawnArgs e)
    //{
    //    // Remove the spawnable and unregister from it
    //    activeList.Remove(e.Spawnable);
    //    e.Spawnable.OnDespawn -= OnDespawn;
    //}

    public bool GetNextEnemy(out Spawnable enemy)
    {
        if (spawnQueue.Count > 0) // Is there something to spawn?
        {
            string entry = spawnQueue.Dequeue();

            // Fetch the spawn manager
            Main         main         = Main.Instance;
            ManagerStore managerStore = main.ManagerStore;
            SpawnManager spawnManager = managerStore.Get <SpawnManager>();

            // Try to spawn the enemy
            if (spawnManager.Spawn(entry, out enemy))
            {
                // Register to the spawnables despawn
                //enemy.OnDespawn += OnDespawn;
                //activeList.Add(enemy);
                return(true);
            }
            else // Enemy isn't valid
            {
                Debug.LogError("Wave manager unable to spawn " + entry + " because it's an invalid spawnable");
                return(false);
            }
        }
        else // Nothing to spawn
        {
            enemy = null;
            return(false);
        }
    }
示例#10
0
 private void OnCurrentActiveCollectibleCollected(Spawnable s)
 {
     s.OnDeactivated           -= OnCurrentActiveCollectibleCollected;
     m_currentActiveCollectible = null;
     m_spawnTimer = 0.0f;
     m_spawnRate  = 0.5f;
 }
示例#11
0
            private void SpawnEnemy()
            {
                // Round robin spawning
                if (_lanetospawn > 3)
                {
                    _lanetospawn = 1;
                }

                if (_lastSpawned == Spawnable.Unicorn)
                {
                    if (AIResponse.Spawn(Spawnable.Bunny, _lanetospawn))
                    {
                        _lastSpawned = Spawnable.Bunny;
                    }
                }
                else if (_lastSpawned == Spawnable.Bunny)
                {
                    if (AIResponse.Spawn(Spawnable.Unicorn, _lanetospawn))
                    {
                        _lastSpawned = Spawnable.Unicorn;
                    }
                }

                _lanetospawn++;
            }
示例#12
0
    public void PrepareWave()
    {
        //I need to figure out a place to spawn
        //each type of spawnable as well as the quatity
        //for each spawnable type.
        EnemiesToSpawn = new List <Spawnable>();
        Spawnables.ForEach(spawnable =>
        {
            for (var i = 0; i < spawnable.Quantity; i++)
            {
                var enemy = new Spawnable()
                {
                    Enemy = spawnable.Enemy,
                };
                if (spawnable.SpawnPoint == null)
                {
                    var spawnIndex   = UnityEngine.Random.Range(0, SpawnPoints.Count);
                    enemy.SpawnPoint = SpawnPoints[spawnIndex];
                }
                else
                {
                    enemy.SpawnPoint = spawnable.SpawnPoint;
                }

                EnemiesToSpawn.Add(enemy);
            }
        });
    }
    IEnumerator spawnCycle()
    {
        while (true)
        {
            /*float maxWeight = 0;
             *
             * for (int i = currentRound; i < rounds.Count; i++)
             * {
             *  foreach (EnemySpawn j in rounds[i].enemies)
             *  {
             *      maxWeight += j.quantity;
             *  }
             * }
             *
             * float chosenEnemy*/

            foreach (EnemySpawn i in rounds[Random.Range(currentRound, rounds.Count)].enemies)
            {
                for (int j = 0; j < i.quantity; j++)
                {
                    StartCoroutine(Spawnable.spawnEnemy(i.enemy));
                }
            }

            yield return(new WaitForSeconds(Random.Range(minFrequency, maxFrequency + 0.01f)));
        }
    }
示例#14
0
        public void CreateExplosion(BombExplosionDTO bombExplosionDTO)
        {
            var       explosionCoords = bombExplosionDTO.ExplosionCoords;
            Spawnable explosion       = new Spawnable(Bomb.ExplosionSprite, this.Position, this.Rotation)
            {
                ProjectileSprite     = { Position = CalculateMapPos(explosionCoords[1].X, explosionCoords[0].Y) },
                DespawnDrawableAfter = .5f
            };

            // set flame position to bomb
            // despawn flame after
            BombTriggers.Add(explosion);
            for (int i = 0; i < directions.GetLength(0); i++)
            {
                int x = explosionCoords[1].X + directions[i][0];
                int y = explosionCoords[0].Y + directions[i][1];
                while (x != explosionCoords[i].X || y != explosionCoords[i].Y)
                {
                    explosion = new Spawnable(Bomb.ExplosionSprite, this.Position, this.Rotation)
                    {
                        ProjectileSprite     = { Position = CalculateMapPos(x, y) },
                        DespawnDrawableAfter = .5f
                    };
                    // set flame position to bomb
                    // despawn flame after
                    BombTriggers.Add(explosion);
                    x += directions[i][0];
                    y += directions[i][1];
                }
            }
        }
示例#15
0
        public void UpdateSpawnables(float deltaTimeInSeconds)
        {
            // EXPLODE
            for (int i = 0; i < Spawnables.Count; i++)
            {
                if (Spawnables[i] != null)
                {
                    Spawnable p = Spawnables[i];

                    // Changing to Bomb.IgnitionDuration instead p.DespawnDrawableAfter
                    // removes Bomb decals too fast or slow (aka. local timescale instead global)

                    if (p.TimeSinceCreation > (float)(p.DespawnDrawableAfter / 1000))
                    {
                        // SPAWN EXPLOSIONS - just before bomb erases
                        Bomb.BombExplosionTimer.Restart(); // restart wait clock when placed
                        Spawnables.RemoveAt(i);            // pop expired bomb
                    }
                    else
                    {
                        p.AddDeltaTime(deltaTimeInSeconds);
                    }
                }
            }

            // Remove old explosions
            UpdateBombColliders(deltaTimeInSeconds); // remove collider
        }
    // Start is called before the first frame update
    void Start()
    {
        if (!hasIntroTransition)
        {
            foreach (EnemySpawn enemy in rounds[currentRound].enemies)
            {
                for (int i = 0; i < enemy.quantity; i++)
                {
                    StartCoroutine(Spawnable.spawnEnemy(enemy.enemy));
                }
            }

            rounds[currentRound].transition.startCheck();
            if (rounds[currentRound].transition.hasTransitioned)
            {
                currentRound++;
            }
        }
        else
        {
            introTransition.startCheck();
            if (introTransition.hasTransitioned)
            {
                hasIntroTransition = false;
                Start();
            }
        }
    }
示例#17
0
    private void Update()
    {
        //press 1 to set active, 0 to reset TEMP
        if (Input.GetKeyDown(KeyCode.Alpha1))
        {
            active = spawnable;
        }
        if (Input.GetKeyDown(KeyCode.Alpha0))
        {
            active = null;
            DestroyGhost();
        }

        if (active != null)
        {
            //spawn and move ghost objects
            if (!EventSystem.current.IsPointerOverGameObject())
            {
                GhostObject();
            }

            //left click to spawn objects
            if (Input.GetMouseButtonDown(0))
            {
                if (!EventSystem.current.IsPointerOverGameObject())
                {
                    InteractAtPoint();
                }
            }
        }
    }
示例#18
0
    /// <summary>
    /// What should happen when the tune completes?
    /// </summary>
    /// <param name="crit">Was the tune played perfectly?</param>
    public override void TuneComplete(bool crit)
    {
        base.TuneComplete(crit);
        GameObject temp = (GameObject)GameObject.Instantiate(spawnObject, ownerTransform.position, ownerTransform.rotation);

        if (attach)
        {
            temp.AddComponent <FollowTarget>();
            temp.GetComponent <FollowTarget>().target = ownerTransform;
            temp.GetComponent <FollowTarget>().offset = Vector3.zero;
        }
        Spawnable spawnable = temp.GetComponent <Spawnable>();

        if (spawnable != null)
        {
            PlayerID ownerID = ownerTransform.GetComponent <BaseControl>().playerOwner;
            spawnable.Owner(ownerID);
            spawnable.Crit(crit);
            if (ownerTransform.GetComponent <MinionTuneSpawn>() != null)
            {
                BaseBard bard = LevelManager.instance.GetBardFromID(ownerID);
                spawnable.tune = bard.GetTuneFromName("Minion");
            }
            if (spawnable.tune == null)
            {
                spawnable.tune = this;
            }
        }
    }
    private SpawnEntry CreateStore(Spawnable prefab)
    {
        SpawnEntry spawnEntry = new SpawnEntry(prefab);

        entries.Add(spawnEntry);
        return(spawnEntry);
    }
示例#20
0
        private void AddEnemyKill(Spawnable spawnable)
        {
            NavEnemy2D e = (NavEnemy2D)spawnable;

            stats.enemiesKilled++;
            switch (e.settings.enemyName)
            {
            case "melee":
                stats.meleeEnemiesKilled++;
                break;

            case "ranged":
                stats.rangedEnemiesKilled++;
                break;

            case "flying":
                stats.flyingEnemiesKilled++;
                break;

            case "suicide":
                stats.suicideEnemiesKilled++;
                break;

            case "tank":
                stats.tankEnemiesKilled++;
                break;

            default:
                throw new NotImplementedException("Enemy name: " + e.settings.enemyName + " not implemented!");
            }
        }
示例#21
0
    void OnTriggerEnter2D(Collider2D other)
    {
        Spawnable spawnable = other.GetComponent <Spawnable>();

        switch (other.tag)
        {
        case "PowerUp":
            spawnable.GetComponent <PowerUp>().OnHit();
            GetComponent <PlayerControls>().IncreaseYDestination(nextY);
            lambController.MoveDown();
            soundPowerUp.Play();
            break;

        case "Obstacle":
            Camera.main.GetComponent <CameraControl>().Shake(0.2f, 4, 100 * Time.deltaTime);
            rb2d.AddForce(new Vector3(0, -200));
            spawnable.GetComponent <Obstacle>().OnHit();
            string colliderTag = other.tag;
            lambController.MoveUp();
            soundCrash.Play();
            break;

        case "lambs":
            deadAnimation.SetActive(true);
            break;
        }
    }
示例#22
0
 public void ReleaseGameObject(Spawnable _obj)
 {
     _obj.transform.SetParent(poolContainer);
     _obj.transform.position = poolContainer.position;
     _obj.gameObject.SetActive(false);
     pool.Add(_obj);
 }
    /// <summary>
    /// Spawns a creature // detailed instructions
    /// </summary>
    /// <param name="spawnable">the creature</param>
    public bool Spawn(Spawnable creature, int lane)
    {
        LaneNode  node     = TournamentManager._instance.lanes[lane - 1].GetFirstLaneNode(logicBase);
        IResponse response = new ActionResponse(creature == Spawnable.Bunny ? TournamentManager._instance.bunnyPrefab.GetComponent <CreatureBase> () : TournamentManager._instance.unicornPrefab.GetComponent <CreatureBase> (), lane, logicBase, ResponseActionType.Spawn, node);

        /* fail the Spawn */
        // LogStack.Log ("Tokens: " + tokens, LogLevel.Debug);
        // LogStack.Log ("Node Creature Count: " + (node.activeCreature != null ? 1 : 0), LogLevel.System);
        if (lane > TournamentManager._instance.lanes.Count || node.activeCreature != null || spawnNodesTaken.Contains(node))
        {
            // LogStack.Log ("Response | Spawn Failed Lane: " + lane, LogLevel.Stack);
            return(false);
        }
        else
        {
            if (!SpendToken())
            {
                return(false);
            }
            // LogStack.Log ("Response | Spawn Success Lane: " + lane, LogLevel.Stack);
            spawnNodesTaken.Add(node);
            if (!ResponseChain.Contains(response))
            {
                ResponseChain.Add(response);
            }
            else
            {
                LogStack.Log("##### Duplicate Spawn Response", LogLevel.System);
                RefundToken();
            }
            return(true);
        }
    }
示例#24
0
 private void OnTriggerEnter(Collider other)
 {
     if (other.CompareTag("Spawnable"))
     {
         Spawnable spawnable = other.GetComponent <Spawnable>();
         spawnable.Spawn();
     }
 }
示例#25
0
    public void SetTarget(Spawnable target)
    {
        Collider targetCollider;
        bool     collExist = target.transform.TryGetComponent <Collider>(out targetCollider);

        pointOnTarget  = collExist ? RandomPointInCollider(targetCollider) : target.transform.position;
        shootDirection = (pointOnTarget - transform.position).normalized;
    }
示例#26
0
        public void CmdSpawnOnServer(int _spawnIndex, Vector3 _position, Quaternion _rotation, NetworkIdentity _owningPlayerID)
        {
            Spawnable spawningObj      = SpawnablesList[_spawnIndex];
            Spawnable spawningInstance = (Spawnable)Instantiate(spawningObj, _position, _rotation);

            NetworkServer.Spawn(spawningInstance.gameObject);
            //mCurrentSpawnableInstance = null;
        }
示例#27
0
    private void Despawn(SpawnManager spawnManager, Spawnable instance)
    {
        // Store the manager for re-use
        spawnManager.Store(instance);

        // Move out of the scene
        instance.transform.position = new Vector3(0, -100, 0);
    }
示例#28
0
    void Awake()
    {
        playerCam = GameObject.FindGameObjectWithTag("MainCamera");
        SpriteRenderer sprite = GetComponent <SpriteRenderer>();

        sprite.flipX = Spawnable.SpriteFlip();
        transform.SetParent(GameObject.FindGameObjectWithTag("Map").transform);
    }
示例#29
0
 public void Remove(Spawnable spawnable)
 {
     listSpawners.ForEach(spawner => {
         if (spawner.prefabSpawnable.GetType().Equals(spawnable.GetType()))
         {
             spawner.Remove(spawnable);
         }
     });
 }
示例#30
0
    Spawnable AllocateGameObject()
    {
        Spawnable obj = pool[pool.Count - 1];

        pool.RemoveAt(pool.Count - 1);
        obj.transform.SetParent(null);
        obj.gameObject.SetActive(true);
        return(obj);
    }
示例#31
0
 public void Spawn(Spawnable spawn)
 {
     spawnQueue.Enqueue(spawn);
 }
示例#32
0
    protected virtual List<GameObject> getEntityList(Spawnable.Type type)
    {
        switch (type)
        {
            case Spawnable.Type.HERO:
                return heroList;

            case Spawnable.Type.PROJECTILE:
                return projectileList;

            case Spawnable.Type.PORTAL:
                return portalList;

            default:
                return null;
        }
    }
示例#33
0
        bool GetSpawnableClean(BuildingBlock initialBlock, float playerRot, Spawnable currentSpawn, out Dictionary<string, object> data)
        {
            data = new Dictionary<string, object>();
            posCleanData = new Dictionary<string, object>();
            rotCleanData = new Dictionary<string, object>();

            normedPos = GenerateGoodPos(initialBlock.transform.position, currentSpawn.transform.position, playerRot);
            normedYRot = currentSpawn.transform.rotation.ToEulerAngles().y - playerRot;
            data.Add("prefabname", currentSpawn.GetComponent<BaseNetworkable>().LookupPrefabName().ToString());

            posCleanData.Add("x", normedPos.x);
            posCleanData.Add("y", normedPos.y);
            posCleanData.Add("z", normedPos.z);
            data.Add("pos", posCleanData);

            rotCleanData.Add("x", currentSpawn.transform.rotation.ToEulerAngles().x);
            rotCleanData.Add("y", normedYRot);
            rotCleanData.Add("z", currentSpawn.transform.rotation.ToEulerAngles().z);
            data.Add("rot", rotCleanData);
            return true;
        }
示例#34
0
    public void OnGUI()
    {
        if (gardenCompleteStart != -1) {
            return;
        }
        GUI.skin = skin;
        int pos = 0;
        int buttonSize = 40;
        foreach(Spawnable s in GameConfig.instance.spawnables) {
            if(GameDriver.instance.currentLevel.disabled.Contains(s.type)) {
                continue;
            }
            string msg = "Plant " + s.type;
            if (s.cost.seed == 1) {
                msg += " (" + s.cost.seed + "seed)";
            } else {
                msg += " (" + s.cost.seed + "seeds)";
            }
            GUI.enabled = funds.canAfford(s.cost);
            if(GUI.Button(new Rect(0, pos, 250, buttonSize), msg)) {
                if(buying == s) {
                    buying = null;
                    ClearPlantableEffect();
                } else {
                    buying = s;
                    AudioSource.PlayClipAtPoint(s.selected, Camera.main.transform.position);
                    SetPlantableEffect(s.type);
                }
            }
            pos += buttonSize;
        }
        GUI.enabled = true;
        GUI.Label(new Rect(Screen.width - 200, 0, 200, 100), "Seeds: " + funds.seed);

        string target = "target: ";
        if(GameDriver.instance.currentLevel != null) {
            bool firstItem = true;
            foreach(KeyValuePair<PlantType, int> pair in GameDriver.instance.currentLevel.target) {
                if (firstItem) {
                    firstItem = false;
                } else {
                    target += ", ";
                }
                target += pair.Value + " " + pair.Key;
            }
            GUI.Label(new Rect(0, Screen.height - 50, Screen.width, 50), target);
        }
    }
示例#35
0
 public void SpawnPlant(GameObject ground)
 {
     if (!funds.canAfford(buying.cost)) {
         return;
     }
     if (!ground.GetComponent<Ground>().IsPlantable(buying.type)) {
         return;
     }
     funds -= buying.cost;
     Plant plant = (Instantiate(buying.prefab) as GameObject).GetComponent<Plant>();
     plant.Attach(ground.GetComponent<Ground>());
     GameDriver.instance.PlantSpawned(plant.type);
     buying = null;
     ClearPlantableEffect();
     AudioSource.PlayClipAtPoint(plantAtached, Camera.main.transform.position);
 }
示例#36
0
 public void Start()
 {
     if (GameDriver.instance.currentLevel == null) {
         funds = new Currency(0, 0, 0);
     } else {
         funds = GameDriver.instance.currentLevel.startingFunds;
     }
     buying = null;
     groundLayer = LayerMask.NameToLayer("Ground");
     clickMask = 1 << groundLayer | 1 << LayerMask.NameToLayer("Pickup");
     whiteout = transform.FindChild("Whiteout").renderer.material;
     whiteout.color = new Color(1, 1, 1, 1);
     levelStart = Time.time;
     //grounds = Resources.FindObjectsOfTypeAll(typeof(Ground)) as GameObject[];
     grounds = GameObject.FindGameObjectsWithTag("Ground");
 }
示例#37
0
    public static GameObject Spawn(Spawnable.Type type, Vector3 position, Quaternion rotation)
    {
        string resourceString = Spawnable.GetResourceString(type);
        UnityEngine.Object obj = Resources.Load(resourceString, typeof(GameObject));
        GameObject gameObject = GameObject.Instantiate(obj, position, rotation) as GameObject;

        ISpawnable spawnable = gameObject.GetComponent<ISpawnable>();
        if (spawnable == null)
            throw new System.Exception("Unable to register spawnable. No Spawnable component found.");

        spawnable.spawnType = type;
        GameControl.RegisterSpawnable(gameObject);        

        return gameObject;
    }
 public SpawnableComponent(Spawnable spawnable, SerializedVector3 v3, SerializedQuaternion q)
 {
     Prefab = spawnable.GetComponent<BaseNetworkable>().LookupPrefabName();
     LocalPosition = v3;
     LocalRotation = q;
 }
示例#39
0
    override protected List<GameObject> getEntityList(Spawnable.Type type)
    {
        switch (type)
        {
            case Spawnable.Type.ENEMY_TURRET:
                return turretList;

            default:
                return base.getEntityList(type);
        }
    }
 public void RemoveComponent(Spawnable spawnable)
 {
     var v3 = new SerializedVector3(spawnable.transform.position - Origo.Position.ToVector3());
     var q = new SerializedQuaternion(spawnable.transform.rotation);
     var component = new SpawnableComponent(spawnable, v3, q);
     if (SpawnableComponents.ContainsKey(component.ToString()))
     {
         SpawnableComponents.Remove(component.ToString());
     }
 }
 public void AddComponent(Spawnable spawnable)
 {
     if (Origo == null)
     {
         Origo = new Origo(new SerializedVector3(spawnable.transform.position), new SerializedQuaternion(spawnable.transform.rotation));
     }
     var v3 = new SerializedVector3(spawnable.transform.position - Origo.Position.ToVector3());
     var q = new SerializedQuaternion(spawnable.transform.rotation);
     var component = new SpawnableComponent(spawnable, v3, q);
     if (component == null)
     {
         Pluton.Logger.LogDebug("[StructureRecorder] Deployable component is null!");
         return;
     }
     if (!SpawnableComponents.ContainsKey(component.ToString()))
     {
         SpawnableComponents.Add(component.ToString(), component);
     }
     else
     {
         SpawnableComponents[component.ToString()] = component;
     }
 }