public void ClearSelection() { lock (selLock) { if (selTitle != null) { ResetSelectionHUD(); } selTitle = null; selState = null; selCallback = null; selMarkCallback = null; Blockchange = null; } }
void SelectionBlockChange(Player p, ushort x, ushort y, ushort z, ExtBlock block) { lock (selLock) { Blockchange = SelectionBlockChange; RevertBlock(x, y, z); selMarks[selIndex] = new Vec3S32(x, y, z); if (selMarkCallback != null) { selMarkCallback(p, selMarks, selIndex, selState, block); } // Mark callback cancelled selection if (selCallback == null) { return; } selIndex++; if (selIndex == 1 && selTitle != null) { SendCpeMessage(CpeMessageType.BottomRight2, "Mark #1" + FormatSelectionMark(selMarks[0])); } else if (selIndex == 2 && selTitle != null) { SendCpeMessage(CpeMessageType.BottomRight1, "Mark #2" + FormatSelectionMark(selMarks[0])); } if (selIndex != selMarks.Length) { return; } string title = selTitle; object state = selState; SelectionMarkHandler markCallback = selMarkCallback; SelectionHandler callback = selCallback; ClearSelection(); if (!block.IsPhysicsType) { block = p.BlockBindings[block.RawID]; } bool canRepeat = callback(this, selMarks, state, block); if (canRepeat && staticCommands) { MakeSelection(selIndex, title, state, callback, markCallback); } } }
public void MakeSelection(int marks, string title, object state, SelectionHandler callback, SelectionMarkHandler markCallback = null) { lock (selLock) { selMarks = new Vec3S32[marks]; selTitle = title; selState = state; selCallback = callback; selMarkCallback = markCallback; selIndex = 0; Blockchange = SelectionBlockChange; if (title != null) { InitSelectionHUD(); } } }