Exemplo n.º 1
0
        public WallFixture GetWallFixtureAtLayer(WallFixtureLayers layer)
        {
            switch (layer)
            {
            case WallFixtureLayers.HighWallNorth:
                return(wallFixtureDefinition.highWallNorth);

            case WallFixtureLayers.HighWallEast:
                return(wallFixtureDefinition.highWallEast);

            case WallFixtureLayers.HighWallSouth:
                return(wallFixtureDefinition.highWallSouth);

            case WallFixtureLayers.HighWallWest:
                return(wallFixtureDefinition.highWallWest);

            case WallFixtureLayers.LowWallNorth:
                return(wallFixtureDefinition.lowWallNorth);

            case WallFixtureLayers.LowWallEast:
                return(wallFixtureDefinition.lowWallEast);

            case WallFixtureLayers.LowWallSouth:
                return(wallFixtureDefinition.lowWallSouth);

            case WallFixtureLayers.LowWallWest:
                return(wallFixtureDefinition.lowWallWest);
            }
            return(null);
        }
Exemplo n.º 2
0
        private void Start()
        {
            lightItem = lightItemPrefab.GetComponent <Item>();

            // Set fixture related variables
            string layerString = name.Split('_')[2];

            switch (layerString)
            {
            case "highwalleast":
                layer = WallFixtureLayers.HighWallEast;
                break;

            case "highwallnorth":
                layer = WallFixtureLayers.HighWallNorth;
                break;

            case "highwallsouth":
                layer = WallFixtureLayers.HighWallSouth;
                break;

            case "highwallwest":
                layer = WallFixtureLayers.HighWallWest;
                break;

            case "lowwalleast":
                layer = WallFixtureLayers.LowWallEast;
                break;

            case "lowwallnorth":
                layer = WallFixtureLayers.LowWallNorth;
                break;

            case "lowwallsouth":
                layer = WallFixtureLayers.LowWallSouth;
                break;

            case "lowwallwest":
                layer = WallFixtureLayers.LowWallWest;
                break;

            default:
                Debug.LogWarning("Light fixture at tile " + transform.parent.name + " has unknown wall fixture layer. Defaulting to HighWallNorth");
                layer = WallFixtureLayers.HighWallNorth;
                break;
            }

            // Make sure default state is the actual state of the object
            normalLight.SetActive(lightInstalled && !lightBroken);
            brokenLight.SetActive(lightInstalled && lightBroken);
        }
Exemplo n.º 3
0
        public void SetWallFixtureAtLayer(WallFixture fixture, WallFixtureLayers layer)
        {
            switch (layer)
            {
            case WallFixtureLayers.HighWallNorth:
                wallFixtureDefinition.highWallNorth = (HighWallFixture)fixture;
                wallFixtureDefinition.highWallNorth?.SetOrientation(WallFixture.Orientation.North);
                break;

            case WallFixtureLayers.HighWallEast:
                wallFixtureDefinition.highWallEast = (HighWallFixture)fixture;
                wallFixtureDefinition.highWallEast?.SetOrientation(WallFixture.Orientation.East);
                break;

            case WallFixtureLayers.HighWallSouth:
                wallFixtureDefinition.highWallSouth = (HighWallFixture)fixture;
                wallFixtureDefinition.highWallSouth?.SetOrientation(WallFixture.Orientation.South);
                break;

            case WallFixtureLayers.HighWallWest:
                wallFixtureDefinition.highWallWest = (HighWallFixture)fixture;
                wallFixtureDefinition.highWallWest?.SetOrientation(WallFixture.Orientation.West);
                break;

            case WallFixtureLayers.LowWallNorth:
                wallFixtureDefinition.lowWallNorth = (LowWallFixture)fixture;
                wallFixtureDefinition.lowWallNorth?.SetOrientation(WallFixture.Orientation.North);
                break;

            case WallFixtureLayers.LowWallEast:
                wallFixtureDefinition.lowWallEast = (LowWallFixture)fixture;
                wallFixtureDefinition.lowWallEast?.SetOrientation(WallFixture.Orientation.East);
                break;

            case WallFixtureLayers.LowWallSouth:
                wallFixtureDefinition.lowWallSouth = (LowWallFixture)fixture;
                wallFixtureDefinition.lowWallSouth?.SetOrientation(WallFixture.Orientation.South);
                break;

            case WallFixtureLayers.LowWallWest:
                wallFixtureDefinition.lowWallWest = (LowWallFixture)fixture;
                wallFixtureDefinition.lowWallWest?.SetOrientation(WallFixture.Orientation.West);
                break;
            }
        }
