当前位置: 首页>>代码示例>>C++>>正文


C++ Point2D::GetY方法代码示例

本文整理汇总了C++中Point2D::GetY方法的典型用法代码示例。如果您正苦于以下问题:C++ Point2D::GetY方法的具体用法?C++ Point2D::GetY怎么用?C++ Point2D::GetY使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Point2D的用法示例。


在下文中一共展示了Point2D::GetY方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: BuildTower

Float BuildTower(Script * script)
{
	if (script->VerifyArguments(2) == true)
	{
		Word * targetWord = script->GetNextWord();
		Word * posWord = script->GetNextWord();

		Point2D position(0, 0);
		Point2D * pos = (Point2D *)(uint32)posWord->value;
		if (pos != NULL)
		{
			position.SetValues(pos->GetX(), pos->GetY());
		}
		else
		{
			return false;
		}

		if ((IntervalCheck(position.GetX(), 1, GRID_SIZE - 2) == true) && (IntervalCheck(position.GetY(), 1, GRID_SIZE - 2) == true))
		{
			if (targetWord->type == POINTER)
			{
				Object * target = script->GetTarget(targetWord);
				if ((target != NULL) && (target->CheckType(OBJ_TYPE_TOWER) == true))
				{
					Grid * grid = WorldGame.GetGrid();
					Tower * tower = (Tower *)target;

					//To bypass grid auto-filling
					tower->SetState(false);

					Point2D towerCoords = tower->GetPosition();
					towerCoords.SetValues((towerCoords.GetX() - 80)/32, (towerCoords.GetY() - 80)/32);
					grid->SetPath(towerCoords, 0);	

					if (BuildTower(tower->GetTowerType(), position, true) == true)
					{
						Tower * newTower = grid->GetData(Point2D(position.GetX(), position.GetY()));
						tower->SetState(true);
						grid->FindPath(Origin);
						newTower->Copy(*tower);
						newTower->SetUInt32Value(TOWER_VAR_BUILD_TIME, GetGameTime());
						return true;
					}
					else
					{
						tower->SetState(true);
						grid->FindPath(Origin);
					}
				}
			}
			else if ((targetWord->type == NUMERIC) && (IntervalCheck(targetWord->value, 1, GetTowerDataSize()) == true))
			{
				return (BuildTower(targetWord->value, position, true));
			}
		}
	}
	return false;
}
开发者ID:Dingf,项目名称:Paper-TD,代码行数:59,代码来源:scripttowerhandler.cpp

示例2: SpellAreaTowers

Float SpellAreaTowers(Script * script)
{
	if (script->VerifyArguments(1) == true)
	{
		Word * spellWord = script->GetNextWord();

		GameObject * source = (GameObject *)script->GetSource();
		if ((source != NULL) && (source->CheckType(OBJ_TYPE_GAME_OBJECT) == true))
		{
			const Spell * spell = GetSpell(spellWord->value);
			if (spell != NULL)
			{
				Shape * shape = source->GetShape();
				Shape * newShape = shape->CreateInstance();
				newShape->Translate(source->GetPosition());

				Grid * grid = WorldGame.GetGrid();
				Tower ** TowerData = grid->GetData();

				for (uint32 i = 1; i < GRID_SIZE - 1; i++)
				{
					for (uint32 j = 1; j < GRID_SIZE - 1; j++)
					{
						Tower * tower = TowerData[(i*GRID_SIZE)+j];
						if ((tower != NULL) && (tower->GetState() == true) && (tower->ActiveSpell(spell, source) == false))
						{
							Point2D towerPos = tower->GetPosition();
							Rect towerRect(towerPos.GetX(), towerPos.GetY(), towerPos.GetX() + 32, towerPos.GetY() + 32);

							if (Intersect(newShape, &towerRect) == true)
							{
								if (tower->ActiveSpell(spell, source) == false)
								{
									tower->ApplySpell(spell, source);
								}
							}
							else
							{
								tower->RemoveSpell(spell, source);
							}
						}
					}
				}
				delete newShape;
				return true;
			}
		}
	}
	return false;
}
开发者ID:Dingf,项目名称:Paper-TD,代码行数:50,代码来源:scriptgobjecthandler.cpp

示例3: GetCount

/*! We construct a horizontal line that starts at point pt and goes into any
    direction. Then we count how many times the line crosses the
    polygon. Odd number of crossings means that the pt is inside
    of polygon.

    \retval true pt is inside the polygon.
    \retval false pt is outside the polygon. 

 */
