using System.Collections; using System.Collections.Generic; using Photon.Pun; using UnityEngine; public class SnakePiece : MonoBehaviourPunCallbacks, IPunObservable { public SnakeSkinScriptable skin; public Vector2 direction = Vector2.right; public SpriteRenderer spriteRenderer; public Color myColor, enemyColor = Color.green; public Color myBodyColor, enemyBodyColor = Color.green; Vector3 defaultSize; void Awake(){ defaultSize = transform.localScale; } void OnValidate() { if(spriteRenderer == null){ spriteRenderer = GetComponentInChildren(); } } public bool isHead = false; public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info) { if(stream.IsWriting){ stream.SendNext(direction); stream.SendNext(isHead); }else{ direction = (Vector2)stream.ReceiveNext(); isHead = (bool)stream.ReceiveNext(); } } void Start(){ } void Update(){ spriteRenderer.transform.localScale =Vector3.one * (isHead ? skin.headScaleMultiplier : 1); if(isHead){ foreach(SkinData skinData in skin.head){ if(skinData.direction == direction){ spriteRenderer.sprite = skinData.sprite; break; } } if(photonView.IsMine){ spriteRenderer.color = myColor; }else{ spriteRenderer.color = enemyColor; } }else{ Sprite defaultSprite = null; bool found = false; foreach(SkinData skinData in skin.body){ if(defaultSprite == null){ defaultSprite = skinData.sprite; } if(skinData.direction == direction){ spriteRenderer.sprite = skinData.sprite; found = true; break; } } if(photonView.IsMine){ spriteRenderer.color = myBodyColor; }else{ spriteRenderer.color = enemyBodyColor; } if(!found){ spriteRenderer.sprite = defaultSprite; } } } }