void NextBattle() { if (encounters.Count >= 1) { encounterNumber = Random.Range(0, encounters.Count); currentEncounter = encounters[encounterNumber]; encounters.Remove(currentEncounter); Debug.Log(currentEncounter.myNumber); InitBattle(); } else { Debug.Log("Finished!"); infoText.text = "Finished!"; } }
public void AddNext(EncounterObject e) { nextEncs.Add(e); }
public void GenerateEncounterGraph() { foreach (Transform child in floorMapContainer) { Destroy(child.gameObject); } const float xPadding = 1f; const float xStart = -3.5f; const float yPadding = 1f; // Generate an encounter graph with 6 layers List <int> layerWidths = new List <int>() { 2, 2, 3, 3 }; layerWidths.Add(Random.Range(2, 4)); layerWidths.Add(Random.Range(2, 4)); List <int> layerWidthsInOrder = new List <int>(); while (layerWidths.Count > 0) { int i = UnityEngine.Random.Range(0, layerWidths.Count); layerWidthsInOrder.Add(layerWidths[i]); layerWidths.RemoveAt(i); } encounterObjects = new List <EncounterObject>(); List <EncounterObject> prevEncs; List <EncounterObject> currEncs; prevEncs = new List <EncounterObject>(); EncounterObject startEnc = Instantiate(encounterObjectPrefab, floorMapContainer).GetComponent <EncounterObject>(); startEnc.SetStart(this); startEnc.transform.position = Vector3.right * (xPadding * (xStart + 0)); prevEncs.Add(startEnc); encounterObjects.Add(startEnc); while (layerWidthsInOrder.Count > 0) { currEncs = new List <EncounterObject>(); int count = layerWidthsInOrder[0]; int x = 7 - layerWidthsInOrder.Count; float yStart = -(count - 1) / 2f; for (int i = 0; i < count; i++) { EncounterObject newEnc = Instantiate(encounterObjectPrefab, floorMapContainer).GetComponent <EncounterObject>(); newEnc.SetEncounter(new Encounter(), this); newEnc.transform.position = Vector3.right * (xPadding * (xStart + x)) + Vector3.forward * (yPadding * (yStart + i)); currEncs.Add(newEnc); encounterObjects.Add(newEnc); } // Connect prev to current (adjacent only) for (int i = 0; i < prevEncs.Count; i++) { EncounterObject pe = prevEncs[i]; float iv = i * 1f / prevEncs.Count; float id = 1 * 1f / prevEncs.Count; for (int j = 0; j < currEncs.Count; j++) { EncounterObject ce = currEncs[j]; float jv = j * 1f / currEncs.Count; float jd = 1 * 1f / currEncs.Count; if ((jv <= iv && jv + jd > iv) || (jv >= iv && jv - jd < iv) || (iv <= jv && iv + id > jv) || (iv >= jv && iv - id < jv)) { pe.AddNext(ce); } } } layerWidthsInOrder.RemoveAt(0); prevEncs = currEncs; } currEncs = new List <EncounterObject>(); EncounterObject endEnc = Instantiate(encounterObjectPrefab, floorMapContainer).GetComponent <EncounterObject>(); endEnc.SetEnd(this); endEnc.transform.position = Vector3.right * (xPadding * (xStart + 7)); currEncs.Add(endEnc); encounterObjects.Add(endEnc); // Connect prev to end foreach (EncounterObject pe in prevEncs) { pe.AddNext(endEnc); } // Update visual foreach (EncounterObject e in encounterObjects) { e.UpdateVisual(); } }
public void SetEncounterObject(EncounterObject e) { currentEncounterObject = e; }