private void OnBuildingUpdate(FurnitureItem furnitureItem) { if (selectFurniture == null) { return; } //可以升级 if (CanUpdateBuilding(furnitureItem)) { //replace furnitureItem.TheInfo.id = selectFurniture.TheInfo.id; furnitureItem.Direction = selectFurniture.Direction; furnitureItem.TheInfo.furnitureType = selectFurniture.TheInfo.furnitureType; var posIndex = selectFurniture.PosIndex; SetFurnitureIndex(furnitureItem, posIndex); placeMgr.ReplacePlaceItem(selectFurniture, furnitureItem); sceneBuildings.Remove(selectFurniture); sceneBuildings.Add(furnitureItem); selectFurniture.Release(); selectFurniture = null; furnitureItem.TheInfo.SetState(true, true); } else { furnitureItem.Release(); furnitureItem = null; } }
private void OnBuildingLoaded(FurnitureItem furnitureItem) { buildingFurniture = furnitureItem; ReadyForbuild(); InitBuildingState(); DoBuildingCheck(); }
public void RecoverSelectFurniture() { if (selectFurniture != null) { SetSelectBuildState(false, true); selectFurniture = null; } }
private void SetFurnitureIndex(FurnitureItem furniture, int index) { if (null != furniture) { furniture.PosIndex = index; furniture.SetPosAligned(placeMgr.GetIndexPos(index)); } }
private bool CanDeleteBuilding(FurnitureItem furnitureItem) { if (furnitureItem.TheInfo.furnitureType == FurnitureType.ground) { //有1以上的furniture则有家具 return(placeMgr.FurnitureCount(furnitureItem.PosIndex) <= 1); } return(true); }
public void RemovePlaceItem(FurnitureItem fi) { int posIndex = fi.PosIndex; if (cells.ContainsKey(posIndex)) { Cell cell = cells[posIndex]; cell.furnitures.Remove(fi); } }
public void SelectFurniture(FurnitureItem furnitureItem) { if (selectFurniture != null) { SetSelectBuildState(false, true); } selectFurniture = furnitureItem; isBuilingCreate = false; SetSelectBuildState(true, true); }
public int GetNearestWallIndex(FurnitureItem lastBuilding, out FurnitureDirect dir) { int x, y; GetIndex2D(lastBuilding.PosIndex, out x, out y); dir = lastBuilding.TheInfo.direction; switch (dir) { case FurnitureDirect.east: if (y == 0 || !HasFurniture(x, y - 1)) { dir = FurnitureDirect.sourth; } else { y--; } break; case FurnitureDirect.sourth: if (x == 0 || !HasFurniture(x - 1, y)) { dir = FurnitureDirect.west; } else { x--; } break; case FurnitureDirect.west: if (y == height - 1 || !HasFurniture(x, y + 1)) { dir = FurnitureDirect.north; } else { y++; } break; case FurnitureDirect.north: if (x == width - 1 || !HasFurniture(x + 1, y)) { dir = FurnitureDirect.east; } else { x++; } break; } return(y * width + x); }
private void CreateNextFurniture() { lastFurniture = buildingFurniture; buildingFurniture = null; FurnitureInfo info = lastFurniture.TheInfo; if (info.furnitureType == FurnitureType.ground || info.furnitureType == FurnitureType.wall) { BuildingFurniture(lastFurniture.res, lastFurniture.Layer); } }
public void LoadFurnitureItem(string res, int layer, Action <FurnitureItem> onLoaded) { FurnitureItem furnitureItem = new FurnitureItem(res, layer); furnitureItem.Load(() => { //sceneitems furnitureItem.SetParent(furnitureRoot); onLoaded(furnitureItem); }); }
//放置Building,记录格子信息及场景现存列表中 public void PlaceBuildItem(FurnitureItem furnitureItem) { placeMgr.PlaceItem(furnitureItem); if (furnitureItem.IsFurniture) { sceneFurnitures.Add(furnitureItem); } else { sceneBuildings.Add(furnitureItem); } }
public void ReplacePlaceItem(FurnitureItem orign, FurnitureItem target) { int index = orign.PosIndex; Cell cell = null; if (cells.ContainsKey(index)) { cell = cells[index]; cell.furnitures.Remove(orign); cell.furnitures.Add(target); } }
private bool CanUpdateBuilding(FurnitureItem furnitureItem) { if (null == selectFurniture) { return(false); } if (onBuildingUpdate != null) { return(onBuildingUpdate(furnitureItem)); } return(false); }
public void RefreshSceneFurnitures(bool isBuilding) { isSelectBuilding = isBuilding; selectFurniture = null; foreach (var furniture in sceneFurnitures) { furniture.TheInfo.SetState(true, !isBuilding); } foreach (var building in sceneBuildings) { building.TheInfo.SetState(true, isBuilding); } }
public void PlaceItem(FurnitureItem fi) { int index = fi.PosIndex; Cell cell = null; if (cells.ContainsKey(index)) { cell = cells[index]; } else { cell = new Cell(index); cells.Add(index, cell); } cell.furnitures.Add(fi); }
public void CancelBuilding() { colliderFurnitures.Clear(); if (buildingFurniture == null) { return; } if (isBuilingCreate) { buildingFurniture.Release(); } isBuilingCreate = false; buildingFurniture = null; lastFurniture = null; }
public void DeleteSelectBuilding() { colliderFurnitures.Clear(); if (selectFurniture == null || isBuilingCreate) { return; } isBuilingCreate = false; if (onBuildingDelete != null) { onBuildingDelete(selectFurniture.TheInfo.id); } placeMgr.RemovePlaceItem(selectFurniture); selectFurniture.Release(); selectFurniture = null; }
public void CompleteFurniture() { if (CanPlaceFurniture(buildingFurniture)) { colliderFurnitures.Clear(); buildingFurniture.IsBuilding = false; SetBuildingState(true); buildingFurniture.PosIndex = placeMgr.GetPosIndex(buildingFurniture.GetPos()); PlaceBuildItem(buildingFurniture); bool canCreateNext = CompletePlaced(); if (isBuilingCreate && canCreateNext) { CreateNextFurniture(); } else { isBuilingCreate = false; buildingFurniture = null; lastFurniture = null; } } }
/// <summary> /// LoadfurnitureItem数据,填入到placeItem中 /// </summary> /// <param name="furnitureItem"></param> public static void AddPlaceItem(FurnitureItem furnitureItem) { BuilderHelper.Instance.PlaceBuildItem(furnitureItem); }
public static void SelectFurniture(FurnitureItem furnitureItem) { BuilderHelper.Instance.SelectFurniture(furnitureItem); }
public static void LocFurnitureItem(FurnitureItem furnitureItem, int dir, int index) { BuilderHelper.Instance.LocFurniture(furnitureItem, dir, index); }
private bool CanPlaceFurniture(FurnitureItem furniture) { if (null == furniture || ObstacleCollider > 0) { return(false); } FurnitureInfo fi = furniture.TheInfo; bool canPlaceItem = false; switch (fi.furnitureType) { case FurnitureType.wall: foreach (var temp in colliderFurnitures) { if (temp.furnitureType == FurnitureType.wall) { int tempNum = temp.direction - fi.direction; if (tempNum % 2 == 0) { return(false); } } if (temp.furnitureType == FurnitureType.ground) { canPlaceItem = fi.layer >= temp.layer; } } break; case FurnitureType.ground: foreach (var temp in colliderFurnitures) { if (temp.furnitureType == FurnitureType.ground || temp.furnitureType == FurnitureType.furniture) { return(false); } } canPlaceItem = true; break; case FurnitureType.furniture: int floorCount = 0; foreach (var temp in colliderFurnitures) { if (temp.furnitureType == FurnitureType.furniture || temp.furnitureType == FurnitureType.wall) { return(false); } if (temp.furnitureType == FurnitureType.ground) { if (fi.layer > temp.layer) { return(false); } floorCount++; } } canPlaceItem = (fi.furnitureSpace <= floorCount); break; } return(canPlaceItem); }
//lua端设置位置 public void LocFurniture(FurnitureItem fi, int dir, int index) { fi.Direction = dir; SetFurnitureIndex(fi, index); }