public void Instantiate(int id, Vector2 pos, WorldTileSpecificationType worldTileSpecification, List <WorldTileClass> neighbours, int level) { objectId = id; position = pos; worldTileSpecificationType = worldTileSpecification; switch (worldTileSpecification) { case WorldTileSpecificationType.None: worldTileSpecificationType = WorldTileSpecificationType.None; return; case WorldTileSpecificationType.Rail: WorldTileSpecification = new WorldTileRail(parent: this, neighbours: neighbours, level); break; case WorldTileSpecificationType.Station: WorldTileSpecification = new WorldTileStation(level); break; case WorldTileSpecificationType.Environment: WorldTileSpecification = new WorldTileEnvironment(); break; default: throw new ArgumentOutOfRangeException(paramName: nameof(worldTileSpecification), actualValue: worldTileSpecification, message: null); } sprite.sprite = WorldTileSpecification.Sprite; WorldTileSpecification.x = (int)this.position.x; WorldTileSpecification.y = (int)this.position.y; }
public void BuildSomethingForced(int x, int y, WorldTileSpecificationType buildType) { WorldTileStatusType worldTileStatus = GetFieldStatus(x: x, y: y, worldTile: out WorldTileClass worldTile); if (worldTileStatus.HasFlag(flag: WorldTileStatusType.NotInitialized)) { // Initialize GameObject gameObject = Instantiate(original: worldTilePrefab, position: new Vector3(x: x, y: y), rotation: Quaternion.identity); worldTile = gameObject.GetComponent <WorldTileClass>(); worldTile.Instantiate(id: _nextObjectId++, pos: new Vector2(x: x, y: y), worldTileSpecification: buildType, neighbours: GetNeighbourTiles(x: x, y: y), 0); _gridByTile.Add(key: new KeyValuePair <int, int>(key: x, value: y), value: worldTile); } else if (worldTileStatus.HasFlag(flag: WorldTileStatusType.Buildable)) { worldTile.Instantiate(id: _nextObjectId++, pos: new Vector2(x: x, y: y), worldTileSpecification: buildType, neighbours: GetNeighbourTiles(x: x, y: y), 0); } }
private void SetBuildType(WorldTileSpecificationType type) { _buildType = type; WorldTileClass worldTile = cursor.GetComponent <WorldTileClass>(); worldTile.InstantiateForShop(worldTileSpecification: type, _level); GameManager.Instance.buildModeOn = true; _spriteRenderer.material.SetFloat(nameID: GrayscaleAmount, value: 1f); }
public void InstantiateForShop(WorldTileSpecificationType worldTileSpecification, int level) { worldTileSpecificationType = worldTileSpecification; Sprite outSprite; switch (worldTileSpecification) { case WorldTileSpecificationType.None: break; case WorldTileSpecificationType.Rail: if (SpriteManager.Instance.TryGetSpriteByName(spriteName: $"rail_straight_{level}", outSprite: out outSprite)) { sprite.sprite = outSprite; } break; case WorldTileSpecificationType.Station: if (SpriteManager.Instance.TryGetSpriteByName(spriteName: $"station_{level}", outSprite: out outSprite)) { sprite.sprite = outSprite; } break; case WorldTileSpecificationType.Environment: string spriteName = UnityEngine.Random.Range(0, 1) == 1 ? "tree" : "rock"; if (SpriteManager.Instance.TryGetSpriteByName(spriteName: spriteName, outSprite: out outSprite)) { sprite.sprite = outSprite; } break; default: throw new ArgumentOutOfRangeException(nameof(worldTileSpecification), worldTileSpecification, null); } }
private void Awake() { worldTileSpecificationType = WorldTileSpecificationType.None; }