示例#1
0
void Game::onTaskAnswered()
{
    bool oldFinished = isFinished();
    m_tasksAnswered++;
    if(m_currentTask->isCorrect())
        m_tasksAnsweredCorrectly++;
    emit tasksAnsweredChanged(m_tasksAnswered);


    // Adding points
    if (getMode()==Mode::DRAG) {
        setPoints(getPoints() + m_currentTask->getScore());
    }
    else {
        if(m_currentTask->isCorrect()){
            int receivedPoints = 50 * getMultiplier();
            setPoints(getPoints() + receivedPoints);
            setMultiplier(getMultiplier()+1);
        } else {
            setMultiplier(1);
        }
    }

    bool newFinished = isFinished();
    if(oldFinished != newFinished)emit finishedChanged(newFinished);
}
示例#2
0
bool VpGrid::getGridCoord(int *x, int *y)
{
    bool status = false;

    *x = getXSpacing() * getMultiplier();
    *y = getYSpacing() * getMultiplier();

    status = true;
    return status;
}
示例#3
0
void Tribe::onMemberKilled(Creature* member, Creature* attacker) {
  CHECK(member->getTribe() == this);
  if (attacker == nullptr)
    return;
  initStanding(attacker);
  standing[attacker] -= killPenalty * getMultiplier(member);
  for (Tribe* t : enemyTribes)
    if (t->diplomatic) {
      t->initStanding(attacker);
      t->standing[attacker] += killBonus * getMultiplier(member);
    }
}
示例#4
0
void Tribe::onMemberAttacked(Creature* member, Creature* attacker) {
  if (contains(attacks, make_pair(member, attacker)))
    return;
  attacks.emplace_back(member, attacker);
  initStanding(attacker);
  standing[attacker] -= attackPenalty * getMultiplier(member);
}
示例#5
0
void ECCell::dataChanged() {
    const double voltage = dataDouble("voltage");

    m_voltageSource.setVoltage(voltage);
    QString display = QString::number(voltage / getMultiplier(voltage), 'g', 3) + getNumberMag(voltage) + "V";
    setDisplayText("voltage", display);
}
示例#6
0
void ECVCVS::dataChanged() {
	double gain = dataDouble("gain");

	QString display = QString::number(gain / getMultiplier(gain), 'g', 3) + getNumberMag(gain) + QChar(' ');
	setDisplayText("gain", display);

	m_vcvs.setGain(gain);
}
示例#7
0
void Capacitor::dataChanged() {
	double capacitance = dataDouble("Capacitance");

	QString display = QString::number(capacitance / getMultiplier(capacitance), 'g', 3) + getNumberMag(capacitance) + "F";
	setDisplayText("capacitance", display);

	m_capacitance.setCapacitance(capacitance);
}
示例#8
0
void Tribe::onAttackEvent(Creature* member, Creature* attacker) {
  if (member->getTribe() != this)
    return;
  if (contains(attacks, make_pair(member, attacker)))
    return;
  attacks.emplace_back(member, attacker);
  initStanding(attacker);
  standing[attacker] -= attackPenalty * getMultiplier(member);
}
示例#9
0
DigitList &
ScientificPrecision::round(DigitList &value, UErrorCode &status) const {
    if (U_FAILURE(status)) {
        return value;
    }
    int32_t exponent = value.getScientificExponent(
            fMantissa.fMin.getIntDigitCount(), getMultiplier());
    return fMantissa.round(value, exponent, status);
}
示例#10
0
void ECPotentiometer::dataChanged()
{
	m_resistance = dataDouble("resistance");
	
	QString display = QString::number( m_resistance / getMultiplier(m_resistance), 'g', 3 ) + getNumberMag(m_resistance) + QChar(0x3a9);
	setDisplayText( "res", display );
	
	sliderValueChanged( "slider", slider("slider")->value() );
}
示例#11
0
void ResistorDIP::dataChanged()
{
	initPins();
	const double resistance = dataDouble("resistance");
	for ( int i=0; i<m_resistorCount; ++i )
		m_resistance[i]->setResistance(resistance);
	
	const QString display = QString::number( resistance / getMultiplier(resistance), 'g', 3 ) + getNumberMag(resistance) + QChar(0x3a9);
	addDisplayText( "res", QRect( offsetX(), offsetY()-16, 32, 12 ), display );
}
示例#12
0
void ECCurrentSignal::dataChanged()
{
	const double current = dataDouble("1-current");
	const double frequency = dataDouble("1-frequency");
	
	QString display = QString::number( current / getMultiplier(current), 'g', 3 ) + getNumberMag(current) + "A";
	setDisplayText( "current", display );
	
	m_currentSignal->setStep(ElementSignal::st_sinusoidal, frequency );
	m_currentSignal->setCurrent(current);
}
示例#13
0
MUserData *ovalLocatorDrawOverride::prepareForDraw (const MDagPath &objPath, const MDagPath &cameraPath, MUserData *oldData) {
#else
MUserData *ovalLocatorDrawOverride::prepareForDraw (const MDagPath &objPath, const MDagPath &cameraPath, const MHWRender::MFrameContext &frameContext, MUserData *oldData) {
#endif
	// Retrieve data cache (create if does not exist)
	ovalLocatorData *data =dynamic_cast<ovalLocatorData *>(oldData) ;
	if ( !data )
		data =new ovalLocatorData () ;
	// compute data and cache it
	data->multiplier =getMultiplier (objPath) ;
	return (data) ;
}
/* Spezialtasten-Druck-Callback - wird ausgefuehrt, wenn Spezialtaste
* (F1 - F12, Links, Rechts, Oben, Unten, Bild-Auf, Bild-Ab, Pos1, Ende oder
* Einfuegen) gedrueckt wird */
void cbSpecial (int key, int x, int y)
{
    switch (key)
    {
        case GLUT_KEY_LEFT:
            setPixelDistance(getPixelDistance() - PIXEL_DISTANCE_DELTA);
            break;
        case GLUT_KEY_RIGHT:
            setPixelDistance(getPixelDistance() + PIXEL_DISTANCE_DELTA);
            break;
        case GLUT_KEY_UP:
            setMultiplier(getMultiplier() + MULTIPLIER_DELTA);
            break;
        case GLUT_KEY_DOWN:
            setMultiplier(getMultiplier() - MULTIPLIER_DELTA);
            break;
        case GLUT_KEY_F1:
            toggleWireframeMode();
            break;
    }
}
示例#15
0
// Called by Maya each time the object needs to be drawn.
MUserData* FootPrintDrawOverride::prepareForDraw(
	const MDagPath& objPath,
	const MDagPath& cameraPath,
	const MHWRender::MFrameContext& frameContext,
	MUserData* oldData)
{
	// Any data needed from the Maya dependency graph must be retrieved and cached in this stage.
	// There is one cache data for each drawable instance, if it is not desirable to allow Maya to handle data
	// caching, simply return null in this method and ignore user data parameter in draw callback method.
	// e.g. in this sample, we compute and cache the data for usage later when we create the 
	// MUIDrawManager to draw footprint in method addUIDrawables().
	FootPrintData* data = dynamic_cast<FootPrintData*>(oldData);
	if (!data)
	{
		data = new FootPrintData();
	}
	
	float fMultiplier = getMultiplier(objPath);

	data->fSoleLineList.clear();
	for (int i = 0; i < soleCount; i++)
	{
		data->fSoleLineList.append(sole[i][0] * fMultiplier, sole[i][1] * fMultiplier, sole[i][2] * fMultiplier);
	}

	data->fHeelLineList.clear();
	for (int i = 0; i < heelCount; i++)
	{
		data->fHeelLineList.append(heel[i][0] * fMultiplier, heel[i][1] * fMultiplier, heel[i][2] * fMultiplier);
	}

	data->fSoleTriangleList.clear();	
	for (int i = 1; i <= soleCount - 2; i++)
	{
		data->fSoleTriangleList.append(sole[0][0] * fMultiplier, sole[0][1] * fMultiplier, sole[0][2] * fMultiplier);
		data->fSoleTriangleList.append(sole[i][0] * fMultiplier, sole[i][1] * fMultiplier, sole[i][2] * fMultiplier);
		data->fSoleTriangleList.append(sole[i+1][0] * fMultiplier, sole[i+1][1] * fMultiplier, sole[i+1][2] * fMultiplier);
	}

	data->fHeelTriangleList.clear();	
	for (int i = 1; i <= heelCount - 2; i++)
	{
		data->fHeelTriangleList.append(heel[0][0] * fMultiplier, heel[0][1] * fMultiplier, heel[0][2] * fMultiplier);
		data->fHeelTriangleList.append(heel[i][0] * fMultiplier, heel[i][1] * fMultiplier, heel[i][2] * fMultiplier);
		data->fHeelTriangleList.append(heel[i+1][0] * fMultiplier, heel[i+1][1] * fMultiplier, heel[i+1][2] * fMultiplier);
	}

    // get correct color based on the state of object, e.g. active or dormant
	data->fColor = MHWRender::MGeometryUtilities::wireframeColor(objPath);

	return data;
}
示例#16
0
int stringToInt(char *string) {
	int size = countStringSize(string) - 1;
	int sum = 0;

	for(int index = 0; size > 0; index++) {
		int muptilpier = getMultiplier(--size);
		int digit = string[index] - '0';

		sum += digit * muptilpier;
	}

	return sum;
}
示例#17
0
MBoundingBox FootPrintDrawOverride::boundingBox(
	const MDagPath& objPath,
	const MDagPath& cameraPath) const
{
	MPoint corner1( -0.17, 0.0, -0.7 );
	MPoint corner2( 0.17, 0.0, 0.3 );

	float multiplier = getMultiplier(objPath);
	corner1 = corner1 * multiplier;
	corner2 = corner2 * multiplier;

	return MBoundingBox( corner1, corner2 );
}
示例#18
0
void VariableCapacitor::sliderValueChanged(const QString &id, int newValue) {
	if (id != "slider") return;

	/** @todo fix slider so current cap can be set in toolbar and editor and slider updates */
	m_currCapacitance = m_minCapacitance + (newValue * m_tickValue);

	// Set the new capacitance value.
	m_pCapacitance.setCapacitance(m_currCapacitance);

	// Update property.
	property("currcapacitance")->setValue(m_currCapacitance);

	QString display = QString::number(m_currCapacitance / getMultiplier(m_currCapacitance),	 'g', 3)
	+ getNumberMag(m_currCapacitance) + "F";

	setDisplayText("capacitance", display);
}
void drawAttributes(void) {
	GLfloat textColor[3] = { 1.0f, 1.0f, 1.0f };
	char * string1 = calloc ((strlen ("Range      = ") + 4), sizeof(char));
	char * string2 = calloc ((strlen ("Multiplier = ") + 4), sizeof(char));
	char * string3 = calloc ((strlen ("PixelDist  = ") + 4), sizeof(char));
	sprintf(string1, "Range      = %d", getRange());
	sprintf(string2, "Multiplier = %f", getMultiplier());
	sprintf(string3, "PixelDist  = %d", getPixelDistance());
	
	drawString (0.6, 0.13, textColor, string1);
	drawString (0.6, 0.16, textColor, string2);
	drawString (0.6, 0.19, textColor, string3);
	
	free (string1);
	free (string2);
	free (string3);
}
示例#20
0
 HSPToken *expectInteger32(HSP *sp, HSPToken *tok, uint32_t *arg, uint32_t minVal, uint32_t maxVal)
 {
   HSPToken *t = tok;
   t = t->nxt;
   if(t == NULL || !isdigit(t->str[0])) {
     parseError(sp, tok, "expected integer", "");
     return NULL;
   }
   char *str = my_strdup(t->str); // take a copy so we can modify it
   uint32_t mult = getMultiplier(str);
   *arg = (mult * strtol(str, NULL, 0));
   my_free(str);
   if(*arg < minVal || *arg > maxVal) {
     parseError(sp, tok, "range error", "");
     return NULL;
   }
   return t;
 }
示例#21
0
/*
 * Does an action against a target, allows the user to choose which ability is used
 */
void Protagonist::doAction(Character *target) {
	string inputAbilityName;
	set<string> abilityNames = getAbilityNames();

	do {
		cout << "Choose an attack (current energy is " << getEnergy() << ")\n";
		printAbilities();
		cin >> inputAbilityName;
	} while (!isStringInSetIgnoreCase(inputAbilityName, abilityNames));

	Ability inputAbility = getAbilityFromName(inputAbilityName);

	cout << getName() << " used " << inputAbilityName << "\n";

	double multiplier = getMultiplier(inputAbility.getType(),
			target->getType());

	inputAbility.doAbility(this, target, multiplier);

}
示例#22
0
	static long long trainClient( Competitor& client, std::vector< ObjectiveFn >& p ) {
		
		const long long startTime = system_current_time_millis();		
		// const long long maxTime = getTrainingTimeInMillis( client.getTrainingCategory() );
		const long maxTime = BASE_TIME_PER_INSTANCE_IN_MILLIS * p.size() * getMultiplier( client.getTrainingCategory() );
		trainingEndTime() = startTime + maxTime;
		
		try {
			client.train( p, maxTime );
		}
		catch( EvaluationsExceededException& ) {
			// Intentionally empty
		}
		catch( TimeExceededException& ) {
			// Intentionally empty
		}
		
		const long long endTime = system_current_time_millis();
		return endTime - startTime;
	}
/**
 * Zeichen-Callback.
 * Loescht die Buffer, ruft das Zeichnen der Szene auf und tauscht den Front-
 * und Backbuffer.
 */
static void
cbDisplay (void)
{
    int toX = G_fullScreen ? G_Width : G_Width/2,
        toZ = G_fullScreen ? G_Height : G_Height/2;

    glBindFramebuffer(GL_FRAMEBUFFER, 0);
    glClearColor(0.0, 1.0, 1.0, 0.0);
    glClearDepth(1.0f);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    if (!getHelpStatus()) {
        /*==================================================================*/
        /* Textur mit Kamera-Perspektive */
        /*==================================================================*/
        drawSceneToTexture(G_fboCam, getCameraPosition(0), getCameraPosition(1), getCameraPosition(2), 0.0, 0.0, 0.0);

        /*==================================================================*/
        /* Terrain mit Ambient Occlusion. */
        /*==================================================================*/
        glUseProgram(G_ShaderID);
            glBindFramebuffer(GL_FRAMEBUFFER, 0);
            glViewport (0, 0, toX, toZ);
            setProjection (1);
            glMatrixMode(GL_MODELVIEW);
            glLoadIdentity();
            gluLookAt (getCameraPosition(0), getCameraPosition(1), getCameraPosition(2),
                 0.0, 0.0, 0.0,
                 0.0, 1.0, 0.0);

            glActiveTexture(GL_TEXTURE1);
            glBindTexture(GL_TEXTURE_2D, G_TexCamera);
            glActiveTexture(GL_TEXTURE0);
            glBindTexture(GL_TEXTURE_2D, G_TexCameraDepth);

            GLfloat mp[16], mv[16];
            glGetFloatv(GL_PROJECTION_MATRIX, mp);
            glGetFloatv(GL_MODELVIEW_MATRIX, mv);
            glUniformMatrix4fv(glGetUniformLocation(G_ShaderID, "projMatrix"),  1, GL_FALSE, &mp[0]);
            glUniformMatrix4fv(glGetUniformLocation(G_ShaderID, "viewMatrix"),  1, GL_FALSE, &mv[0]);

            glUniform1i(G_sampler2dLoc, 1);
            glUniform1i(G_samplerDepth2dLoc, 0);

            GLuint showTexture[] = {G_showTexture};
            glUniform1iv(glGetUniformLocation(G_ShaderID, "showTexture"), 1, showTexture);
            GLuint screenWidth[] = {G_Width};
            glUniform1iv(glGetUniformLocation(G_ShaderID, "screenWidth"), 1, screenWidth);
            GLuint screenHeight[] = {G_Height};
            glUniform1iv(glGetUniformLocation(G_ShaderID, "screenHeight"), 1, screenHeight);

            GLfloat nearPlane[] = {G_NearPlane};
            glUniform1fv(glGetUniformLocation(G_ShaderID, "nearPlane"), 1, nearPlane);
            GLfloat farPlane[] = {G_FarPlane};
            glUniform1fv(glGetUniformLocation(G_ShaderID, "farPlane"), 1, farPlane);

            GLuint range[] = {getRange()};
            glUniform1iv(glGetUniformLocation(G_ShaderID, "range"), 1, range);

            GLuint pixelDistance[] = {getPixelDistance()};
            glUniform1iv(glGetUniformLocation(G_ShaderID, "pixelDistance"), 1, pixelDistance);

            GLfloat multiplier[] = {getMultiplier()};
            glUniform1fv(glGetUniformLocation(G_ShaderID, "multiplier"), 1, multiplier);

            glBindBuffer (GL_ARRAY_BUFFER, G_WaterBuffer);
            glBufferData (GL_ARRAY_BUFFER, sizeof(*getWaterList())*WORLD_SIZE*WORLD_SIZE, getWaterList(), GL_STATIC_DRAW);
            glEnableVertexAttribArray(0);
            glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 8*sizeof(GLfloat)+1*sizeof(GLint), 0);

            glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, G_WaterBufferIndex);

            /* Wasser. */
            glDrawElements(GL_TRIANGLES, WORLD_SIZE*WORLD_SIZE*2*3, GL_UNSIGNED_INT, 0);

            glDisableVertexAttribArray(0);
            glDisableVertexAttribArray(1);

        glUseProgram(0);
        drawFPS();
        drawAttributes();
    } else {
        printHelp();
    }
    /* Alles fertig. */
    glutSwapBuffers ();
}
示例#24
0
int32_t
ScientificPrecision::toScientific(DigitList &value) const {
    return value.toScientific(
            fMantissa.fMin.getIntDigitCount(), getMultiplier());
}
示例#25
0
void Delay::dataChanged()
{
	double delay = dataDouble("delay_length");
	setCaption( i18n("Delay for %1 sec").arg(QString::number( delay / getMultiplier(delay), 'g', 3 )+getNumberMag(delay)) );
}
示例#26
0
int Item::getNumberPre( double num )
{
	return (int)(num/getMultiplier(num));
}
示例#27
0
MBoundingBox ovalLocatorDrawOverride::boundingBox (const MDagPath &objPath, const MDagPath &cameraPath) const {
	float multiplier =getMultiplier (objPath) ;
	return (ovalLocator::boundingbox (multiplier)) ;
}