Example #1
0
        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;
        }
Example #2
0
        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);
            }
        }
Example #3
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);
    }
Example #4
0
        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);
            }
        }
Example #5
0
 private void Awake()
 {
     worldTileSpecificationType = WorldTileSpecificationType.None;
 }