public static void Designer_Revert( NetState state, IEntity e, EncodedReader pvSrc ) { Mobile from = state.Mobile; DesignContext context = DesignContext.Find( from ); if ( context != null ) { /* Client chose to revert design state to currently visible state * - Revert design state * - Construct a copy of the current visible state * - Freeze fixtures in constructed state * - Assign constructed state to foundation * - If a signpost is needed, add it * - Update revision * - Update client with new state */ // Revert design state : Construct a copy of the current visible state DesignState copyState = new DesignState( context.Foundation.CurrentState ); // Revert design state : Freeze fixtures in constructed state copyState.FreezeFixtures(); // Revert design state : Assign constructed state to foundation context.Foundation.DesignState = copyState; // Revert design state : If a signpost is needed, add it context.Foundation.CheckSignpost(); // Update revision copyState.OnRevised(); // Update client with new state context.Foundation.SendInfoTo( state ); copyState.SendDetailedInfoTo( state ); } }
public static void Designer_Clear( NetState state, IEntity e, EncodedReader pvSrc ) { Mobile from = state.Mobile; DesignContext context = DesignContext.Find( from ); if ( context != null ) { /* Client chose to clear the design * - Restore empty foundation * - Construct new design state from empty foundation * - Assign constructed state to foundation * - Update revision * - Update client with new state */ // Restore empty foundation : Construct new design state from empty foundation DesignState newDesign = new DesignState( context.Foundation, context.Foundation.GetEmptyFoundation() ); // Restore empty foundation : Assign constructed state to foundation context.Foundation.DesignState = newDesign; // Update revision newDesign.OnRevised(); // Update client with new state context.Foundation.SendInfoTo( state ); newDesign.SendDetailedInfoTo( state ); } }
public static void Designer_Restore( NetState state, IEntity e, EncodedReader pvSrc ) { Mobile from = state.Mobile; DesignContext context = DesignContext.Find( from ); if ( context != null ) { /* Client chose to restore design to the last backup state * - Restore backup * - Construct new design state from backup state * - Assign constructed state to foundation * - Update revision * - Update client with new state */ // Restore backup : Construct new design state from backup state DesignState backupDesign = new DesignState( context.Foundation.BackupState ); // Restore backup : Assign constructed state to foundation context.Foundation.DesignState = backupDesign; // Update revision; backupDesign.OnRevised(); // Update client with new state context.Foundation.SendInfoTo( state ); backupDesign.SendDetailedInfoTo( state ); } }
private static bool TryInsertIntoState(DesignState state, int itemID, int x, int y, int z) { MultiComponentList mcl = state.Components; if (x < mcl.Min.X || y < mcl.Min.Y || x > mcl.Max.X || y > mcl.Max.Y) return false; mcl.Add(itemID, x, y, z); state.OnRevised(); return true; }