bool Polygon2D::IsInside(
   const Point2D& pt, //!< point to be tested.
   bool /*bBorder*/       //!< true if polygon border is inside the polygon.
) const
{
	// (1) http://local.wasp.uwa.edu.au/~pbourke/geometry/insidepoly/
	const qreal y = pt.GetY();
	const qreal x = pt.GetX();

	const int npol = GetCount()+1;
	int i, j;
	bool bInside = false;

	for (i = 0, j = npol-1; i < npol; j = i++) {
		qreal ypi = m_vecV[i].GetY();
		qreal ypj = m_vecV[j].GetY();
		qreal xpi = m_vecV[i].GetX();
		qreal xpj = m_vecV[j].GetX();

		if (((ypi <= y) && (ypj > y)) || ((ypj <= y) && (ypi > y)))
			if((x < (xpj - xpi) * (y - ypi) / (ypj - ypi) + xpi))
				bInside = !bInside;
   }
	return bInside;
}
开发者ID:jpoirier,项目名称:x-gauges,代码行数:34,代码来源:Polygon2D.cpp

示例4: SpellAreaProjectiles

Float SpellAreaProjectiles(Script * script)
{
	if (script->VerifyArguments(1) == true)
	{
		Word * spellWord = script->GetNextWord();

		GameObject * source = (GameObject *)script->GetSource();
		if ((source != NULL) && (source->CheckType(OBJ_TYPE_GAME_OBJECT) == true))
		{
			const Spell * spell = GetSpell(spellWord->value);
			if (spell != NULL)
			{
				Shape * shape = source->GetShape();
				Shape * newShape = shape->CreateInstance();
				newShape->Translate(source->GetPosition());

				List<Projectile *> * ActiveProjectiles = GetActiveProjectiles();

				ActiveProjectiles->ToStart();
				for (uint32 i = 0; i < ActiveProjectiles->GetSize(); i++)
				{
					Projectile * projectile = ActiveProjectiles->GetCurrent();
					ActiveProjectiles->ToNext();

					uint32 baseSize = projectile->GetUInt32Value(PROJ_VAR_BASE_SIZE);
					Point2D position = projectile->GetPosition();
					Rect bounds(position.GetX(), position.GetY(), position.GetX() + baseSize, position.GetY() + baseSize);
					
					if (Intersect(newShape, &bounds) == true)
					{
						if (projectile->ActiveSpell(spell, source) == false)
						{
							projectile->ApplySpell(spell, source);
						}
					}
					else
					{
						projectile->RemoveSpell(spell, source);
					}
				}
				delete newShape;
				return true;
			}
		}
	}
	return false;
}
开发者ID:Dingf,项目名称:Paper-TD,代码行数:47,代码来源:scriptgobjecthandler.cpp

示例5: SpellAreaCreeps

Float SpellAreaCreeps(Script * script)
{
	if (script->VerifyArguments(1) == true)
	{
		Word * spellWord = script->GetNextWord();

		GameObject * source = (GameObject *)script->GetSource();
		if ((source != NULL) && (source->CheckType(OBJ_TYPE_GAME_OBJECT) == true))
		{
			const Spell * spell = GetSpell(spellWord->value);
			if (spell != NULL)
			{
				Shape * shape = source->GetShape();
				Shape * newShape = shape->CreateInstance();
				newShape->Translate(source->GetPosition());

				List<Creep *> * ActiveCreeps = GetActiveCreeps();

				ActiveCreeps->ToStart();
				for (uint32 i = 0; i < ActiveCreeps->GetSize(); i++)
				{
					Creep * creep = ActiveCreeps->GetCurrent();
					ActiveCreeps->ToNext();

					Point2D position = creep->GetPosition();
					Rect bounds(position.GetX(), position.GetY(), position.GetX() + 32, position.GetY() + 32);
					
					if (Intersect(newShape, &bounds) == true)
					{
						if (creep->ActiveSpell(spell, source) == false)
						{
							creep->ApplySpell(spell, source);
						}
					}
					else
					{
						creep->RemoveSpell(spell, source);
					}
				}
				delete newShape;
				return true;
			}
		}
	}
	return false;
}
开发者ID:Dingf,项目名称:Paper-TD,代码行数:46,代码来源:scriptgobjecthandler.cpp

示例6:

/*! Find a minimal rectangle that encapsulates the polygon. The
    rectangle is defined by ptMin and ptMax Point2D objects.
 */
void Polygon2D::GetSurroundingRectangle(
   Point2D& ptMin,   //!< Result - stores minimal x and y value. 
   Point2D& ptMax    //!< Result . stores maximal x and y value.
) const
{
   if(m_vecV.size()) {
      VecVertex::const_iterator i=m_vecV.begin();
      ptMin = ptMax = *i;
      // loop over remaining points
      for(i++; i!=m_vecV.end(); i++) {
         ptMin.SetX(GetMin(ptMin.GetX(), i->GetX()));
         ptMin.SetY(GetMin(ptMin.GetY(), i->GetY()));
         ptMax.SetX(GetMax(ptMax.GetX(), i->GetX()));
         ptMax.SetY(GetMax(ptMax.GetY(), i->GetY()));
      }
   }
}
开发者ID:jpoirier,项目名称:x-gauges,代码行数:20,代码来源:Polygon2D.cpp

