void OnParticleCollision(GameObject other) { int numCollisionEvents = part.GetCollisionEvents(other, collisionEvents); Vector3 lastPos = Vector3.zero; for (int i = 0; i < numCollisionEvents; i++) { if (i == 1) { break; } if (Random.Range(1, 10) > 5) { break; } Vector3 pos = collisionEvents[i].intersection; if (pos != lastPos) { Splatter splat = Instantiate(_splatter, pos, Quaternion.identity); float scale = Random.Range(1.5f, 3f); splat.transform.localScale = new Vector3(scale, scale, scale); lastPos = pos; } } }
// Update is called once per frame void Update() { // If health <= 0 ghost is dead if (Health <= 0) { Handheld.Vibrate(); Instantiate(enemyDeath, transform.position, Quaternion.identity); Debug.Log("ded ghost"); Vector3 pos = new Vector3(transform.position.x, transform.position.y, -3.29f); Instantiate(BloodSplash, pos, Quaternion.identity); Splatter.randomColor = false; Splatter.gameObject.GetComponent <SpriteRenderer>().color = gameObject.GetComponent <SpriteRenderer>().color; Splatter splatterObj = (Splatter)Instantiate(Splatter, pos, Quaternion.identity); Destroy(gameObject); } // Make sure ghost isn't tilted // gameObject.transform.rotation = new Quaternion(); // Move towards target //if (GameObject.FindGameObjectWithTag("Player") != null) //{ // transform.position = Vector2.MoveTowards(transform.position, Target.position, Speed * Time.deltaTime); //} //// Jump if target is above //if (Target != null && (Vector2.Distance(transform.position, Target.position) < Distance && isJumping == false)) //{ // GhostBody.AddForce(transform.up * JumpForce * 100); // isJumping = true; //} }
// Update is called once per frame void Update() { if (Input.GetMouseButtonDown(0)) { Ray ray = new Ray(playWeapon.position, playWeapon.forward);//Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out RaycastHit hit, 100.0f)) { Splatter splatter = hit.collider.gameObject.GetComponent <Splatter>(); if (splatter != null) { splatter.Splat(ray.direction, hit.normal, hit.point); } } } if (Input.GetKey(KeyCode.W)) { transform.Translate(Vector3.forward * speed * Time.deltaTime); } if (Input.GetKey(KeyCode.S)) { transform.Translate(Vector3.back * (speed / 2) * Time.deltaTime); } transform.Rotate(new Vector3(0, Input.GetAxis("Mouse X"), 0) * Time.deltaTime * rotateSpeed); }
void Update() { if (!isDestroyed) { if (isFacingRight) { transform.position = new Vector3(transform.position.x + (shotSpeed * Time.deltaTime), transform.position.y, transform.position.z); } else { transform.position = new Vector3(transform.position.x - (shotSpeed * Time.deltaTime), transform.position.y, transform.position.z); } if (Math.Abs(lastSplatterLocation.x - transform.position.x) >= 1) { newSplatterObj = Instantiate(splatter, new Vector3(transform.position.x + (isFacingRight ? .5f : -.5f), transform.position.y - 1f, transform.position.z), Quaternion.identity) as Splatter; //newSplatterObj.transform.localScale = new Vector3(.6f, .6f, .6f); lastSplatterLocation = transform.position; newSplatterObj.ApplyStyle(); } Collider2D[] wallColliders = Physics2D.OverlapCircleAll(new Vector2(transform.position.x, transform.position.y), detectWallRadius); foreach (Collider2D coll in wallColliders) { if (coll.gameObject.CompareTag("PaintableSurfaceTag")) { isDestroyed = true; } } if (isDestroyed) { SplatToWall(); } } }
// Update is called once per frame void Update() { //Debug.Log(rb.velocity.magnitude); //Debug.Log(rb.velocity.magnitude); if (rb.velocity.magnitude <= DespawnThreshold) // Stop Ball if velocity is lower than Threshold. { rb.velocity = Vector3.zero; // DESPAWN THE BALL, UPDATE LEVEL CONTROLLER lc.DecreaseBalls(); } else if (rb.velocity.magnitude >= 50) { rb.velocity = rb.velocity.normalized * 50; } Vector3 curPos = transform.position; if (Vector3.Distance(oldPos, curPos) >= SplatDistanceThreshold && SplatColour >= 0) { Splatter splat = (Splatter)Instantiate(splatter, transform.position, Quaternion.identity); splat.transform.parent = GameObject.Find("SplatTrail").transform; //spawns the splatter splat.GetComponent <Splatter>().splatColour = SplatColour; //set the splatter color splat.GetComponent <Splatter>().randomColor = false; //make random false as we want the splatter color to the color we assigned splat.GetComponent <Splatter>().ApplyStyle(); //then apply the style oldPos = curPos; } }
//creates the splatter when moving and touching object with tag sureface void OnTriggerEnter2D(Collider2D other) { if (other.CompareTag("Surface") && moving) { Splatter splatterObj = (Splatter)Instantiate(splatter, other.transform.position, Quaternion.identity); } }
public override void OnLobbyServerSceneLoadedForPlayer(NetworkManager manager, GameObject lobbyPlayer, GameObject gamePlayer) { Splatter s = gamePlayer.GetComponent <Splatter>(); Debug.Log("Lobby Hooked"); //s.SetColors(lobbyPlayer.GetComponent<LobbyPlayer>().DogColorList); }
void Start() { _motion = Vector3.zero; _rotation = Vector3.zero; _pitch = 0f; if (isLocalPlayer) { Cursor.lockState = CursorLockMode.Locked; Cursor.visible = false; _sfx = GetComponents <AudioSource>(); g = GetComponent <Grabber>(); _camera = Camera.allCameras[0].transform; _camera.position = transform.position - new Vector3(0, -7f, .5f); _camera.gameObject.GetComponent <Camera>().cullingMask &= ~(1 << LayerMask.NameToLayer("CameraInvisible")); _camera.SetParent(transform); _emitter = GetComponent <Splatter>(); _emitter.SetEmitter(transform.GetChild(2).transform); _emitter.SetChannel(_splatChannel); //_body = GetComponent<Rigidbody>(); _front = GetComponent <CharacterController>(); TPMesh.SetActive(false); LeftArm.SetActive(true); RightArm.SetActive(true); /*_rightGrabRotation = RightArm.transform.localRotation; * _leftGrabRotation = LeftArm.transform.localRotation; * LeftArm.transform.Rotate(new Vector3(90, 0, 0)); * RightArm.transform.Rotate(new Vector3(90, 0, 0)); * _rightDownRotation = RightArm.transform.localRotation; * _leftDownRotation = LeftArm.transform.localRotation; */ _animator = LeftArm.GetComponentInChildren <Animator>(); } }
public void SplateColor() { Splatter splatterObj = (Splatter)Instantiate(Splatter, transform.position, Quaternion.identity); splatterObj.GetComponent <Splatter>().splatColor = ColorBall; splatterObj.GetComponent <Splatter>().randomColor = false; splatterObj.GetComponent <Splatter>().ApplyStyle(); }
public void DisplaySplatter(Color color, Vector3 position) { Splatter newSplatter = Instantiate(splatter) as Splatter; newSplatter.transform.SetParent(transform, false); newSplatter.Display(color, position); newSplatter.FadeAway(); }
// Start is called before the first frame update void Start() { Enemy = GameObject.FindGameObjectWithTag("Enemy"); Splatter = Enemy.GetComponent <EnemyScript>().Splatter; BloodSplash = Enemy.GetComponent <EnemyScript>().BloodSplash; enemyDeath = Enemy.GetComponent <EnemyScript>().enemyDeath; Target = GameObject.FindGameObjectWithTag("Player"); StartCoroutine("WaitForPlayer"); }
void Awake() { try { player = GameObject.Find("Player").GetComponent <PlayerController>(); } catch (Exception) { throw new Exception("Scene must include an object called \"Player\" with the playerController script attached"); } splatterObj = Instantiate(splatter, new Vector3(transform.position.x, transform.position.y - 1, transform.position.z), Quaternion.identity) as Splatter; splatterObj.transform.localScale = new Vector3(.5f, .5f, .5f); splatterObj.transform.parent = transform; isFacingRight = !player.SpriteRenderer.flipX; lastSplatterLocation = transform.position; StartCoroutine(DestroySelfInTime()); }
public override Node Create(Vector2 pos) { Splatter node = CreateInstance <Splatter> (); node.rect = new Rect(pos.x, pos.y, 250, 340); node.name = "Op"; node.CreateInput("Texture", "TextureParam", NodeSide.Left, 50); node.CreateOutput("Texture", "TextureParam", NodeSide.Right, 50); return(node); }
//detects the collider with specific tags void OnTriggerEnter2D(Collider2D other) { if (other.CompareTag("Colors")) { //get the collided object color Color objCol = other.GetComponent <SpriteRenderer>().color; //spawns the splatter Splatter splatterObj = (Splatter)Instantiate(splatter, other.transform.position, Quaternion.identity); splatterObj.GetComponent <Splatter>().splatColor = objCol; //set the splatter color splatterObj.GetComponent <Splatter>().randomColor = false; //make random false as we want the splatter color to the color we assigned splatterObj.GetComponent <Splatter>().ApplyStyle(); //then apply the style } }
public void Splat(float pos, Color color) { int numSplats = Random.Range(1, 3); for (int i = 0; i < numSplats; i++) { Vector3 splatPos = new Vector3(pos + Random.Range(-50f, 50f), Random.Range(-50f, 50f), 0); Splatter newSplat = Instantiate(splatter, gameObject.transform); newSplat.transform.localPosition = splatPos; newSplat.color = new Color(color.r - Random.Range(0, -50f / 255f), color.g - Random.Range(0, -50f / 255f), color.b - Random.Range(0, -50f / 255f)); newSplat.gameObject.SetActive(true); } }
void SplatToWall() { Splatter splatterToObj = (Splatter)Instantiate(splatter, new Vector3(transform.position.x + (isFacingRight ? .5f : -.5f), transform.position.y, transform.position.z), Quaternion.identity); //splatterToObj.transform.localScale = new Vector3(.6f, .6f, .6f); splatterToObj.ApplyStyle(); splatterObj.gameObject.SetActive(false); gameObject.SetActive(false); Destroy(splatterObj.gameObject.GetComponent <GameObject>()); Destroy(gameObject.GetComponent <GameObject>()); }
void Start() { sprayableObject.Init(colors); controller.Init(tools, colors, sounds, container); splatter = new Splatter(sprayableObject, controller, tools, colors, sounds); container = new GameObject("Stroke Container"); for (int i = 0; i < sounds.Length; i++) { if (sounds[i].name == "ambientTutorial") { sounds[i].PlaySound(); } } }
private void OnTriggerEnter2D(Collider2D other) { switch (other.tag) { case "Surface": Splatter splatterObj = (Splatter)Instantiate(splatter, other.transform.position, Quaternion.identity); HandleDeath(); break; case "Checkpoint": HandleCheckPoint(other); break; case "Finish": HandleFinish(); break; } }
public override GameObject OnLobbyServerCreateGamePlayer(NetworkConnection conn, short playerControllerId) { int team = (int)currentPlayers[conn.connectionId]; GameObject playerPrefab = (GameObject)GameObject.Instantiate(spawnPrefabs[team], startPositions[conn.connectionId].position, Quaternion.identity); Splatter s = playerPrefab.GetComponent <Splatter>(); // set colors and channel mask (mask is implied by order) int i = 0; List <Vector4> DogColorList = new List <Vector4>(); foreach (LobbyPlayer p in lobbyPlayers.Values) { if (p.playerTeam == Teams.Team.DOGS) { DogColorList.Add(p.playerColor); if (p.connectionId == conn.connectionId) { s.SetConnectionId(conn.connectionId); if (i == 0) { s.SetChannel(SplatChannel.DOG0); } else if (i == 1) { s.SetChannel(SplatChannel.DOG1); } else if (i == 2) { s.SetChannel(SplatChannel.DOG2); } } i++; } } s.SetColors(DogColorList); foreach (var d in DogColorList) { Debug.Log(d); } Debug.Log("Team " + 1 + " Prefab " + playerPrefab + " connId " + conn.connectionId); return(playerPrefab); }
public ObjectInstance(GameObject objectInstance) { gameObject = objectInstance; transform = gameObject.transform; gameObject.SetActive(false); if (gameObject.GetComponent <Splatter>()) { hasPoolObjectComponent = true; splatterScript = gameObject.GetComponent <Splatter>(); } else if (gameObject.GetComponent <Canonball>()) { hasPoolObjectComponent = true; canonballScript = gameObject.GetComponent <Canonball>(); } }
private void OnDogColorsRequested(NetworkMessage msg) { DogColorsMsg response = new DogColorsMsg(); Debug.Log("Dog Color Request Received."); int id = msg.conn.connectionId; GameObject[] p = GameObject.FindGameObjectsWithTag("Player"); for (int j = 0; j < p.Length; j++) { if (p[j] != null) { Splatter s = p[j].GetComponent <Splatter>(); if (s != null && s._connectionId == id) { response.Channel = s.channelMask; if (!splatters.ContainsKey(s)) { splatters.Add(s, s.gameObject.GetComponent <Drinker>()); } } } } int i = 0; foreach (Vector4 c in splatColors) { if (i == 0) { response.Dog0Color = c; } if (i == 1) { response.Dog1Color = c; } if (i == 2) { response.Dog2Color = c; } i++; } NetworkServer.SendToClient(id, DogColorsMsgId, response); }
private void Awake() { renderMask = renderMask != null ? renderMask : Texture2D.whiteTexture; renderer = GetComponent <Renderer>(); // this must be done BEFORE the splatter is created if (GoreManager.Instance.GoreEnabled) { // Set up Splatting paintMask = paintMask != null ? paintMask : Texture2D.whiteTexture; splatter = CreateSplatter(); // this must be done BEFORE the property block is updated PaintMask = paintMask; splatsToRender = new Queue <Splatter.QueuedSplat>(); } else { enabled = false; // just turn self off. } // Set Up Property Block UpdatePropertyBlock(); }
void Start() { _frontPivot = transform.Find("frontPivot"); _rearPivot = transform.Find("rearPivot"); FrontPeePoofs.transform.position = _frontPivot.transform.position; RearPeePoofs.transform.position = _rearPivot.transform.position; _front = GetComponent <Rigidbody>(); _animator = this.GetComponentInChildren <Animator>(); _inputH = GetComponent <InputHandler>(); _sfx = GetComponents <AudioSource>(); _runStartVolume = _sfx [2].volume; d = GetComponent <Drinker>(); if (isLocalPlayer) { _emitter = GetComponent <Splatter>(); _emitter.SetEmitter(transform.Find("rearPivot")); _emitter.SetChannel(_splatChannel); } }
void SetDogColors() { GameObject[] p = GameObject.FindGameObjectsWithTag("Player"); Debug.Log(p.Length + " Players found."); for (int j = 0; j < p.Length; j++) { if (p[j] != null) { Debug.Log("Player " + j); Splatter s = p[j].GetComponent <Splatter>(); if (s != null && s.channelMask != SplatChannel.MAN) { Debug.Log("Player " + j + "is a dog"); Renderer r = p[j].transform.GetChild(0).GetChild(0).GetComponent <Renderer>(); if (s.channelMask == SplatChannel.DOG0) { Debug.Log("Player " + j + "is a dog 0"); r.material = DogMat0; r.material.color = SplatManagerSystem.instance.Colors[0]; Debug.Log(r.material.color); } if (s.channelMask == SplatChannel.DOG1) { Debug.Log("Player " + j + "is a dog 1"); r.material = DogMat1; r.material.color = SplatManagerSystem.instance.Colors[1]; Debug.Log(r.material.color); } if (s.channelMask == SplatChannel.DOG2) { Debug.Log("Player " + j + "is a dog 2"); r.material = DogMat2; r.material.color = SplatManagerSystem.instance.Colors[2]; Debug.Log(r.material.color); } } } } }
void Start() { _pitch = 0f; if (isLocalPlayer) { _camera = Camera.allCameras[0].transform; _camera.position = transform.position - new Vector3(0, -0.75f, .5f); _camera.gameObject.GetComponent <Camera>().cullingMask &= ~(1 << LayerMask.NameToLayer("CameraInvisible")); _camera.SetParent(transform); _emitter = GetComponent <Splatter>(); _emitter.SetEmitter(transform); _emitter.SetChannel(_splatChannel); _front = GetComponent <CharacterController>(); //BROCK'S ADDITION THAT ALLOWS FOR PREFAB ADJUSTMENTS GameObject ChildGameObject1 = transform.GetChild(0).gameObject; GameObject ChildGameObject2 = transform.GetChild(1).gameObject; ChildGameObject1.SetActive(false); ChildGameObject2.SetActive(true); } }
public void Splatt(Vector3 Position, Collider2D other) { if (other.tag == "Enemy") { Debug.Log("ENEMY"); Splatter splat = Instantiate(DynamicSplatter, Position, Quaternion.identity); float scale = Random.Range(2f, 3f); splat.transform.localScale = new Vector3(scale, scale, scale); splat.transform.SetParent(other.gameObject.transform, true); splat.GetComponent <SpriteRenderer>().sortingOrder = -1; } RaycastHit2D hit = Physics2D.CircleCast(Position, 3, Vector2.up, Mathf.Infinity, CollisionLayer); if (hit) { int k = Random.Range(2, 4); for (int i = 0; i < k; i++) { Instantiate(_splatter, Position + new Vector3(Random.Range(0, 1), 0, 0), Quaternion.identity); } } }
void OnCollisionEnter2D(Collision2D col) { if (_playerStats.currentNumberOfBalls > 0) { lastBall = false; } if (col.gameObject.tag != "Obstacle") { Points.hitsInARow = 0; } colorSplash.SetColorOfSplat(this.gameObject.GetComponent <SpriteRenderer>().color); Splatter splat = (Splatter)Instantiate(colorSplash, this.transform.position, Quaternion.identity); this.transform.localScale = this.transform.localScale / _ballDivider; if (this.transform.localScale.x < 0.1) { splat.transform.localScale = splat.transform.localScale / 2; if (_lastbounce) { this.gameObject.GetComponent <Rigidbody2D>().simulated = false; _playerStats.BallStopped(); if (_playerStats.currentNumberOfBallsLeft <= 0) { _playerStats.GameOver(); } } _lastbounce = true; } else { splat.transform.localScale = splat.transform.localScale / _numberOfBounces; } _numberOfBounces += (_ballDivider / 2); _soundManager.Play(); }
void OnEnable() { _target = (Splatter)target; }
/// <summary> /// Places a splatter. /// </summary> /// <param name="position">Position where the splatter will be placed.</param> /// <param name="hitObject">Object where the splatter will be placed.</param> private void PlaceSplatter(Vector3 position, GameObject hitObject) { if (!hitObject) { return; } // Places paint splatter GameObject splatterObject = Instantiate(splatterPrefab, hitObject.transform, true); // Z should always be positive if (isGrenade) { splatterObject.transform.position = new Vector3(position.x, position.y - 0.3f, Mathf.Abs(position.z)); // Grenade splatters are bigger splatterObject.transform.localScale = splatterObject.transform.localScale * 3; } else { splatterObject.transform.position = new Vector3(position.x, position.y, Mathf.Abs(position.z)); } Splatter splatterScript = splatterObject.GetComponent <Splatter>(); if (splatterScript != null) { splatterScript.isGrenade = isGrenade; } SpriteRenderer splatterSR = splatterObject.GetComponent <SpriteRenderer>(); // Set splatter color to pellet color if (isGrenade) { splatterSR.color = Color.red; } else { splatterSR.color = spriteRenderer.color; } if (hitObject.layer == LayerMask.NameToLayer("Ground") || hitObject.layer == LayerMask.NameToLayer("UpperGround")) { // On the ground, the splatter is scaled so it looks angle splatterObject.transform.localScale = Vector3.Scale(splatterObject.transform.localScale, new Vector3(1, 0.75f, 1)); // Ground splatters are visible on the "Default" sorting layer, // with order 5 splatterSR.sortingOrder = 5; } else if (hitObject.layer == LayerMask.NameToLayer("Obstacles") || hitObject.layer == LayerMask.NameToLayer("UpperObstacles")) { // Obstacle splatters are visible on the "Environment" sorting layer, // with order 6 splatterSR.sortingLayerName = "Environment"; splatterSR.sortingOrder = 6; } else if (hitObject.layer == LayerMask.NameToLayer("BackgroundWall")) { // Darken paint in wall splatterSR.color *= 0.95f; // Wall splatters are visible on the "Default" sorting layer, // with order 4 splatterSR.sortingOrder = 4; } else if (hitObject.layer == LayerMask.NameToLayer("EnvironmentObjects")) { // Environment Object splatters are visible on the "Environment" sorting layer, // with order 1 splatterSR.sortingLayerName = "Environment"; splatterSR.sortingOrder = 1; } else if (hitObject.layer == LayerMask.NameToLayer("Player")) { // Player splatters are visible on the "PlayerFront" and "PlayerBack" sorting layer splatterSR.sortingLayerName = "PlayerFront"; // Different order for each body part if (hitObject.name == "LegLeft") { splatterSR.sortingOrder = 1; } else if (hitObject.name == "LegRight") { splatterSR.sortingOrder = 2; } else if (hitObject.name == "body") { splatterSR.sortingOrder = 3; } else if (hitObject.name == "Head") { splatterSR.sortingOrder = 4; } } else if (hitObject.layer == LayerMask.NameToLayer("BulletShield")) { // Bullet shield splatters are visible on the "PlayerFront" and "PlayerBack" sorting layer // with order 5 splatterSR.sortingLayerName = "PlayerFront"; splatterSR.sortingOrder = 5; } else if (hitObject.layer == LayerMask.NameToLayer("Enemy")) { // Enemy splatters are visible on the "Player" sorting layer, // with order 6 splatterSR.sortingLayerName = "PlayerFront"; splatterSR.sortingOrder = 6; } }
protected override void MessageReceived(string message, bool error, ITCPConnection connection) { base.MessageReceived(message, error, connection); JObject o = JObject.Parse(message); if((string)o["action"] == "game" && (string)o["name"] == "color_clash") { JObject data = (JObject)o["data"]; if((string)data["action"] == "paint") { string user = (string)data["source"]; if(user != playerName) { lock(splatters) { Splatter splatter = new Splatter(this, players[user], rand); splatter.Scale = (float)data["scale"]; players[user].StartThrow(splatter); players[user].ThrowPaint(new TimeSpan((long)data["time"]), new Vector2((float)data["x_pos"], (float)data["y_pos"])); } } } } }
// Update is called once per frame void Update() { // If health <= 0 ghost is dead if (Health <= 0) { Handheld.Vibrate(); Instantiate(enemyDeath, transform.position, Quaternion.identity); Debug.Log("ded ghost"); Vector3 pos = new Vector3(transform.position.x, transform.position.y, -3.29f); this.BloodSplash.transform.localScale = gameObject.transform.localScale / 8; Instantiate(BloodSplash, pos, Quaternion.identity); Splatter.randomColor = false; Splatter.gameObject.GetComponent <SpriteRenderer>().color = Color.red; this.Splatter.gameObject.transform.localScale = gameObject.transform.localScale / 6; Splatter splatterObj = (Splatter)Instantiate(Splatter, pos, Quaternion.identity); Destroy(gameObject); if (gameObject.name != "Boss3") { GameObject.FindGameObjectWithTag("Player").GetComponent <PlayerScript>().points += 50; GameObject.FindGameObjectWithTag("StatusText").GetComponent <Text>().text = "Boss dead! New level!"; GameObject.FindGameObjectWithTag("StatusText").transform.localScale = Vector3.one; if (gameObject.name == "Boss1") { EndScreen.score = GameObject.FindGameObjectWithTag("Player").GetComponent <PlayerScript>().points; EndScreen.currentLevel = 2; SceneManager.LoadScene("PersistentScene"); SceneManager.LoadScene("LevelTwo", LoadSceneMode.Additive); } else if (gameObject.name == "Boss2") { EndScreen.score = GameObject.FindGameObjectWithTag("Player").GetComponent <PlayerScript>().points; EndScreen.currentLevel = 3; SceneManager.LoadScene("PersistentScene"); SceneManager.LoadScene("BossLevel", LoadSceneMode.Additive); } } else { GameObject.FindGameObjectWithTag("Player").GetComponent <PlayerScript>().points += 1000; EndScreen.score = GameObject.FindGameObjectWithTag("Player").GetComponent <PlayerScript>().points; SceneManager.LoadScene("EndScene"); } } if (Fighting && moveCounter < 100) { moveCounter++; transform.position = new Vector3(transform.position.x + MovementSpeed, transform.position.y); } else if (Fighting && moveCounter < 250) { moveCounter++; transform.position = new Vector3(transform.position.x - MovementSpeed, transform.position.y); } else if (Fighting) { moveCounter = 0; } }
public override void Update(GameTime gameTime, bool otherScreenHasFocus, bool coveredByOtherScreen) { if(phase == Phase.Begin) { if(singlePlayer) { gameStart = gameTime.TotalGameTime; phase = Phase.Main; } else if(!synced) { Sync((JArray data, double random) => { gameStart = gameTime.TotalGameTime; phase = Phase.Main; }); synced = true; } } else if(phase == Phase.Main) { // randomly drop paint on the canvas if(singlePlayer) { if(rand.Next(0, 1000) < 20 - 3 * upgrades[(int)Upgrade.EnemyFreq]) { Splatter splatter = new Splatter(this, players[""], rand); splatter.Scale = (float)rand.NextDouble() + 1; players[""].StartThrow(splatter); players[""].ThrowPaint(gameTime.TotalGameTime - gameStart, new Vector2(rand.Next(BOUNDS.Left, BOUNDS.Right), rand.Next(BOUNDS.Top, BOUNDS.Bottom))); } } if(gameTime.TotalGameTime - gameStart > PAINT_TIME) { Dictionary<Color, float> areas = CalculatePaint(); foreach(Avatar a in players.Values) { a.score = areas[a.color] / (BOUNDS.Width * BOUNDS.Height); } gameEnd = gameTime.TotalGameTime; banner = new TextBanner(this, "TIME'S UP"); foreach(Avatar a in players.Values) { if(a.currentPaint != null) { RemoveActor(a.currentPaint); splatters.Remove(a.currentPaint); a.currentPaint = null; a.State = AvatarStates.Standing; } } if(crosshair != null) { RemoveActor(crosshair); crosshair = null; } if(singlePlayer) { score = (int)(players[playerName].score * 10000); } phase = Phase.Calculation; } } else if(phase == Phase.Calculation) { if(gameTime.TotalGameTime - gameEnd > BANNER_TIME + BANNER_TIME + SCORE_TIME) { if(singlePlayer) { phase = Phase.Limbo; } else { // Sync scores JObject packet = new JObject( new JProperty("action", "group"), new JProperty("type", "report_score"), new JProperty("score", new JObject( from username in players.Keys select new JProperty(username, (int)(players[username].score * -10000)) )) ); conn.SendMessage(packet.ToString()); phase = Phase.Limbo; } } else if(gameTime.TotalGameTime - gameEnd > BANNER_TIME + SCORE_TIME) { banner = singlePlayer ? banner ?? new TextBanner(this, "Score: " + score) : banner ?? new TextBanner(this, "GAME OVER"); } else if(gameTime.TotalGameTime - gameEnd > BANNER_TIME) { banner = null; } } else if(phase == Phase.Limbo) { // Do nothing } base.Update(gameTime, otherScreenHasFocus, coveredByOtherScreen); }