Exemplo n.º 1
0
void Renderer::DrawSprite(const Sprite &s, int x, int y, float theta,
		bool flip, int anim, int frame)
{
	sf::Sprite &sprite = SFData::Sprites[s.Index];
	int tx, ty, tw, th;
	s.Animations[anim].GetRect(frame, tx, ty, tw, th);
	int fx, fy;
	GetFieldPos(fx, fy);
	sprite.setTextureRect(sf::IntRect(tx, ty, tw, th));
	sprite.setPosition(
			x * Scale * 8 / TILE_SIZE + fx,
			y * Scale * 8 / TILE_SIZE + fy);
	sprite.setRotation(theta);
	sprite.setScale(flip ? -Scale : Scale, Scale);
	SFData::Window->draw(sprite);
}
Exemplo n.º 2
0
BOOL Upgrade_ShareData(CDaoDatabase& db)
{
	try
	{
		CDaoTableDefEx table(&db);

		table.Open(_T("Main"));
		table.CreateField(_T("lDataID"), dbLong, 4, 0, _T("0")); // corresponds to Data.lDataID
		table.CreateIndex(FALSE, _T("lDataID"));
		table.Close();

		table.Open(_T("Data"));
		table.CreateField(_T("lDataID"), dbLong, 4, 0, _T("0")); // parent Group Main.lID
		table.CreateIndex(FALSE, _T("lDataID"));
		table.Close();

		// set defaults
		db.Execute(_T("UPDATE Main SET lDataID = 0"), dbFailOnError);
		db.Execute(_T("UPDATE Data SET lDataID = 0"), dbFailOnError);

		// update Main.lDataID and Data.lParentID for sharing Data
		//
		// - multiple Formats (Data.lID) exist for a single ClipData (Data.lDataID)
		// - The value of lDataID is arbitrary, but must be unique to the ClipData.
		//   - In order to ensure uniqueness, lDataID is assigned the lID of
		//     the first Format in the Clip's set.

		COleVariant var((long)0);
		CDaoRecordset main(&db);
		long main_fldID;
		long main_fldDataID;
		long main_lID;

		CDaoRecordset data(&db);
		long data_fldID;
		long data_fldDataID;
		long lDataID;
		int count = 0;
		int i = 0;
		int percentPrev = -1;
		int percent = -1;

		main.Open(dbOpenDynaset, _T("SELECT lID, lDataID FROM Main"));

		main_fldID = GetFieldPos(main, _T("lID"));
		VERIFY(main_fldID == 0);
		main_fldDataID = GetFieldPos(main, _T("lDataID"));
		VERIFY(main_fldDataID == 1);

		if( !main.IsEOF() )
		{
			main.MoveLast();
			count = main.GetRecordCount();
			main.MoveFirst();
		}

		// for each record in Main and its corresponding records in Data,
		//  assign a new unique lDataID.
		while( !main.IsEOF() )
		{
			i++;
			percentPrev = percent;
			percent = (i*100)/count;

			main.GetFieldValue(main_fldID,var);
			main_lID = var.lVal;

			CString cs;
			cs.Format(_T("SELECT lID, lDataID FROM Data WHERE lParentID = %d"), main_lID);

			data.Open(dbOpenDynaset, cs);

			data_fldID = GetFieldPos(data, _T("lID"));
			VERIFY(data_fldID == 0);
			data_fldDataID = GetFieldPos(data, _T("lDataID"));
			VERIFY(data_fldDataID == 1);

			// lDataID = the first data record lID
			lDataID = 0;
			if( !data.IsEOF() )
			{
				data.GetFieldValue(0,var); // 0 == lID field
				lDataID = var.lVal;
			}
			// assign all Data records the same lDataID
			while( !data.IsEOF() )
			{
				var.lVal = lDataID;
				data.Edit();
				data.SetFieldValue(1,var); // 1 == lDataID field
				data.Update();
				data.MoveNext();
			}

			// assign Main.lDataID
			var.lVal = lDataID;
			main.Edit();
			main.SetFieldValue(1,var); // 1 == lDataID field
			main.Update();
			main.MoveNext();

			data.Close();
		}

		main.Close();

		// delete the old field
		db.Execute(_T("ALTER TABLE Data DROP CONSTRAINT lParentID"), dbFailOnError);
		db.Execute(_T("ALTER TABLE Data DROP COLUMN lParentID"), dbFailOnError);
	}
	catch(CDaoException* e)
	{
		ASSERT(FALSE);
		e->Delete();
		return FALSE;
	}
	
	return TRUE;
}