Exemple #1
0
        private void SetFloor(int x, int y, PanelData data)
        {
            FloorBase floorBase = null;

            switch (data.type)
            {
            case Enums.EPanelType.WALL:
                break;

            case Enums.EPanelType.JEWEL:
                break;

            case Enums.EPanelType.GOAL:
                var goal = Goal.CreateInstance();
                floorBase = goal;
                break;
            }
            if (floorBase == null)
            {
                return;
            }

            floorBase.transform.SetParent(floorLayer);
            floorBase.transform.localScale = Vector3.one;
            floorBase.SetBoardPosition(x, y);
            floorBase.SetColor(data.color);
            this.floorList[x, y] = floorBase;
        }
Exemple #2
0
    // Use this for initialization
    protected override void Start()
    {
        base.Start();
        floorTilemap = FindObjectOfType <TilemapManager>().floorTilemap;
        Vector3Int tileLoc = floorTilemap.WorldToCell(this.transform.position);

        floorBase = floorTilemap.GetInstantiatedObject(tileLoc).GetComponent <FloorBase>();
        GetComponent <ResourcesHoverInfo>().resourceHolder = floorBase.gameObject;
    }
Exemple #3
0
    public Sprite GetResourceIcon()
    {
        FloorBase   floor       = resourceHolder.GetComponent <FloorBase>();
        MiningDrill miningDrill = resourceHolder.GetComponent <MiningDrill>();

        if (floor)
        {
            return(floor.resourceIcon);
        }
        return(null);
    }
Exemple #4
0
    public int GetResourceCount()
    {
        FloorBase   floor       = resourceHolder.GetComponent <FloorBase>();
        MiningDrill miningDrill = resourceHolder.GetComponent <MiningDrill>();

        if (floor)
        {
            return(floor.resourceCount);
        }
        return(0);
    }
Exemple #5
0
        public bool TileCollisions(bool tileCollide = true, bool tileTrigger = true, float wallDrag = 0.9f)
        {
            bool collided = false;

            for (int i = -1; i < 2; i++)
            {
                for (int j = -1; j < 2; j++)
                {
                    //if (position == oldPosition)
                    //    return collided; disabled because may cause issues with OnCollide hooks on some tiles, enable later and try again
                    Point currentTilePos = Center.WorldToTileCoords() + new Point(i, j);
                    if (currentWorld.IsTileInWorld(currentTilePos))
                    {
                        //these are by reference iirc
                        FloorBase floorBase = currentWorld.floorLayer[currentTilePos.X, currentTilePos.Y].Base;
                        if (Collide(currentTilePos, floorBase.CollisionRect(), tileCollide ? floorBase.IsSolid() : false) && tileTrigger)
                        {
                            //TODO TODO
                        }

                        WallBase wallBase = currentWorld.wallLayer[currentTilePos.X, currentTilePos.Y].Base;
                        if (Collide(currentTilePos, wallBase.CollisionRect(), tileCollide ? wallBase.IsSolid() : false) && tileTrigger)
                        {
                            //TODO TODO
                        }

                        ObjectBase objectBase = currentWorld.objectLayer[currentTilePos.X, currentTilePos.Y].Base;
                        if (Collide(currentTilePos, objectBase.CollisionRect(), tileCollide ? objectBase.IsSolid() : false) && tileTrigger)
                        {
                            //TODO //tileBase.OnCollide(this)
                        }
                    }
                }
            }
            return(collided);

            bool Collide(Point location, Rectangle[] rectList, bool solid)
            {
                bool hasCollided = false;

                foreach (Rectangle tileRect in rectList)
                {
                    Rectangle testRect = new Rectangle(location.TileToWorldCoords() + tileRect.Location, tileRect.Size);

                    if (testRect.Intersects(Rect))
                    {
                        if (solid)//if solid, so position changing stuff, else just return
                        {
                            if (testRect.Intersects(OldRect))
                            {                                                                                   //anti-stuck
                                position += Vector2.Normalize((Rect.Center - testRect.Center).ToVector2()) * 2; //multiplier at the ned is the distance it moves (speed)
                            }
                            else
                            {
                                if (testRect.Intersects(new Rectangle(new Point((int)position.X, (int)oldPosition.Y), size.ToPoint())))
                                {
                                    position.X  = oldPosition.X;
                                    velocity.X  = 0;
                                    velocity.Y *= wallDrag;
                                }
                                if (testRect.Intersects(new Rectangle(new Point((int)oldPosition.X, (int)position.Y), size.ToPoint())))
                                {
                                    position.Y  = oldPosition.Y;
                                    velocity.Y  = 0;
                                    velocity.X *= wallDrag;
                                }
                            }
                        }
                        hasCollided = true;
                    }
                }
                if (hasCollided)
                {
                    collided = true;
                }
                return(hasCollided);
            }
        }
Exemple #6
0
        internal static IfcBuildingStorey CreateStorey(IfcStore model, IfcBuilding building, string BlkName, int storeyNumber, FloorBase cadFloor)
        {
            IfcBuildingStorey storey;

            using (var trans = model.BeginTransaction("Add Storey"))
            {
                storey      = model.Instances.New <IfcBuildingStorey>();
                storey.Name = BlkName + $"F{storeyNumber}";
                IfcRelAggregates rel = model.Instances.New <IfcRelAggregates>();
                rel.RelatingObject = building;
                rel.RelatedObjects.Add(storey);

                XbimCreateBuilding.AddStoreyProperties(model, storey, cadFloor.Height, cadFloor.Level);

                trans.Commit();
            }

            return(storey);
        }