private IEnumerator MagicWandCoroutine(WallBase wall) { MainGameSceneMonoBehavior.Instance.SpeedMultiplier = 0; this.GetComponent <Animator>().SetBool("TriggerMagic", true); yield return(new WaitForSeconds(0.5f)); GameObject powerUp = wall.GetRandomPowerUp(); powerUp.SetActive(true); wall.Chest.SetActive(true); var TargetPosition = new Vector3(-1.15f, 4.0f, 1.46f); //var TargetPosition = new Vector3(-1.15f, 5.51f, -3.54f); HelperFunctions.MoveObejectTowardsPosition(this, wall.Chest, TargetPosition, 20.0f); yield return(new WaitForSeconds(3.0f)); MainGameSceneMonoBehavior.Instance.SpeedMultiplier = 1; //yield return new WaitForSeconds(1.0f); RemoveStoreObjectFromGamePlay(); //yield return new WaitForSeconds(0.5f); wall.ConvertColorBall = true; //HelperFunctions.MoveObejectTowardsPosition(this, powerUp, TargetPosition, 20.0f); //wall.ColorBallTriggered = true; yield return(new WaitForSeconds(1.0f)); //MainGameSceneMonoBehavior.Instance.AddGemToMeter(); }
public void Setup(WallBase wall) { this.wall = wall; mineButton.onClick.AddListener(() => MineAction()); RefreshUI(); }
public void SelectTile(TaskableBase tile) { DeselectTile(); selectedObject = tile; selectedIcon.SetActive(true); selectedIcon.transform.parent = selectedObject.transform; selectedIcon.transform.position = selectedObject.transform.position; BuildingBase buildingObject = tile.GetComponent <BuildingBase>(); WallBase wallObject = tile.GetComponent <WallBase>(); HaulableBase haulObject = tile.GetComponent <HaulableBase>(); if (buildingObject) { if (buildingObject.currentTask) { taskActionBarInstance = Instantiate(taskActionBarPrefab, transform); taskActionBarInstance.Setup(buildingObject); } else { buildingActionBarInstance = Instantiate(buildingActionBarPrefab, transform); buildingActionBarInstance.Setup(buildingObject); FactoryBase factoryObject = buildingObject.GetComponent <FactoryBase>(); if (factoryObject) { factoryActionBarInstance = Instantiate(factoryActionBarPrefab, transform); factoryActionBarInstance.Setup(factoryObject); } } } else if (wallObject) { if (wallObject.currentTask) { taskActionBarInstance = Instantiate(taskActionBarPrefab, transform); taskActionBarInstance.Setup(wallObject); } else { wallActionBarInstance = Instantiate(wallActionBarPrefab, transform); wallActionBarInstance.Setup(wallObject); } } else if (haulObject) { if (haulObject.currentTask) { taskActionBarInstance = Instantiate(taskActionBarPrefab, transform); taskActionBarInstance.Setup(haulObject); } else { haulableActionBarInstance = Instantiate(haulableActionBarPrefab, transform); haulableActionBarInstance.Setup(haulObject); } } }
// Collision check to verify whether the player got hurt by the paint ball public void OnCollisionEnter(Collision collision) { if (collision.collider.CompareTag("WallMidPoint")) { GameObject wallGO = collision.collider.transform.parent.gameObject; if (wallGO != null) { WallBase wallScript = wallGO.GetComponent <WallBase>(); if (wallScript != null && !wallScript.IsNonWindowWall && !wallScript.Closed && !wallScript.ColorBallTriggered && !wallScript.ConvertColorBall) { GameObject ColorBall = wallScript.GetRandomColorBall(); ColorBall.SetActive(true); ColorBall.GetComponent <Animator>().SetBool("Fade", FadeColorBallsOnShoot); ColorBall.transform.parent = ColorBallsParent.transform; SoundController.Instance.GunShot.Play(); var TargetPosition = Camera.main.transform.position; //new Vector3(4.15f, 5.51f, -3.54f); HelperFunctions.MoveObejectTowardsPosition(this, ColorBall, TargetPosition, 20.0f); wallScript.ColorBallTriggered = true; //AchievementRecordController.Instance.IncrementMissWindowAchievements(); if (mainGameSceneMB.CurrentLevel.isLoadStatic) { wallDestroyer.DestroyAllWallsInList(); } } } } else if (collision.collider.CompareTag("WinnerWall")) { mainGameSceneMB.SpeedMultiplier = 0; EndGame(); } }
private IEnumerator CloseWindowCoroutine(WallBase wall) { Witch.GetComponent <Animator>().SetTrigger("CloseWindow"); yield return(new WaitForSeconds(0.5f)); wall.ClosingBegan = true; wall.Closed = true; }
void CheckWallDestroyed(TaskableBase destroyedObject) { WallBase wall = destroyedObject.GetComponent <WallBase>(); if (wall) { if (TilemapManager.instance.wallTilemap.WorldToCell(wall.transform.position) == TilemapManager.instance.depositTilemap.WorldToCell(this.transform.position)) { DestroySelf(); } } }
public void OnCollisionEnter(Collision collision) { if (collision.collider.CompareTag("WallMidPoint")) { GameObject wallGO = collision.collider.transform.parent.gameObject; if (wallGO != null) { WallBase wallScript = wallGO.GetComponent <WallBase>(); if (wallScript != null && !wallScript.IsNonWindowWall) { wallScript.ReportNearMiss = true; } } } }
public void OnCollisionEnter(Collision collision) { if (collision.collider.CompareTag("WallMidPoint")) { GameObject wallGO = collision.collider.transform.parent.gameObject; if (wallGO != null) { WallBase wallScript = wallGO.GetComponent <WallBase>(); if (wallScript != null && !wallScript.IsNonWindowWall) { //SoundController.Instance.Warning.Play(); } } } }
public void OnTriggerEnter(Collider collider) { if (collider.CompareTag("WallMidPoint")) { GameObject wallGO = collider.transform.parent.gameObject; if (wallGO != null) { WallBase wallScript = wallGO.GetComponent <WallBase>(); if (wallScript != null && !wallScript.IsNonWindowWall) { StartCoroutine(ShootBackCoroutine(wallScript)); } } } }
public void EvaluateTouchForMainGame(Touch touch) { Vector3 mPosition = new Vector3(touch.position.x, touch.position.y, 10.0f); var rayOrigin = Camera.main.ScreenToWorldPoint(mPosition); RaycastHit hitInfo; Physics.Raycast(new Vector3(rayOrigin.x, rayOrigin.y, rayOrigin.z), Camera.main.transform.forward, out hitInfo); if (hitInfo.collider != null && hitInfo.collider.gameObject.name == "SwipePad") { if (touch.phase == TouchPhase.Began) { startPosition = new Vector3(touch.position.x, touch.position.y, 10.0f); hitInfo.collider.transform.parent.parent.parent.GetComponent <WallBase>().ClosingBegan = true; } else if (touch.phase == TouchPhase.Moved) { WallBase wallScript = hitInfo.collider.transform.parent.parent.parent.GetComponent <WallBase>(); if (!wallScript.ColorBallTriggered) { wallScript.CheckIfWindowClosed(startPosition); } } else if (touch.phase != TouchPhase.Began && touch.phase != TouchPhase.Stationary) { } } //if (touch.phase == TouchPhase.Moved || touch.phase == TouchPhase.Stationary || touch.phase == TouchPhase.Began) //{ RaycastHit gemHitInfo; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); bool raycasted = Physics.Raycast(ray, out gemHitInfo, 100.0f, LayerMask.GetMask("Gem")); if (raycasted) { if (gemHitInfo.collider != null) { if (gemHitInfo.collider.CompareTag("Gem")) { //MainGameSceneMonoBehavior.Instance.AddGemToMeter(5); Destroy(gemHitInfo.collider.gameObject); } } } //} }
// Tells all neighbors to check their surroundings and update their shading public virtual void UpdateNeighbors() { foreach (Vector2 direction in neighborDirections) { Vector3Int cell = TilemapManager.instance.wallTilemap.WorldToCell(this.transform.position + (Vector3)direction); GameObject cellObj = TilemapManager.instance.wallTilemap.GetInstantiatedObject(cell); if (cellObj) { WallBase neighborWall = cellObj.GetComponent <WallBase>(); if (neighborWall && neighborWall.isAlive) { neighborWall.CheckNeighbors(); neighborWall.UpdateShading(); } } } }
public void OnCollisionEnter(Collision collision) { if (collision.collider.CompareTag("WallMidPoint")) { WallBase wallScript = collision.collider.transform.parent.GetComponent <WallBase>(); //if (Instance.TrainerOn) if (wallScript != null && wallScript.shouldPauseForTrainer) { mainGameSceneMB.SpeedMultiplier = 0; //TutorialUI.SetActive(true); TrainerSkipped = false; TutorialAnimator.SetInteger("Gesture", (int)wallScript.tutorialGesture); Instruction.text = wallScript.TutorialInstruction; float startTime = Time.time; SkipButton.SetActive(true); StartCoroutine(ResumeAfterFiveSeconds(wallScript, startTime)); } } }
private IEnumerator ShootBackCoroutine(WallBase wall) { this.GetComponent <Animator>().SetBool("TriggerBall", true); SoundController.Instance.GunShot.Play(); MainGameSceneMonoBehavior.Instance.SpeedMultiplier = 0; Ball.SetActive(true); wall.HeadTarget.SetActive(true); var TargetPosition = wall.HeadTarget.transform.position; HelperFunctions.MoveObejectTowardsPosition(this, Ball, TargetPosition, 20.0f); yield return(new WaitForSeconds(1.0f)); wall.FluidOverHead.SetActive(true); wall.HeadTarget.SetActive(false); SoundController.Instance.Splash.Play(); MainGameSceneMonoBehavior.Instance.SpeedMultiplier = 1; RemoveStoreObjectFromGamePlay(); wall.ColorBallTriggered = true; }
private IEnumerator ResumeAfterFiveSeconds(WallBase wallScript, float startTime) { while (((wallScript.IsNonWindowWall && !wallScript.ClosingBegan) || (!wallScript.IsNonWindowWall && !wallScript.Closed)) && !TrainerSkipped) { if (Time.time - startTime > 5.0f) { break; } yield return(new WaitForEndOfFrame()); } //yield return new WaitForSeconds(5.0f); mainGameSceneMB.SpeedMultiplier = 1; Instruction.text = string.Empty; TutorialAnimator.SetInteger("Gesture", 0); SkipButton.SetActive(false); SwitchTrainerOn(false); if (SwitchOffCallback != null) { SwitchOffCallback(); } yield return(new WaitForSeconds(1.0f)); }
// Called on events that should refresh the menu void RefreshMenus(TaskableBase taskable) { if (taskable && taskable == selectedObject) { if (taskable.currentTask) { // Create or update task action bar if (taskActionBarInstance) { taskActionBarInstance.RefreshUI(); } else { taskActionBarInstance = Instantiate(taskActionBarPrefab, transform); taskActionBarInstance.Setup(selectedObject); } // clean up building and wall action bars if (buildingActionBarInstance) { Destroy(buildingActionBarInstance.gameObject); } if (wallActionBarInstance) { Destroy(wallActionBarInstance.gameObject); } if (factoryActionBarInstance) { Destroy(factoryActionBarInstance.gameObject); } if (haulableActionBarInstance) { Destroy(haulableActionBarInstance.gameObject); } } else { // Clean up task action bar if (taskActionBarInstance) { Destroy(taskActionBarInstance.gameObject); } // refresh building and wall action bars BuildingBase buildingObject = taskable.GetComponent <BuildingBase>(); WallBase wallObject = taskable.GetComponent <WallBase>(); HaulableBase haulObject = taskable.GetComponent <HaulableBase>(); if (buildingObject) { if (buildingActionBarInstance) { buildingActionBarInstance.RefreshUI(); } else { buildingActionBarInstance = Instantiate(buildingActionBarPrefab, transform); buildingActionBarInstance.Setup(buildingObject); } FactoryBase factoryObject = buildingObject.GetComponent <FactoryBase>(); if (factoryObject) { if (factoryActionBarInstance) { factoryActionBarInstance.RefreshUI(); } else { factoryActionBarInstance = Instantiate(factoryActionBarPrefab, transform); factoryActionBarInstance.Setup(factoryObject); } } } else if (wallObject) { if (wallActionBarInstance) { wallActionBarInstance.RefreshUI(); } else { wallActionBarInstance = Instantiate(wallActionBarPrefab, transform); wallActionBarInstance.Setup(wallObject); } } else if (haulObject) { if (haulableActionBarInstance) { haulableActionBarInstance.RefreshUI(); } else { haulableActionBarInstance = Instantiate(haulableActionBarPrefab, transform); haulableActionBarInstance.Setup(haulObject); } } } } }
public bool TileCollisions(bool tileCollide = true, bool tileTrigger = true, float wallDrag = 0.9f) { bool collided = false; for (int i = -1; i < 2; i++) { for (int j = -1; j < 2; j++) { //if (position == oldPosition) // return collided; disabled because may cause issues with OnCollide hooks on some tiles, enable later and try again Point currentTilePos = Center.WorldToTileCoords() + new Point(i, j); if (currentWorld.IsTileInWorld(currentTilePos)) { //these are by reference iirc FloorBase floorBase = currentWorld.floorLayer[currentTilePos.X, currentTilePos.Y].Base; if (Collide(currentTilePos, floorBase.CollisionRect(), tileCollide ? floorBase.IsSolid() : false) && tileTrigger) { //TODO TODO } WallBase wallBase = currentWorld.wallLayer[currentTilePos.X, currentTilePos.Y].Base; if (Collide(currentTilePos, wallBase.CollisionRect(), tileCollide ? wallBase.IsSolid() : false) && tileTrigger) { //TODO TODO } ObjectBase objectBase = currentWorld.objectLayer[currentTilePos.X, currentTilePos.Y].Base; if (Collide(currentTilePos, objectBase.CollisionRect(), tileCollide ? objectBase.IsSolid() : false) && tileTrigger) { //TODO //tileBase.OnCollide(this) } } } } return(collided); bool Collide(Point location, Rectangle[] rectList, bool solid) { bool hasCollided = false; foreach (Rectangle tileRect in rectList) { Rectangle testRect = new Rectangle(location.TileToWorldCoords() + tileRect.Location, tileRect.Size); if (testRect.Intersects(Rect)) { if (solid)//if solid, so position changing stuff, else just return { if (testRect.Intersects(OldRect)) { //anti-stuck position += Vector2.Normalize((Rect.Center - testRect.Center).ToVector2()) * 2; //multiplier at the ned is the distance it moves (speed) } else { if (testRect.Intersects(new Rectangle(new Point((int)position.X, (int)oldPosition.Y), size.ToPoint()))) { position.X = oldPosition.X; velocity.X = 0; velocity.Y *= wallDrag; } if (testRect.Intersects(new Rectangle(new Point((int)oldPosition.X, (int)position.Y), size.ToPoint()))) { position.Y = oldPosition.Y; velocity.Y = 0; velocity.X *= wallDrag; } } } hasCollided = true; } } if (hasCollided) { collided = true; } return(hasCollided); } }