示例7: RotateGameObject

Float RotateGameObject(Script * script)
{
	if (script->VerifyArguments(3) == true)
	{
		Word * rotatePosWord = script->GetNextWord();
		Point2D rotatePosition(0, 0);
		Point2D * rotatePos = (Point2D *)(uint32)rotatePosWord->value;
		if (rotatePos != NULL)
		{
			rotatePosition.SetValues(rotatePos->GetX(), rotatePos->GetY());
		}

		Word * angleWord = script->GetNextWord();

		Word * directionWord = script->GetNextWord();
		Vector3D direction(0, 0, 0);
		Point2D * dirVector = (Point2D *)(uint32)directionWord->value;
		if (dirVector != NULL)
		{
			direction.SetValues(dirVector->GetX(), dirVector->GetY(), 0);
		}

		GameObject * source = (GameObject *)script->GetSource();
		Shape * shape = source->GetShape();
		
		if ((rotatePos != NULL) && (source != NULL) && (source->CheckType(OBJ_TYPE_GAME_OBJECT) == true) && (shape != NULL))
		{
			Float distance = CalculateDistance(rotatePosition, source->GetPosition());
			if (angleWord->value != NULL)
			{
				Vector3D sourceDirection(rotatePosition, source->GetPosition());
				Float angle = sourceDirection.GetZeroAngleD() + angleWord->value;
				
				source->SetPosition(rotatePosition.GetX() + (distance * CosD(angle)),
									rotatePosition.GetY() + (distance * SinD(angle)));

				direction.SetValues(rotatePosition, source->GetPosition());
				direction.SetUnitVector();
			}
			else if (dirVector != NULL)
			{
				direction -= rotatePosition;
				direction.SetUnitVector();

				source->SetPosition(rotatePosition.GetX() + (direction.GetX() * distance),
									rotatePosition.GetY() + (direction.GetY() * distance));
			}
			else
			{
				return false;
			}

			if ((shape->GetType() == SHAPE_TYPE_LINE) || (shape->GetType() == SHAPE_TYPE_LINE_SEGMENT))
			{
				Line * line = (Line *)shape;
				Line * newLine = (Line *)line->CreateInstance();
				newLine->Translate(source->GetPosition());	

				Vector3D v1(rotatePosition, newLine->GetPoint1());
				Vector3D v2(rotatePosition, newLine->GetPoint2());

				Float baseAngle = direction.GetZeroAngleD();

				Float v1Length = v1.GetLength();
				Float v2Length = v2.GetLength();
				Float angle1 = v1.GetZeroAngleD() - baseAngle;
				Float angle2 = v2.GetZeroAngleD() - baseAngle;

				Point2D p1((v1Length * CosD(angle1)),
						   (v1Length * SinD(angle1)));
				Point2D p2((v2Length * CosD(angle2)),
						   (v2Length * SinD(angle2)));

				line->SetValues(p1 + rotatePosition, p2 + rotatePosition);

				line->Translate(!source->GetPosition());

				delete newLine;
			}
			else if (shape->GetType() == SHAPE_TYPE_CONE)
			{
				Cone * cone = (Cone *)shape;
				cone->SetValues(cone->GetVertex(), Vector3D(dirVector->GetX(), dirVector->GetY(), 0), cone->GetHeight(), cone->GetAngle());
			}
			return true;
		}
	}
	return false;
}
开发者ID:Dingf,项目名称:Paper-TD,代码行数:89,代码来源:scriptgobjecthandler.cpp

示例8: DamageArea

