public static void Designer_Restore( GameClient 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 ); } }
public static void Designer_Revert( GameClient 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( GameClient 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 ); } }