示例#1
0
    public void InsertMonsters(MonsterHolder holder)
    {
        GameObject monster = holder.MonsterModel;
        GameObject outline = holder.MonsterOutlined;

        // Enemy OUTLINE
        ColorableInstance colorableInstance = outline.GetComponent <ColorableInstance>();

        colorableInstance.MakeColoredModel();

        outline.SetActive(true);
        outline.transform.parent        = OutlinedModelSlot.transform;
        outline.transform.localPosition = new Vector3(0, 0, outline.transform.localPosition.z);
        outline.transform.localScale    = colorableInstance.Colorable.ModelScale;


        // ENEMY ColoredModel
        colorableInstance = monster.GetComponent <ColorableInstance>();
        colorableInstance.MakeModel();

        monster.SetActive(true);
        monster.transform.parent        = ModelSlot.transform;
        monster.transform.localPosition = new Vector3(0, 0, monster.transform.localPosition.z);
        monster.transform.localScale    = colorableInstance.Colorable.ModelScale;


        if (EnemiesAssignedToScene == false)
        {
            SetBlackBackgroundToEnvironmentEnemies();
        }
        SetBlackBackgroundToEnvironmentEnemies(holder);
    }
示例#2
0
    internal void TryInsertToEnvironment(Dungeon dungeon)
    {
        this.dungeon = dungeon;

        AssignDungeonBackground(dungeon.DungeonConstants.background);

        MonsterHolder[] monsterHolder = dungeon.GetAllMonsters();

        // Max size .. the middle should be 0
        float size             = (monsterHolder.Length - 1) * EnemiesOffset;
        float currentXPosition = -size / 2;

        for (int i = 0; i < monsterHolder.Length; i++)
        {
            ColorableInstance colorableInstance = monsterHolder[i].MonsterOutlined.GetComponent <ColorableInstance>();
            colorableInstance.MakeColoredModel();
            GameObject sceneMonster = monsterHolder[i].SceneMonster;



            //sceneMonster.transform.parent = BackgroundSlot.transform;
            sceneMonster.transform.parent        = BackgroundHolderObject.transform;
            sceneMonster.transform.localScale    = colorableInstance.Colorable.EnvironmentScale;
            sceneMonster.transform.localPosition = new Vector3(currentXPosition, colorableInstance.Colorable.YEnvironmentOffset, -3.5f);

            currentXPosition += EnemiesOffset;
        }

        EnemiesAssignedToScene = true;
    }
示例#3
0
    private void PickMonster()
    {
        if (!currentDungeon.IsAvailable())
        {
            if (CurrentDungeonIndex == MaxLevels)
            {
                // The player has won
                currentState = GameState.Won;

                return;
            }

            currentState = GameState.Generating;
            timer.Reset();
            colorWheel.Deactivate();

            LabelCreator.Instance.CreateLabelEvent("Next wave!", 3f, new Color(1, 0, 0, 1));

            return;
        }

        currentMonsterHolder     = currentDungeon.NextMonster();
        currentColorableInstance = currentMonsterHolder.MonsterOutlined.GetComponent <ColorableInstance>();
        coloredSections          = 0;

        currentState = GameState.CreatingScene;
    }
示例#4
0
    public ColorableInstance AddColorableInstance(GameObject obj, Colorable colorable)
    {
        ColorableInstance instance = obj.AddComponent <ColorableInstance>();

        instance.Colorable = colorable;

        return(instance);
    }
示例#5
0
    public ColorableInstance AddRandomColorableInstance(GameObject obj)
    {
        ColorableInstance instance = obj.AddComponent <ColorableInstance>();

        instance.Colorable = GetRandmColorable();

        return(instance);
    }
示例#6
0
    private void SetBlackBackgroundToEnvironmentEnemies(MonsterHolder holder)
    {
        ColorableInstance colorableInstance = holder.SceneMonster.GetComponent <ColorableInstance>();

        int _size = colorableInstance.Colorable.Sections.Length;

        for (int j = 0; j < _size; j++)
        {
            colorableInstance.SetColor(j, new Color(0, 0, 0, 0.4f));
            colorableInstance.TurnOnLayer(ColorableInstance.LAYER_TYPE.COLORS, j);
        }
    }
示例#7
0
    // Creates new monster from dungeonConstants
    private GameObject createNewMonster()
    {
        GameObject colorableObject = new GameObject();

        // Get a random colorable instance
        ColorableInstance colorableInstance = AddRandomColorableInstance(colorableObject);

        InitializeBaseLayers(colorableInstance, colorableObject);
        InitializeSections(colorableInstance, colorableObject);

        return(colorableObject);
    }