Exemplo n.º 4
0
        public void SetWallFixtureAtLayer(WallFixture fixture, WallFixtureLayers layer)
        {
            switch (layer)
            {
            case WallFixtureLayers.HighWallNorth:
                wallFixtureDefinition.highWallNorth = (HighWallFixture)fixture;
                break;

            case WallFixtureLayers.HighWallEast:
                wallFixtureDefinition.highWallEast = (HighWallFixture)fixture;
                break;

            case WallFixtureLayers.HighWallSouth:
                wallFixtureDefinition.highWallSouth = (HighWallFixture)fixture;
                break;

            case WallFixtureLayers.HighWallWest:
                wallFixtureDefinition.highWallWest = (HighWallFixture)fixture;
                break;

            case WallFixtureLayers.LowWallNorth:
                wallFixtureDefinition.lowWallNorth = (LowWallFixture)fixture;
                break;

            case WallFixtureLayers.LowWallEast:
                wallFixtureDefinition.lowWallEast = (LowWallFixture)fixture;
                break;

            case WallFixtureLayers.LowWallSouth:
                wallFixtureDefinition.lowWallSouth = (LowWallFixture)fixture;
                break;

            case WallFixtureLayers.LowWallWest:
                wallFixtureDefinition.lowWallWest = (LowWallFixture)fixture;
                break;
            }
        }
Exemplo n.º 5
0
        public override void CreateInteractions(IInteractionTarget[] targets, List <InteractionEntry> interactions)
        {
            base.CreateInteractions(targets, interactions);

            if ((IGameObjectProvider)targets[0] != null)
            {
                TileObject tileReference = ((IGameObjectProvider)targets[0]).GameObject.GetComponentInParent <TileObject>();
                int        direction     = tileReference.GetLayerDirectionByPlayerPosition(transform.position);

                switch (direction)
                {
                case 1:
                    if (highWallFixture)
                    {
                        layer = WallFixtureLayers.HighWallNorth;
                    }
                    else
                    {
                        layer = WallFixtureLayers.LowWallNorth;
                    }
                    break;

                case 2:
                    if (highWallFixture)
                    {
                        layer = WallFixtureLayers.HighWallSouth;
                    }
                    else
                    {
                        layer = WallFixtureLayers.LowWallSouth;
                    }
                    break;

                case 3:
                    if (highWallFixture)
                    {
                        layer = WallFixtureLayers.HighWallEast;
                    }
                    else
                    {
                        layer = WallFixtureLayers.LowWallEast;
                    }
                    break;

                case 4:
                    if (highWallFixture)
                    {
                        layer = WallFixtureLayers.HighWallWest;
                    }
                    else
                    {
                        layer = WallFixtureLayers.LowWallWest;
                    }
                    break;

                default:
                    break;
                }

                if (direction != 0 && tileReference.Tile.turf.name.Substring(0, 4).ToLower() == "wall")
                {
                    interactions.Insert(0, new InteractionEntry(targets[0], new FixtureConstructionInteraction
                    {
                        icon             = icon,
                        Delay            = 0.5f,
                        LoadingBarPrefab = loadingBarPrefab,

                        ObstacleMask    = obstacleMask,
                        BuildDimensions = Vector3.zero,
                        RangeCheck      = true,

                        Name      = "Construct" + Name,
                        Fixture   = fixture,
                        Overwrite = false,
                        WallLayer = layer
                    }));
                }
            }
        }