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); }
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; }
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; }
public ColorableInstance AddColorableInstance(GameObject obj, Colorable colorable) { ColorableInstance instance = obj.AddComponent <ColorableInstance>(); instance.Colorable = colorable; return(instance); }
public ColorableInstance AddRandomColorableInstance(GameObject obj) { ColorableInstance instance = obj.AddComponent <ColorableInstance>(); instance.Colorable = GetRandmColorable(); return(instance); }
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); } }
// 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); }
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); }
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); }
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()); }
private void InitializeBaseLayers(ColorableInstance colorableInstance, GameObject colorableObject) { GameObject[] layerObjects = AddLayers(colorableInstance, colorableObject, 0); colorableInstance.InitializeLayers(layerObjects); }