public void Update() { if (WorldInitializer.storyKnot != null && WorldInitializer.storyKnot.Length > 0) { StartCoroutine(StoryFunctionBindings.GetBindings().interact(WorldInitializer.storyKnot)); WorldInitializer.storyKnot = null; } if (currentAttachement != null && player != null) { Vector3 playerPos = player.transform.position; Vector2 minOffset = playerPos - worldBounds.min; Vector2 maxOffset = playerPos - worldBounds.max; for (int i = 0; i < mapDirection.Length; ++i) { if (currentAttachement.attachments[i] != null && currentAttachement.attachments[i] != "" && Vector2.Dot(minOffset, mapDirection[i]) > 0 && Vector2.Dot(maxOffset, mapDirection[i]) > 0) { string nextMap = currentAttachement.attachments[i]; Reset(); SpawnMapPair(nextMap, new Vector3( Mathf.Lerp(worldBounds.min.x, worldBounds.max.x, currentBoundsAnchor[i].x), Mathf.Lerp(worldBounds.min.y, worldBounds.max.y, currentBoundsAnchor[i].y), 0.0f ), newBoundAnchor[i] ); break; } } } }
public virtual IEnumerator interact() { if (storyEntryPoint != null) { var other = StoryFunctionBindings.GetBindings().interact(storyEntryPoint); while (other.MoveNext()) { yield return(other.Current); } } else { yield return(null); } }
public static IEnumerator Start(DarknessOverlay darkness, AnimationController playerAnimator, SpriteRenderer playerSpriteRenderer, Flasher damageFlasher) { damageFlasher.enabled = false; Time.timeScale = 0.0f; float spinTime = 2.0f; float spinRate = 16.0f; float endSpinRate = 2.0f; float spinRateChange = (endSpinRate - spinRate) / spinTime; float angle = 0.0f; float startRadius = 12.0f; float endRadius = 0.0f; float darkesRadius = startRadius; float radiusChangeRage = (endRadius - startRadius) / spinTime; playerSpriteRenderer.sortingLayerName = "Overlay"; int animation = darkness.StartAnimation(); darkness.SetColor(Color.black, animation); playerAnimator.SetFloat("Distance", 0.0f); while (spinTime > 0.0f) { playerAnimator.SetInteger("Direction", Mathf.FloorToInt(angle)); angle += spinRate * Time.unscaledDeltaTime; spinRate += spinRateChange * Time.unscaledDeltaTime; spinTime -= Time.unscaledDeltaTime; darkness.UpdateValues(playerAnimator.transform.position, darkesRadius, animation); darkesRadius += radiusChangeRage * Time.unscaledDeltaTime; yield return(null); } playerAnimator.SetInteger("Direction", 0); yield return(new WaitForSecondsRealtime(1.0f)); GameObject.FindGameObjectWithTag("GameController").GetComponent <WorldController>().SwitchTo(MapDirections.Dead); playerAnimator.SetBool("Dead", true); yield return(new WaitForSecondsRealtime(1.0f)); while (darkesRadius < startRadius) { darkesRadius -= 2.0f * radiusChangeRage * Time.unscaledDeltaTime; darkness.UpdateValues(playerAnimator.transform.position, darkesRadius, animation); yield return(null); } playerAnimator.SetBool("Dead", false); darkness.EndAnimation(animation); playerSpriteRenderer.sortingLayerName = "Default"; Time.timeScale = 1.0f; yield return(null); yield return(StoryFunctionBindings.GetBindings().interact("on_player_death")); }