bool LockBarriers::Editor_MouseUp(const IPoint &mouse_pos, Game::Square *sq)
{
	if(_selected)
	{
		// закончили переаскивание, инициализируем клетки в новой позиции замка
		_selected->InitCell();
		_selected = NULL;
		CheckRepeat();
		return true;
	}
	CheckRepeat();
	return false;
}
Example #2
0
//---------------------------------------------------------------------------
//
//---------------------------------------------------------------------------
void __fastcall ASEditSvr::Save()
{
  //BLISINTRAN(DBConnection);
  PCPtr<PCCommand> lCommand;
  bool lCreateCommand = false;
  if(!fCommand){
	 lCreateCommand = true;
	 if(fAction.Trim().IsEmpty()) throw Exception("{必须指定活动代码}"+ERI);
	 lCommand = new PCCommand(ERI,fAction,"SaveEditDS");
	 fCommand = lCommand.Ptr();
  }
  try
  {
	//BLBEGINTRAN(DBConnection);
	BeforeInstCommand();
	fDataSets->ObjByIndex[0]->DataSetSvr->DataSet->DataSet->First();
	if(!CanUpdateRecords() )throw Exception("记录不符合修改条件");
	FillAutoValue();
	CheckRepeat();
	FillEditValue();
	String lsID = fDataSets->ObjByIndex[0]->DataSetSvr->DataSet->IDs;
	//根据需要把附件保存
	for(int j=0;j<fDataSets->Count;j++){
		for(int i=0;i<fDataSets->ObjByIndex[j]->fAttachs->Count;i++){
			ASEditDataSetAttachment *lObj = fDataSets->ObjByIndex[j]->fAttachs->ObjByIndex[i];
			lObj->saveToFile();
		}
	}
	Update();
	_di_IXMLNode lParentNode = Def->SubDefNode["DATASETS.EDITDS.POSTSAVE.ACTIONS"];
	if(lParentNode)
		 ExePostAction(lParentNode);
	lParentNode = Def->SubDefNode["DATASETS.EDITDS.POSTSAVE.POSTCONS"];
	if(lParentNode)
	  CheckPostCondition(lParentNode);
	AfterSaveAdapter();
	AfterInstCommandSuc();
	Retrieve(lsID);
	for(int i=0;i<fDataSets->Count;i++){
	   fDataSets->ObjByIndex[i]->afterSave();
	}
	//BLCOMMITTRAN(DBConnection);
	if(BLSAMESTR(Enterprise->wfManager->defERI,ERI)){
	   DBConnection->CommitTrans();
	   DBConnection->BeginTrans();
	   Enterprise->wfManager->loadWorkflows(lsID);
	}	
  }
  catch(...)
  {
	//BLROLLBACKTRAN(DBConnection);
	throw;
  }
  if(lCreateCommand){
     fCommand = NULL;
  }
}
void LockBarriers::SaveLevel(Xml::TiXmlElement *root)
{
	if(_barriers.empty())
	{
		return;
	}
	CheckRepeat();
	Xml::TiXmlElement *barriers = root->InsertEndChild(Xml::TiXmlElement("LockBarriers"))->ToElement();
	for(size_t i = 0; i < _barriers.size(); ++i)
	{
		Xml::TiXmlElement *barrier = barriers->InsertEndChild(Xml::TiXmlElement("Barrier"))->ToElement();
		_barriers[i]->Save(barrier);
	}
}