示例#8
0
    public MonsterHolder CreateMonsters()
    {
        MonsterHolder monsterHolder = new MonsterHolder();

        monsterHolder.Init(createNewMonster());

        ColorableInstance monsterOutlinedColorable = monsterHolder.MonsterOutlined.GetComponent <ColorableInstance>();
        ColorableInstance SceneMonsterColorable    = monsterHolder.SceneMonster.GetComponent <ColorableInstance>();

        monsterOutlinedColorable.Sibling = SceneMonsterColorable;

        SceneMonsterColorable.DisableColliders();
        monsterHolder.MonsterModel.GetComponent <ColorableInstance>().DisableColliders();

        return(monsterHolder);
    }
示例#9
0
    private GameObject[] AddLayers(ColorableInstance colorableInstance, GameObject originalObject, int startDepth)
    {
        Colorable colorable = colorableInstance.Colorable;

        // Get all layers
        Sprite[]     layers       = colorable.GetAllLayers();
        GameObject[] layerObjects = new GameObject[layers.Length];

        // Z axis depth
        int depth = startDepth;

        for (int i = 0; i < layers.Length; i++)
        {
            if (layers[i] == null)
            {
                layerObjects[i] = null;
                continue;
            }

            GameObject gameObject = new GameObject();
            gameObject.name = "Layer" + i;

            // Add the sprite renderer
            SpriteRenderer spriteRenderer = gameObject.AddComponent <SpriteRenderer>();
            spriteRenderer.sprite       = layers[i];
            gameObject.transform.parent = originalObject.transform;

            // Change the depth
            Vector3 newPosition = gameObject.transform.localPosition;
            newPosition.z = depth;
            depth--;
            gameObject.transform.localPosition = newPosition;

            layerObjects[i] = gameObject;
        }

        return(layerObjects);
    }
示例#10
0
    private void InitializeSections(ColorableInstance colorableInstance, GameObject colorableObject)
    {
        int depth = 10;

        Sprite[]     sectionColorLayers = GetSectionColorLayers(colorableInstance.Colorable);
        GameObject[] layerObjects       = new GameObject[sectionColorLayers.Length];

        Colorable colorable = colorableInstance.Colorable;

        List <ColorableSectionInstance> sectionInstances = new List <ColorableSectionInstance>();

        SectionSelector sectionSelector = null;

        for (int i = 0; i < sectionColorLayers.Length; i++)
        {
            if (sectionColorLayers[i] == null)
            {
                layerObjects[i] = null;
                continue;
            }

            GameObject gameObject = new GameObject();
            gameObject.name = "Section: " + i;

            gameObject.AddComponent <ColorChanger>();

            // Create the 2D box collider, add it to Collision Sprite Renderer

            /*if (i == 0)
             * {
             *  sectionSelector = gameObject.AddComponent<SectionSelector>();
             * }*/

            // Create sprite renderer
            SpriteRenderer spriteRenderer = gameObject.AddComponent <SpriteRenderer>();
            spriteRenderer.sprite       = sectionColorLayers[i];
            gameObject.transform.parent = colorableObject.transform;

            ColorableSectionInstance sectionInstance = gameObject.AddComponent <ColorableSectionInstance>();
            sectionInstance.ColorableSection = colorableInstance.Colorable.Sections[i];
            sectionInstances.Add(sectionInstance);

            // Collision object

            GameObject collisionGameObject = new GameObject();
            collisionGameObject.name = "Collision: " + i;

            // Create sprite renderer
            SpriteRenderer collisionSpriteRenderer = collisionGameObject.AddComponent <SpriteRenderer>();
            collisionSpriteRenderer.sprite       = colorableInstance.Colorable.Sections[i].SelectionLayer;
            collisionGameObject.transform.parent = gameObject.transform;
            collisionSpriteRenderer.enabled      = false;

            BoxCollider2D meshCollider = collisionGameObject.AddComponent <BoxCollider2D>();

            // Change the depth
            Vector3 newPosition = gameObject.transform.localPosition;
            newPosition.z = depth;
            depth--;
            gameObject.transform.localPosition = newPosition;

            layerObjects[i] = gameObject;
        }

        colorableInstance.InitializeSectionInstances(sectionInstances.ToArray());
    }
示例#11
0
 private void InitializeBaseLayers(ColorableInstance colorableInstance, GameObject colorableObject)
 {
     GameObject[] layerObjects = AddLayers(colorableInstance, colorableObject, 0);
     colorableInstance.InitializeLayers(layerObjects);
 }