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; }
// 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; }
public Sprite GetResourceIcon() { FloorBase floor = resourceHolder.GetComponent <FloorBase>(); MiningDrill miningDrill = resourceHolder.GetComponent <MiningDrill>(); if (floor) { return(floor.resourceIcon); } return(null); }
public int GetResourceCount() { FloorBase floor = resourceHolder.GetComponent <FloorBase>(); MiningDrill miningDrill = resourceHolder.GetComponent <MiningDrill>(); if (floor) { return(floor.resourceCount); } return(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); } }
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); }