Float DamageArea(Script * script)
{
	if (script->VerifyArguments(4) == true)
	{
		Word * damageType = script->GetNextWord();
		Word * timeWord = script->PeekWord(2);
		Word * cycles = script->PeekWord(3);

		Object * originalSource = script->GetOriginalSource();
		GameObject * target = (GameObject *)script->GetSource();
		if ((target != NULL) && (target->CheckType(OBJ_TYPE_GAME_OBJECT) == true))
		{
			uint32 currentTime = GetGameTime();
			uint32 startTime = target->GetUInt32Value(GOBJECT_VAR_START_TIME);

			if (((startTime + (timeWord->value * cycles->value)) > currentTime) || (cycles->value <= 0))
			{
				List<Creep *> * ActiveCreeps = GetActiveCreeps();

				Shape * shape = target->GetShape();
				Shape * newShape = shape->CreateInstance();
				newShape->Translate(target->GetPosition());

				ActiveCreeps->ToStart();
				for (uint32 i = 0; i < ActiveCreeps->GetSize(); i++)
				{
					Creep * creep = ActiveCreeps->GetCurrent();
					ActiveCreeps->ToNext();

					if ((creep != NULL) && (creep->GetState() == true))
					{
						Point2D creepPos = creep->GetPosition();
						Rect creepRect(creepPos.GetX(), creepPos.GetY(), creepPos.GetX() + 32, creepPos.GetY() + 32);

						if (Intersect(newShape, &creepRect) == true)
						{
							script->SetSource(creep);

							Word * damageWord = script->PeekWord(1);
							Float damage = (timeWord->value == 0) ? damageWord->value : (damageWord->value * target->GetUInt32Value(GOBJECT_VAR_TIME_DIFFERENCE))/timeWord->value;

							if (damageType->value == CREEP_VAR_HITPOINTS)
							{
								if ((creep->GetInt32Value(CREEP_VAR_SPELL_IMMUNE) == false) && (creep->GetInt32Value(CREEP_VAR_SPLASH_IMMUNE) == false))
								{
									creep->InflictDamage(damage, creep->GetArmor());
								}
							}
							else
							{
								creep->ModValue(damageType->type, damageType->value, -damage);
							}
							if ((creep->GetState() == false) || (creep->GetFloatValue(CREEP_VAR_MAX_HITPOINTS) <= 0))
							{
								creep->SetState(false);
								AddTowerKill(target);
							}
						}
					}
				}

				delete newShape;
				script->SetSource(originalSource);

				//Properly offset the words list
				for (uint32 i = 0; i < 3; i++)
				{
					script->GetNextOriginalWord();
				}
				return true;
			}	
		}
		script->SetSource(originalSource);
	}
	return false;
}
开发者ID:Dingf,项目名称:Paper-TD,代码行数:76,代码来源:scriptgobjecthandler.cpp

示例9:

Rect::Rect(const Point2D& topLeft, const Point2D& bottomRight)
{
	SetType(SHAPE_TYPE_RECT);
	SetValues(topLeft.GetX(), topLeft.GetY(), bottomRight.GetX(), bottomRight.GetY());
}
开发者ID:Dingf,项目名称:Paper-TD,代码行数:5,代码来源:rect.cpp

示例10: Move

void Entity::Move(Point2D new_path)
{
	m_position.SetX(m_position.GetX()+new_path.GetX());
	m_position.SetY(m_position.GetY()+new_path.GetY());
}
开发者ID:hLachev,项目名称:God,代码行数:5,代码来源:Entity.cpp

示例11: PrintText

void Font::PrintText(const char * text, const Point2D& pos, const Rect& bounds, uint8 format) const
{
	Point2D offset;

	glPushMatrix();
	glLoadIdentity();
	glColor(Black);
	glTranslated(pos.GetX(), pos.GetY(), 0);

	uint8 justify = format & 0x03;

	Float lineOffset = (int32)(CalculateLineLength(text, bounds.GetWidth(), 0)/2.0 * justify);
	offset.SetValues(offset.GetX() + lineOffset, offset.GetY());
	glTranslated(lineOffset, 0.0, 0);

	uint32 textPos = 0;
	while (textPos < strlen(text))
	{
		bool wordBegin = true;
		uint32 wordLength = GetWordLength(text, textPos);
		uint32 wordSpace = GetWordSpace(text, textPos);

		for (uint32 i = textPos; i < textPos + wordLength; i++)
		{
			if (text[i] == '&')
			{
				ParseSpecial(text, i, true);
				continue;
			}
			else if (((text[i] == '\n') || ((text[i] == '\\') && (text[i+1] == 'n')) || (offset.GetX() > bounds.GetWidth())) || ((wordSpace + offset.GetX() >= bounds.GetWidth()) && (wordSpace < bounds.GetWidth()) && (wordBegin == true)))
			{
				glTranslated(-offset.GetX(), baseSize, 0);
				offset.SetValues(0, offset.GetY() + baseSize);
				if (offset.GetY() > bounds.GetHeight())
				{
					glPopMatrix();
					return;
				}
				lineOffset = (int32)(CalculateLineLength(text, bounds.GetWidth(), i + 1)/2.0 * justify);
				offset.SetValues(offset.GetX() + lineOffset, offset.GetY());
				glTranslated(lineOffset, 0.0, 0);

				if (text[i] == '\n')
				{
					continue;
				}
				else if ((text[i] == '\\') && (text[i+1] == 'n'))
				{
					i++;
					continue;
				}
			}
			glCallList(text[i] + displayLists);
			offset.SetValues(offset.GetX() + width[text[i]], offset.GetY());
			wordBegin = false;
		}

		offset.SetValues(offset.GetX() + baseSize, offset.GetY());
		glTranslated(baseSize, 0, 0);

		textPos += wordLength + 1;
	}

	glPopMatrix();
}
开发者ID:Dingf,项目名称:Paper-TD,代码行数:65,代码来源:font.cpp


注:本文中的Point2D::GetY方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。