public bool remove(PlaceSide side) { if (side == PlaceSide.Back) { if (back == null) { return(false); } back = null; if (fore == null) { remove(); } } else // PlaceSide.Fore { if (fore == null) { return(false); } fore = null; if (back == null) { remove(); } } World.world.onVoxelUpdated(baseLocation); return(true); }
/// <summary> /// /// </summary> /// <param name="baseLoc"></param> /// <param name="front"></param> /// <param name="side"></param> public void Destroy(Location baseLoc, Direction front, PlaceSide side) { HalfDividedVoxel v = WorldDefinition.World[baseLoc] as HalfDividedVoxel; if (v != null) { v.owner.remove(side); } }
public ContributionReference(HalfVoxelContribution hvc, int color, int hilight, Direction front, PlaceSide side) { this.contrib = hvc; this.colorIdx = color; this.hilightIdx = hilight; this.placeSide = side; this.frontface = front; this.patternIdx = SpriteSet.getIndexOf(front, side); }
/// <summary> /// /// </summary> /// <param name="d"></param> /// <param name="s"></param> /// <param name="col"></param> /// <returns></returns> public ISprite GetHighLightSprite(Direction d, PlaceSide s, int col) { if (hilights != null) { return(hilights[col][d, s]); } else { return(null); } }
public Sprite this[Direction d, PlaceSide s] { get { return(sprites[getIndexOf(d, s)]); } set { sprites[getIndexOf(d, s)] = value; } }
/// <summary> /// Called when the selection is completed. /// </summary> protected void OnVoxelSelected(Location loc, Direction front, PlaceSide side) { if (remover) { contrib.Destroy(loc, front, side); } else { contrib.Create(loc, front, side); onCreated(); } }
/// <summary> /// /// /// </summary> /// <param name="baseLoc"></param> /// <param name="front"></param> /// <param name="side"></param> /// <returns></returns> public Structure Create(Location baseLoc, Direction front, PlaceSide side) { ContributionReference reffer = new ContributionReference(this, currentColor, currentHighlight, front, side); HalfDividedVoxel v = WorldDefinition.World[baseLoc] as HalfDividedVoxel; if (v == null) { return(new HVStructure(reffer, baseLoc)); } else { if (!v.owner.add(reffer)) { MessageBox.Show("Not enough space or no fit"); } return(v.owner); } }
public Structure create(Location baseLoc, Direction front, PlaceSide side) { ContributionReference reffer = new ContributionReference(this, currentColor, currentHighlight, front, side); HalfDividedVoxel v = World.world[baseLoc] as HalfDividedVoxel; if (v == null) { return(new HVStructure(reffer, baseLoc)); } else { if (!v.owner.add(reffer)) { MainWindow.showError("Not enough space or no fit"); } //! MainWindow.showError("設置スペースが無いか、一致しません"); return(v.owner); } }
/// <summary> /// /// </summary> /// <param name="d"></param> /// <param name="s"></param> /// <param name="col"></param> /// <returns></returns> public ISprite GetSprite(Direction d, PlaceSide s, int col) { return(sprites[col][d, s]); }
/// <summary> /// /// </summary> /// <param name="d"></param> /// <param name="s"></param> /// <returns></returns> protected Point GetOffset(Direction d, PlaceSide s) { Point o = offsets[d.index / 2 + (int)s * 4]; return(new Point(o.X, o.Y + height * 16)); }
static internal int getIndexOf(Direction d, PlaceSide s) { return(d.index / 2 + (int)s * 4); }
public EmptyReference(HalfVoxelContribution hvc, int color, int hilight, Direction front, PlaceSide side) : base(null, -1, -1, front, side) { }
/// <summary> /// Called when the selection is changed. /// </summary> protected void OnVoxelUpdated(Location loc, Direction front, PlaceSide side) { }