Exemple #1
0
void ROOM_SPACE::DeleteOwner(People& p)
{

	ePipeline& OwnerInfo = GetOwnerInfo();
    ePipeline& OwnerList = *(ePipeline*)OwnerInfo.GetData(REG_OWNER_LIST);

	for (int i=0; i<OwnerInfo.Size();i++)
	{
		ePipeline* Owner = (ePipeline*)OwnerList.GetData(i);
		tstring& Cryptograph = *(tstring*)Owner->GetData(2);
		if (Cryptograph == p.m_Cryptograhp)
		{
			OwnerList.EraseEnergy(i,1);
			return ;
		}
	}

	if(p.GetParentID() == GetSpaceID()){
		p.GoOut();
		
		//这里应该有更多处理,p被赶出此空间,那么应该退回到上一个空间
		assert(0);
		return;
	}

}
Exemple #2
0
void People::GoOut(){
	if(IsValid()){
		int64 ParentID = GetParentID();
		int64 ChildID  = GetSpaceID();
		DeleteChild(ParentID,ChildID);
		m_ID = -1;
	}
}
Exemple #3
0
void CSpace::UpdateProperty(){
	if(!IsValid())return;
	
	AnsiString Property;
	GetProperty().ToString(Property);
	
	int64 ParentID = GetParentID();
	int64 ChildID  = GetSpaceID();

	CppSQLite3Buffer SQL;
	char     ParentName[30], ChildName[30]; 
    int64toa(ParentID,ParentName);
    int64toa(ChildID,ChildName);
	
	SQL.format("update \"%s\" set %s=\"%s\" where %s = \"%s\" ;",		         
		ParentName,
		ITEM_OWNER,
		Property.c_str(),
		ITEM_ID,
		ChildName
		);
    GetWorldDB().execDML(SQL);
};
Exemple #4
0
/*----------------------------------------------------------------------*
 |                                InvokeCommand                      |
 *----------------------------------------------------------------------*/
void 
InvokeCommand (
     Widget         w,
     Atom           target,
     MessageData    data,
     unsigned long  len,
     int            fmt)
{	
  CARD32      	commandID;
  Window  	windowID;
  WorkWindow *w_window;
  CommandSpace *cs;
  commandID = UnpackCARD32(&data);
  windowID = UnpackCARD32(&data);


  PRINT("commandID = %d\n",commandID);
  PRINT("windowID = %d\n", windowID);

  if (commandID == show_id)
  {
      if (wsm_shown)
      {
	  PRINT("hide workspace manager\n");
	  HideWsm();
      }
      else
      {
	  PRINT("show workspace manager\n");
	  ShowWsm();
      }
    }
  else if (commandID == occupy_id)
    {
      PRINT("copy window\n");
      w_window = GetWorkWindow(windowID);
      if (w_window != NULL)
	CreateOccupy(w_window);
    }
  else if (commandID == copy_all_id)
    {
      PRINT("copy window\n");
      w_window = GetWorkWindow(windowID);
      if (w_window != NULL)
	CopyWindow(w_window,current_space,all_space);
    }
  else if (commandID == link_all_id)
    {
      PRINT("copy window\n");
      w_window = GetWorkWindow(windowID);
      if (w_window != NULL)
	LinkWindow(w_window,current_space,all_space);
    }
  else if (commandID == remove_id)
    {
      PRINT("remove id\n");
      w_window = GetWorkWindow(windowID);
      if (w_window != 0)	
	{
	  if (w_window->s_list->next != NULL && w_window->window != None &&
	      _WSMGetConfigFormatType(w_window->window) != WSM_ICON_FMT)	      
	    DeleteWindow(w_window,current_space);
      }
    }
  else if ((cs = GetCSFromSwitchID(commandID)) != NULL)
    {
      PRINT("SendLeaveRoom(%s)\n",cs->space->name);	
      XmToggleButtonSetState(wsm_ui->space_button[GetSpaceID(cs->space)],True,True);
    }
  else if ((cs = GetCSFromCopyID(commandID)) != NULL)
    {
      PRINT("copy space");
      w_window = GetWorkWindow(windowID);
      if (w_window != NULL)
	{
	  PRINT(" %s\n",cs->space->name);
	  CopyWindow(w_window,current_space, cs->space);
	}
    }
  else if ((cs = GetCSFromLinkID(commandID)) != NULL)
    {
      PRINT("link space");
      w_window = GetWorkWindow(windowID);
      if (w_window != NULL)
	{
	  PRINT(" %s\n",cs->space->name);
	  LinkWindow(w_window,current_space, cs->space);
	}
    }	
  
  
}
Exemple #5
0
void CSpace::UpdateAll(BOOL bInsertNew){
  
	if(!IsValid())return ;

	int64 ParentID = m_ID;
	
	AnsiString Name;
	Name = WStoUTF8(GetName());

	int64 ChildID  = GetSpaceID();
	if (bInsertNew)
    {
		if(ChildID== -1){
			ChildID = AbstractSpace::CreateTimeStamp();
		}
    }


	SPACETYPE Type = GetSpaceType();

	AnsiString Fingerprint = WStoUTF8(GetFingerprint());

	AnsiString Property;
	GetProperty().ToString(Property);

	AnsiString OwnerInfo;
	GetOwnerInfo().ToString(OwnerInfo);
	    
	CppSQLite3Buffer SQL;
	char     ParentName[30], ChildName[30]; 
    int64toa(ParentID,ParentName);
    int64toa(ChildID,ChildName);
	
	if (bInsertNew)
	{
		if (!HasTable(ParentID))
		{
			CreateTable(ParentID);
		}
		SQL.format(" insert into \"%s\" values(\"%s\",\"%s\",%d,\"%s\",\"%s\" ,\"%s\");",		         
			ParentName,
			ChildName,
			Name.c_str(),
			Type,
			Fingerprint.c_str(),
			Property.c_str(),
			OwnerInfo.c_str()
			);		
	}else{
		
		SQL.format("update \"%s\" set %s=\"%s\" %s=%d %s=\"%s\" %s=\"%s\" %s=\"%s\" where %s = \"%s\" ;",		         
			ParentName,
			ITEM_NAME,
			Name.c_str(),
			ITEM_TYPE,
			Type,
			ITEM_FINGERPRINT,
			Fingerprint.c_str(),
			ITEM_PROPERTY,
			Property.c_str(),
			ITEM_OWNER,
			OwnerInfo.c_str(),
			ITEM_ID,
			ChildName
			);
	}
    GetWorldDB().execDML(SQL);
};
Exemple #6
0
SpaceAddress CSpace::GetAddress(){
	assert(IsValid());
	return 	SpaceAddress(GetParentID(),GetSpaceID());
};