void Awake() { Instance = this; Stars = new Dictionary <Guid, GameData.Star>(); Links = new List <GameData.Link>(); LastStar = null; }
protected void CheckStrandedStar(GameData.Star star) { if (star.LinkedStars.Count <= 0) { star.Controller.StartMovement(); Stars.Remove(star.StarId); } }
protected void CheckStrandedStar(GameData.Star star) { if (star.LinkedStars.Count <= 0) { Debug.Log("Releasing Star"); star.Controller.StartMovement(); Stars.Remove(star.StarId); } }
void Start() { Constellations = new List <GameData.Constellation>(); var testStar1 = new GameData.Star(Vector3.zero); var testStar2 = new GameData.Star(new Vector3(0, 0, 1)); var testStar3 = new GameData.Star(new Vector3(0, 1, 0)); var testStar4 = new GameData.Star(new Vector3(1, 0, 0)); AddStar(testStar1); AddStar(testStar2); AddStar(testStar3); AddStar(testStar4); }
void Awake() { starData = new GameData.Star(this); starRenderer = GetComponentInChildren <MeshRenderer>(); starMaterial = GetComponentInChildren <MeshRenderer>().material; startColor = starMaterial.color; startEmissionColor = starMaterial.GetColor("_EmissionColor"); startSpecularColor = starMaterial.GetColor("_SpecColor"); properties = new MaterialPropertyBlock(); starMaterial.SetFloat("_Mode", 3f); starMaterial.EnableKeyword("_ALPHAPREMULTIPLY_ON"); }
protected void BreakStarLink(GameData.Constellation constellation, Guid starId) { var star = constellation.Stars[starId]; //Remove star from linked stars for (int i = 0; i < star.LinkedStars.Count; i++) { if (constellation.Stars.ContainsKey(star.LinkedStars[i])) { GameData.Star linkedStar = constellation.Stars[star.LinkedStars[i]]; linkedStar.LinkedStars.Remove(star.StarId); } } //Get all involved links List <GameData.Link> removedLinks = new List <GameData.Link>(); for (int i = 0; i < constellation.Links.Count; i++) { if (constellation.Links[i].StarIds.Contains(star.StarId)) { removedLinks.Add(constellation.Links[i]); } } //Destroy Link for (int i = 0; i < removedLinks.Count; i++) { GameData.Link link = removedLinks[i]; constellation.Stars[link.StarIds[0]].LinkedStars.Remove(constellation.Stars[link.StarIds[1]].StarId); constellation.Stars[link.StarIds[1]].LinkedStars.Remove(constellation.Stars[link.StarIds[0]].StarId); Destroy(link.LineComponent.gameObject); constellation.Links.Remove(link); } //Return to original layer star.Controller.UpdateLayerToStar(); //Remove star from constellation constellation.Stars.Remove(starId); PooledObject pool = star.Controller.gameObject.GetComponent <PooledObject>(); pool.ReturnToPool(); }
public void AddStar(GameData.Star star) { //If star not already stored if (!Stars.ContainsKey(star.StarId)) { Stars.Add(star.StarId, star); } //There is a last star if (LastStar != null) { //Is not currently linked to star if (!LastStar.LinkedStars.Contains(star.StarId)) { //Link Stars to Eachother LastStar.LinkedStars.Add(star.StarId); star.LinkedStars.Add(star.StarId); //Create Link var link = new GameData.Link(); link.StarIds.Add(LastStar.StarId); link.StarIds.Add(star.StarId); //Create Link Object var linkObject = Instantiate(LinkPrefab); var line = linkObject.GetComponent <LineRenderer>(); if (StarLinkParent != null) { linkObject.transform.SetParent(StarLinkParent); linkObject.transform.localScale = Vector3.one; } link.LineComponent = line; link.StartPos = LastStar.Position; link.EndPos = star.Position; line.SetPosition(0, link.StartPos); line.SetPosition(1, link.EndPos); Links.Add(link); } } LastStar = star; }
void OnTriggerEnter(Collider hit) { StarController isStar = hit.GetComponent <StarController>(); if (isStar) { if (isStar == lastStar) { lastStar = null; constManager.BreakConstellation(); } else { lastStar = isStar; isStar.StopMovement(); GameData.Star constStar = new GameData.Star(isStar.transform.position); constManager.AddStar(constStar); } } }
protected void StarToCometCollision(GameData.Constellation constellation, Guid starId) { if (constellation.Stars.ContainsKey(starId)) { GameData.Star star = constellation.Stars[starId]; //Explosion Vector3 particlePosition = constellation.Stars[starId].Controller.gameObject.transform.position; particlePosition.y += 1f; Instantiate(starHitCometParticle, particlePosition, Quaternion.identity); //Pushback float strength = GameData.baseStrength + (GameData.strengthMultiplier * star.LinkedStars.Count); GameController.TriggerCometCollision(strength, GameData.cometCollisionSpeed); BreakStarLink(constellation, starId); if (constellation.Stars.Count <= 0) { Destroy(constellation.ConstellationParent); } AudioController.Instance.PlaySfx(SoundBank.SoundEffects.ConstellationHit); } }
public void AddStar(GameData.Star star) { //If star not already stored if (!Stars.ContainsKey(star.StarId)) { Stars.Add(star.StarId, star); } //There is a last star if (LastStarId != null) { GameData.Star lastStar = Stars[(Guid)LastStarId]; //Is not currently linked to star if (!lastStar.LinkedStars.Contains(star.StarId) || !star.LinkedStars.Contains(lastStar.StarId)) { //Error Checking - make sure links are being properly linked to both stars if (lastStar.LinkedStars.Contains(star.StarId) != star.LinkedStars.Contains(lastStar.StarId)) { Debug.Log("Previous Linkes weren't properly created"); } //Link Stars to Eachother if (!lastStar.LinkedStars.Contains(star.StarId)) { lastStar.LinkedStars.Add(star.StarId); } if (!star.LinkedStars.Contains(lastStar.StarId)) { star.LinkedStars.Add(lastStar.StarId); } //Create Link var link = new GameData.Link(); link.StarIds.Add(lastStar.StarId); link.StarIds.Add(star.StarId); //Create Link Object var linkObject = Instantiate(LinkPrefab); var line = linkObject.GetComponent <LineRenderer>(); line.useWorldSpace = false; if (StarLinkParent != null) { linkObject.transform.SetParent(StarLinkParent); linkObject.transform.localScale = Vector3.one; } link.LineComponent = line; link.StartPos = lastStar.Position; link.EndPos = star.Position; line.SetPosition(0, new Vector3(link.StartPos.x, link.StartPos.y, 1f)); line.SetPosition(1, new Vector3(link.EndPos.x, link.EndPos.y, 1f)); Links.Add(link); InvincibilityCountdown = InvincibiltyCountdownMax; } } LastStarId = star.StarId; }
public bool CompleteConstellation() { Debug.Log("Complete Constellation"); if (Stars.Count >= GameData.minimumStars) { LastStarId = null; var constellation = new GameData.Constellation(); constellation.Stars = new Dictionary <Guid, GameData.Star>(Stars); constellation.Links = new List <GameData.Link>(Links); GameObject constellationParent = new GameObject("Constellation"); constellation.ConstellationParent = constellationParent; GameObject constellationBackgorund = new GameObject("Background"); constellationBackgorund.transform.SetParent(constellationParent.transform); constellationBackgorund.transform.position = GetAverageStarPosition(new List <GameData.Star>(constellation.Stars.Values).ToArray()); SpriteRenderer bgSpriteRenderer = constellationBackgorund.AddComponent <SpriteRenderer>(); bgSpriteRenderer.sprite = GetRandomConstellationImage(); bgSpriteRenderer.color = ConstellationBackgroundColor; string constellationName = GenerateConstellationName(Stars.Keys.Count); constellation.ConstellationName = constellationName; Debug.Log("Constellation Name:" + constellationName); var keys = new List <Guid>(constellation.Stars.Keys); for (int i = 0; i < keys.Count; i++) { Guid key = keys[i]; GameData.Star star = constellation.Stars[key]; star.Controller.UpdateLayerToSendStar(); star.Controller.starTriggered.AddListener(() => StarToCometCollision(constellation, key)); star.Controller.gameObject.transform.SetParent(constellationParent.transform); } for (int i = 0; i < constellation.Links.Count; i++) { constellation.Links[i].LineComponent.gameObject.transform.SetParent(constellationParent.transform); } //Send data to Visualization and score //Score int score = GameData.scorePerStar; float totalConnections = 1 + (GameData.scoreConnectionMulti * constellation.Links.Count); float totalStars = 1 + (GameData.constSizeMulti * constellation.Stars.Count); GameController.TriggerAddScore((int)((score * totalConnections) * totalStars)); UiController.TriggerScoreData(constellation.Stars.Count, constellation.Links.Count, score, constellationName); Stars.Clear(); Links.Clear(); UiController.TriggerConstellationEvent(constellationParent); //Create Mini CreateDisplayConstellation(constellation); Tweener tween = constellation.ConstellationParent.transform.DOMoveY(GameData.cometStartY * 2, GameData.sendSpeed).SetEase(Ease.InOutBack); tween.OnComplete(() => DestroyConstellation(constellation)); AudioController.Instance.PlaySfx(SoundBank.SoundEffects.ConstellationComplete); AudioController.Instance.PlayAtEnd(AudioController.Instance.effectBus[(int)SoundBank.SoundEffects.ConstellationComplete], SoundBank.Instance.Request(SoundBank.SoundEffects.ConstellationSent), false); //StartCoroutine(ConstellationFlyAway(constellation)); return(true); } else { return(false); } }