public override void SetSprite(TypeRailWay type) { for (int i = 0; i < spriteStorage.railSprites.Length; i++) { if (type == spriteStorage.railSprites[i].type) { spriteRend.sprite = spriteStorage.railSprites[i].sprite; return; } } Debug.Log("Error. Dont found sprite type - " + type.ToString()); }
public override RailWay CreateRailWay(Tile tile) { RailWay rail; if (tile.isStation) { rail = stationPool.RealeseObject().GetComponent <RailWay>(); rail.SetSprite(TypeRailWay.Station); } else { rail = railPool.RealeseObject().GetComponent <RailWay>(); TypeRailWay railType = ChooseSpriteByLinks(tile.links); int railDegree = GetRotateDegreeByLinks(tile.links, railType); rail.SetRotate(railDegree); rail.SetSprite(railType); } rail.Position = tile.position; rail.SetLinks(tile.links); return(rail); }
int GetRotateDegreeByLinks(List <SidesLink> links, TypeRailWay type) { int degree = 0; int offsetDegree = 90; TileSides generalSide; switch (type) { case TypeRailWay.Horizontal: case TypeRailWay.Vertical: case TypeRailWay.Cross: break; case TypeRailWay.Curve: // init state = left TileSides righterSide = GetRighterSide(links[0]); degree = ChooseDegreeByInitSide(TileSides.Left, righterSide); break; case TypeRailWay.TwoCurve: // init state = bottom generalSide = GetGeneralSide(links[0], links[1]); degree = ChooseDegreeByInitSide(TileSides.Bottom, generalSide); break; case TypeRailWay.Endup: // init state = bottom degree = ChooseDegreeByInitSide(TileSides.Bottom, links[0].begin); break; case TypeRailWay.OneInOneRight: // init state = top case TypeRailWay.OneInOneLeft: generalSide = GetGeneralSide(links[0], links[1]); degree = ChooseDegreeByInitSide(TileSides.Top, generalSide); break; case TypeRailWay.ThreeCurve: // init state = left TileSides emptySides = GetEmptySide(links); degree = ChooseDegreeByInitSide(TileSides.Left, emptySides); break; } return(degree * offsetDegree); }
public abstract void SetSprite(TypeRailWay type);