コード例 #1
0
void Picnic2::createBg()
{
    newSprite("picnic02-background", G_SWIDTH/2, G_SHEIGHT/2, this, -1, RATIO_XY);
    basketSprite = newSprite("picnic02-basket", getX(630), getY(350), this, 0, RATIO_XY);
    
    lbFirst = newLabel("Mom says she packed a special picnic lunch for the beach.", "Arial", 40, G_SWIDTH/2, getY(530), this, 1, RATIO_X);
    lbFirst->setOpacity(0);
    lbSecond = newLabel("I wonder what makes it so special.", "Arial", 40, G_SWIDTH/2, getY(580), this, 1, RATIO_X);
    lbSecond->setOpacity(0);
    
    labelBackgroundSprite = newSprite("white-1-pixel", G_SWIDTH/2, getY(530), this, 0, RATIO_XY);
    labelBackgroundSpriteForlabel2 = newSprite("white-1-pixel", G_SWIDTH/2, getY(580), this, 0, RATIO_XY);
    CCSize labelSize = lbFirst->getContentSize();
    CCSize labelSize2 = lbSecond->getContentSize();
    labelBackgroundSprite->setScaleX(labelSize.width);
    labelBackgroundSprite->setScaleY(40);
    //labelBackgroundSprite->setOpacity(30);
    labelBackgroundSpriteForlabel2->setScaleX(labelSize2.width);
    labelBackgroundSpriteForlabel2->setScaleY(40);
    //labelBackgroundSpriteForlabel2->setOpacity(30);
    labelBackgroundSpriteForlabel2->setVisible(false);
    labelBackgroundSprite->setVisible(false);
    
    lbFirst->runAction(CCSequence::create(CCDelayTime::create(1.0f), CCCallFunc::create(this,callfunc_selector(Picnic2::playEffect1)), CCFadeIn::create(0.5f), CCCallFunc::create(this,callfunc_selector(Picnic2::SetvisibilityForTextBackground1)), NULL));
    lbSecond->runAction(CCSequence::create(CCDelayTime::create(5.0f), CCCallFunc::create(this,callfunc_selector(Picnic2::playEffect2)),CCFadeIn::create(1.0f), CCCallFunc::create(this,callfunc_selector(Picnic2::SetvisibilityForTextBackground2)), NULL));
}
コード例 #2
0
ファイル: SpriteFactory.cpp プロジェクト: Fs02/TheSurvivor
SpriteFactory::SpriteFactory()
{
    assetsDir           = "Assets\\";

    newSprite("TIRE", "Vehicle\\tire.png");
    newSprite("HUMMER", "Vehicle\\Hummer.png");
    newSprite("DEATHCAR", "Vehicle\\deathCar.png");
    newSprite("EXAMPLECHAR", "Character\\example.png");
}
コード例 #3
0
ファイル: cscreen.c プロジェクト: PChambino/bsod-syndrome
CScreen * newCScreen(int x, int y, int small){
	CScreen* cscreen = malloc(sizeof(CScreen));
	
	char **maps[] = {WINDOWS_BIG, BSOD_BIG, LINUX_BIG, MAC_BIG, DEATH_BIG};
	if (small) {
		maps[0] = WINDOWS_SMALL;
		maps[1] = BSOD_SMALL;
		maps[2] = LINUX_SMALL;
		maps[3] = MAC_SMALL;
		maps[4] = DEATH_SMALL;
	}
	
	cscreen->sprite = newSprite(x, y, maps, sizeof(maps)/sizeof(char*));
	
	Note notes[] = {{Mi6, 275},{Mi6, 250},{Mi6, 225},{Mi6, 200},
					{Mi6, 175},{Mi6, 150},{Mi6, 125},{Mi6, 100},
					{Mi6, 75},{Mi6, 50},{Mi6, 25},
					{Mi6, 1000}};
	cscreen->crash = newSong(50, notes, sizeof(notes)/sizeof(Note));
	
	Note notes1[] = {{Mi3, 150}, {Fa3, 150}, {Sol3, 150}, {Re3, 150}, 
					 {Do6, 250}, {Do6, 250}};
	cscreen->reinstall = newSong(50, notes1, sizeof(notes1)/sizeof(Note));
	
	cscreen->state = WINDOWS;
	
	cscreen->nextCrashTime = -1;
	
	return cscreen;
}
コード例 #4
0
void Picnic1::createBg()
{
    newSprite("picnic01-background", G_SWIDTH/2, G_SHEIGHT/2, this, -1, RATIO_XY);
    joshSprite = newSprite("picnic01-josh", getX(252), getY(330), this, 0, RATIO_XY);
    emmaSprite = newSprite("picnic01-emma", getX(854), getY(330), this, 0, RATIO_XY);
    ballSprite = newSprite("picnic03-ball", getX(540), getY(350), this, 0, RATIO_XY);
    sunSprite = newSprite("picnic01-sun", getX(852), getY(50), this, 0, RATIO_XY);
    
    lbFirst = newLabel("Josh and Emma are getting hungry,", "Arial", 40, G_SWIDTH/2, getY(530), this, 1, RATIO_X);
    lbFirst->setOpacity(0);
    lbSecond = newLabel("it must be time for lunch.", "Arial", 40, G_SWIDTH/2, getY(580), this, 1, RATIO_X);
    lbSecond->setOpacity(0);
    
    labelBackgroundSprite = newSprite("white-1-pixel", G_SWIDTH/2, getY(530), this, 0, RATIO_XY);
    labelBackgroundSpriteForlabel2 = newSprite("white-1-pixel", G_SWIDTH/2, getY(580), this, 0, RATIO_XY);
    CCSize labelSize = lbFirst->getContentSize();
    CCSize labelSize2 = lbSecond->getContentSize();
    labelBackgroundSprite->setScaleX(labelSize.width);
    labelBackgroundSprite->setScaleY(40);
    //labelBackgroundSprite->setOpacity(30);
    labelBackgroundSpriteForlabel2->setScaleX(labelSize2.width);
    labelBackgroundSpriteForlabel2->setScaleY(40);
  //  labelBackgroundSpriteForlabel2->setOpacity(30);
    labelBackgroundSpriteForlabel2->setVisible(false);
    labelBackgroundSprite->setVisible(false);
    
    lbFirst->runAction(CCSequence::create(CCDelayTime::create(1.0f), CCCallFunc::create(this,callfunc_selector(Picnic1::playEffect1)), CCFadeIn::create(0.5f), CCCallFunc::create(this,callfunc_selector(Picnic1::SetvisibilityForTextBackground1)), NULL));
    lbSecond->runAction(CCSequence::create(CCDelayTime::create(3.0f), CCCallFunc::create(this,callfunc_selector(Picnic1::playEffect2)),CCFadeIn::create(1.0f), CCCallFunc::create(this,callfunc_selector(Picnic1::SetvisibilityForTextBackground2)), NULL));
}
コード例 #5
0
ファイル: game.c プロジェクト: PChambino/bsod-syndrome
void game_init() {
	disable_irq(MOUSE_IRQ);
	disable_irq(KBD_IRQ);
	
	// loading screen
	char **mapsBG[] = {LOADING_BOARD};
	Sprite *loadingBG = newSprite(0, 0, mapsBG, sizeof(mapsBG)/sizeof(char*));
	drawSpriteBG(loadingBG, base);

	srand(time(NULL));
	
	mapsBG[0] = BG;
	spriteBG = newSprite(0, 0, mapsBG, sizeof(mapsBG)/sizeof(char*));

	mapsBG[0] = HELP_BOARD;
	helpBoard = newSprite(0, 0, mapsBG, sizeof(mapsBG)/sizeof(char*));

	mapsBG[0] = SCORE_BOARD;
	scoreBoard = newSprite(0, 0, mapsBG, sizeof(mapsBG)/sizeof(char*));

	helpButton = newButton(0, 160, HELP_OVER);
	exitButton = newButton(196, 40, EXIT_OVER);

	hammer = newHammer();
	
	numPCs = NUM_PCS;
	
	cscreens = malloc(NUM_PCS * sizeof(CScreen));
	cscreens[0] = newCScreen(241, 367, 0);
	cscreens[1] = newCScreen(435, 363, 0);
	cscreens[2] = newCScreen(626, 363, 0);
	cscreens[3] = newCScreen(388, 224, 1);
	cscreens[4] = newCScreen(532, 216, 1);
	cscreens[5] = newCScreen(672, 209, 1);
	
	score = newScore();
	
	highScores = readHighScores();
	
	state = PLAYING;

	enable_irq(KBD_IRQ);
	enable_irq(MOUSE_IRQ);
}
コード例 #6
0
ファイル: test.c プロジェクト: speveril/eggengine
int main() {
    RenderStack stack = getRenderStack();
    Image img = newImage("test.png");
    Layer lyr = newLayer(0, 240, 0, 320);
    
    logNumber(Image_width(img));
    
    spr = newSprite(img, 10, 10, 20, 20);
    
    Layer_add(lyr, spr);
    RenderStack_addLayer(stack, lyr);
}
コード例 #7
0
void Picnic6::createBg()
{
    newSprite("picnic06-backgroundt", G_SWIDTH/2, G_SHEIGHT/2, this, -1, RATIO_XY);
    lbFirst = newLabel("Pretzels are a great salty,", "Arial", 40, G_SWIDTH/2, getY(530), this, 1, RATIO_X);
    lbFirst->setOpacity(0);
    lbSecond = newLabel("crunchy side to go with our sandwiches.", "Arial", 40, G_SWIDTH/2, getY(580), this, 1, RATIO_X);
    lbSecond->setOpacity(0);
    
    labelBackgroundSprite = newSprite("white-1-pixel", G_SWIDTH/2, getY(530), this, 0, RATIO_XY);
    labelBackgroundSpriteForlabel2 = newSprite("white-1-pixel", G_SWIDTH/2, getY(580), this, 0, RATIO_XY);
    CCSize labelSize = lbFirst->getContentSize();
    CCSize labelSize2 = lbSecond->getContentSize();
    labelBackgroundSprite->setScaleX(labelSize.width);
    labelBackgroundSprite->setScaleY(40);
    //labelBackgroundSprite->setOpacity(30);
    labelBackgroundSpriteForlabel2->setScaleX(labelSize2.width);
    labelBackgroundSpriteForlabel2->setScaleY(40);
   // labelBackgroundSpriteForlabel2->setOpacity(30);
    labelBackgroundSpriteForlabel2->setVisible(false);
    labelBackgroundSprite->setVisible(false);
    
    lbFirst->runAction(CCSequence::create(CCDelayTime::create(1.0f), CCCallFunc::create(this,callfunc_selector(Picnic6::playEffect1)), CCFadeIn::create(0.5f), CCCallFunc::create(this,callfunc_selector(Picnic6::SetvisibilityForTextBackground1)), NULL));
    lbSecond->runAction(CCSequence::create(CCDelayTime::create(3.0f), CCCallFunc::create(this,callfunc_selector(Picnic6::playEffect2)),CCFadeIn::create(1.0f), CCCallFunc::create(this,callfunc_selector(Picnic6::SetvisibilityForTextBackground2)), NULL));
}
コード例 #8
0
void Picnic4::createBg()
{
    newSprite("picnic04-backgroundt", G_SWIDTH/2, G_SHEIGHT/2, this, -1, RATIO_XY);
    lbFirst = newLabel("What do Josh and Emma have to drink?", "Arial", 35, G_SWIDTH/2, getY(530), this, 1, RATIO_X);
    lbFirst->setOpacity(0);
    lbSecond = newLabel("Oh, it’s pineapple juice.", "Arial", 35, G_SWIDTH/2, getY(580), this, 1, RATIO_X);
    lbSecond->setOpacity(0);

    labelBackgroundSprite = newSprite("white-1-pixel", G_SWIDTH/2, getY(530), this, 0, RATIO_XY);
    labelBackgroundSpriteForlabel2 = newSprite("white-1-pixel", G_SWIDTH/2, getY(580), this, 0, RATIO_XY);
    CCSize labelSize = lbFirst->getContentSize();
    CCSize labelSize2 = lbSecond->getContentSize();
    labelBackgroundSprite->setScaleX(labelSize.width);
    labelBackgroundSprite->setScaleY(40);
    //labelBackgroundSprite->setOpacity(30);
    labelBackgroundSpriteForlabel2->setScaleX(labelSize2.width);
    labelBackgroundSpriteForlabel2->setScaleY(40);
    //labelBackgroundSpriteForlabel2->setOpacity(30);
    labelBackgroundSpriteForlabel2->setVisible(false);
    labelBackgroundSprite->setVisible(false);

    lbFirst->runAction(CCSequence::create(CCDelayTime::create(1.0f), CCCallFunc::create(this,callfunc_selector(Picnic4::playEffect1)), CCFadeIn::create(0.5f), CCCallFunc::create(this,callfunc_selector(Picnic4::SetvisibilityForTextBackground1)), NULL));
    lbSecond->runAction(CCSequence::create(CCDelayTime::create(5.0f), CCCallFunc::create(this,callfunc_selector(Picnic4::playEffect2)),CCFadeIn::create(1.0f), CCCallFunc::create(this,callfunc_selector(Picnic4::SetvisibilityForTextBackground2)), NULL));
}
コード例 #9
0
ファイル: renderer.cpp プロジェクト: cheerjo/freeablo
FASpriteGroup Renderer::loadImageImp(const std::string& path)
{
    bool contains = mSpriteCache.find(path) != mSpriteCache.end();

    if(contains)
    {
        FASpriteGroup cached = mSpriteCache[path].lock();
        if(cached)
            return cached;
    }

    FASpriteGroup newSprite(new CacheSpriteGroup(path));
    mSpriteCache[path] = boost::weak_ptr<CacheSpriteGroup>(newSprite);

    return newSprite;
}
コード例 #10
0
void Manager::explodeSprite(const string& name) {
  std::list<Drawable*>::iterator ptr = explosions.begin();
  while ( ptr != explosions.end() ) {
    Drawable* sprite = *ptr;
    if ( sprite ){
      std::cout << "Checking: " << sprite->getName() << std::endl;
      if (sprite->getName() == name) {
        const Frame* frame = sprite->getFrame();
        Sprite newSprite(sprite->getPosition(), sprite->getVelocity(),
         name, frame);
        delete sprite;
        ptr = explosions.erase(ptr);
        explosions.push_back( new ExplodingSprite(newSprite) );
      }
    }
    else ++ptr;
  }
}
コード例 #11
0
ファイル: SpriteFactory.cpp プロジェクト: Fs02/TheSurvivor
void SpriteFactory::loadSprite(const std::string& xmlfile)
{
    std::ifstream texturePack(xmlfile.c_str());
    std::vector<char> buffer((std::istreambuf_iterator<char>(texturePack)), std::istreambuf_iterator<char>());
    buffer.push_back('\0');

    rapidxml::xml_document<> data;
    data.parse<rapidxml::parse_declaration_node|rapidxml::parse_no_data_nodes>(&buffer[0]);

    rapidxml::xml_node<>* root = data.first_node("texture_pack");
    std::string path = root->first_attribute("path")->value();

    rapidxml::xml_node<>* cur_node = root->first_node("texture");
    while (cur_node != NULL)
    {
        newSprite(cur_node->first_attribute("id")->value(), path + cur_node->first_attribute("filename")->value());

        cur_node = cur_node->next_sibling();
    }
}
コード例 #12
0
void StoreLayer::createBg(){
    
    newSprite("setting_bg", G_SWIDTH/2, G_SHEIGHT/2, this, 0, RATIO_XY);
    newLabel("Store", "Arial MT", 50, G_SWIDTH/2, getY(220), this, 0, RATIO_XY);

    lbEnglish = newLabel("English", "Arial MT", 30, G_SWIDTH/2 - getX(180), getY(320), this, 0, RATIO_XY);
    lbSpanish = newLabel("Spanish", "Arial MT", 30, G_SWIDTH/2 - getX(180), getY(400), this, 0, RATIO_XY);

    lbEnglish->setAnchorPoint(ccp(0, 0.5f));
    lbSpanish->setAnchorPoint(ccp(0, 0.5f));
    
    btnEnglish = newButton("select", G_SWIDTH/2 + getX(120), getY(320), this, menu_selector(StoreLayer::onClose), true, RATIO_XY);
    btnEnglish->setScale(0.8*G_SCALEX);
    btnSpanish = newButton("buy", G_SWIDTH/2 + getX(120), getY(400), this, menu_selector(StoreLayer::onClose), true, RATIO_XY);
    btnSpanish->setScale(0.8*G_SCALEX);
    btnClose = newButton("close", getX(800), getY(180), this, menu_selector(StoreLayer::onClose), true, RATIO_XY);
    
    CCMenu *menu = CCMenu::create(btnClose,btnEnglish,btnSpanish, NULL);
    menu->setPosition(ccp(0, 0));
    this->addChild(menu, 0);
}
コード例 #13
0
ファイル: gameSDL.c プロジェクト: Lunik/Tower-Defonce
void sdlMapInit(sdlMap *sdMap)
{
	Map *map;
	Interface *interface;
	int dimx, dimy;

	map = newMap(15, 15, 1);
	setSdlMap(sdMap,map);

	interface = newInterface();
	setSdlMapInterface(sdMap,interface);

	assert(SDL_Init(SDL_INIT_EVERYTHING)!= -1);

	dimx = 15;
	dimy = 15;

	//met les valeurs max de la position du curseur
	sdMap->interface->cursor->max.x = dimx-1;
	sdMap->interface->cursor->max.y = dimy-1;

	dimx = (dimx+10) * 32;
	dimy = (dimy+5) * 32;

	//Creation de l'ecran
	setSdlMapEcran(sdMap,SDL_SetVideoMode(dimx, dimy, 32, SDL_SWSURFACE));
	assert(getSdlMapEcran(sdMap)!=NULL);
	SDL_WM_SetCaption( "Tower Défonce v0.1", NULL );

	//Chargement des images
	sdMap->Path = newSprite();
	addSprite(sdMap->Path, "data/map/path.png");

	sdMap->Terrain = newSprite();
	addSprite(sdMap->Terrain, "data/map/terrain.png");
	addSprite(sdMap->Terrain, "data/map/terrainI.png");

	sdMap->Grotte = newSprite();
	addSprite(sdMap->Grotte, "data/map/grotte.png");
	addSprite(sdMap->Grotte, "data/map/grotte2.png");

	sdMap->Ville = newSprite();
	addSprite(sdMap->Ville, "data/map/ville.png");
	addSprite(sdMap->Ville, "data/map/ville2.png");

	sdMap->Life = newSprite();
	addSprite(sdMap->Life, "data/enemies/life/0.png");
	addSprite(sdMap->Life, "data/enemies/life/20.png");
	addSprite(sdMap->Life, "data/enemies/life/40.png");
	addSprite(sdMap->Life, "data/enemies/life/60.png");
	addSprite(sdMap->Life, "data/enemies/life/80.png");
	addSprite(sdMap->Life, "data/enemies/life/100.png");

	sdMap->Projectile = newSprite();
    addSprite(sdMap->Projectile, "data/towers/projectile/0.png"); //mage
    addSprite(sdMap->Projectile, "data/towers/projectile/1.png"); //canon
    addSprite(sdMap->Projectile, "data/towers/projectile/2.png"); //archer
    addSprite(sdMap->Projectile, "data/towers/projectile/3.png"); //archer
    addSprite(sdMap->Projectile, "data/towers/projectile/4.png"); //archer
    addSprite(sdMap->Projectile, "data/towers/projectile/5.png"); //archer

	sdMap->EnemyClassic = newSprite();
	addSprite(sdMap->EnemyClassic, "data/enemies/classic/0.png");
	addSprite(sdMap->EnemyClassic, "data/enemies/classic/1.png");
	addSprite(sdMap->EnemyClassic, "data/enemies/classic/2.png");
	addSprite(sdMap->EnemyClassic, "data/enemies/classic/3.png");

	sdMap->EnemyFly = newSprite();
	addSprite(sdMap->EnemyFly, "data/enemies/fly/0.png");
	addSprite(sdMap->EnemyFly, "data/enemies/fly/1.png");

	sdMap->EnemyBoss = newSprite();
	addSprite(sdMap->EnemyBoss, "data/enemies/boss/0.png");

	sdMap->TowerAura = newSprite();
	addSprite(sdMap->TowerAura, "data/towers/aura/0.png");
	addSprite(sdMap->TowerAura, "data/towers/aura/1.png");
	addSprite(sdMap->TowerAura, "data/towers/aura/2.png");
	addSprite(sdMap->TowerAura, "data/towers/aura/3.png");
	addSprite(sdMap->TowerAura, "data/towers/aura/4.png");

	sdMap->TowerArcher = newSprite();
	addSprite(sdMap->TowerArcher, "data/towers/archer/0.png");
	addSprite(sdMap->TowerArcher, "data/towers/archer/1.png");
	addSprite(sdMap->TowerArcher, "data/towers/archer/2.png");

	sdMap->TowerCannon = newSprite();
	addSprite(sdMap->TowerCannon, "data/towers/cannon/0.png");
	addSprite(sdMap->TowerCannon, "data/towers/cannon/2.png");
	addSprite(sdMap->TowerCannon, "data/towers/cannon/1.png");

	sdMap->TowerKnight = newSprite();
	addSprite(sdMap->TowerKnight, "data/towers/knight/0.png");
	addSprite(sdMap->TowerKnight, "data/towers/knight/2.png");
	addSprite(sdMap->TowerKnight, "data/towers/knight/1.png");

	sdMap->TowerMage = newSprite();
	addSprite(sdMap->TowerMage, "data/towers/mage/0.png");
	addSprite(sdMap->TowerMage, "data/towers/mage/1.png");
	addSprite(sdMap->TowerMage, "data/towers/mage/2.png");

	sdMap->Cursor = newSprite();
	addSprite(sdMap->Cursor, "data/interface/cursor.png");

	sdMap->Range = newSprite();
	addSprite(sdMap->Range, "data/interface/range.png");

	sdMap->InterfaceBackground = newSprite();
	addSprite(sdMap->InterfaceBackground, "data/interface/background/0.png");
	addSprite(sdMap->InterfaceBackground, "data/interface/background/1.png");

	//Init sdl_ttf
	if(TTF_Init() == -1)
	{
		fprintf(stderr, "Erreur d'initialisation de TTF_Init : %s\n", TTF_GetError());
		exit(EXIT_FAILURE);
	}

	//Chargement des polices
	sdMap->policeMax = TTF_OpenFont("data/font.ttf", 70);
	sdMap->police = TTF_OpenFont("data/font.ttf", 20);
	sdMap->policeMin = TTF_OpenFont("data/font.ttf", 12);
	SDL_EnableKeyRepeat(100, 100);

	//Init de options
	setSdlMapSpeed(sdMap,0);
	setSdlMapMode(sdMap,0);
}
コード例 #14
0
ファイル: savegamedemo.cpp プロジェクト: mailgyc/cube
void demoplaybackstep() {
	while (demoplayback && lastmillis >= playbacktime) {
		int len = gzgeti();
		if (len < 1 || len > MAXTRANS) {
			conoutf("error: huge packet during demo play (%d)", len);
			stopreset();
			return;
		};
		uchar buf[MAXTRANS];
		gzread(f, buf, len);
		localservertoclient(buf, len);  // update game state

		Sprite *target = players[democlientnum];
		assert(target);

		int extras;
		if (extras = gzget()) // read additional client side state not present in normal network stream
				{
			target->gunselect = gzget();
			target->lastattackgun = gzget();
			target->lastaction = scaletime(gzgeti());
			target->gunwait = gzgeti();
			target->health = gzgeti();
			target->armour = gzgeti();
			target->armourtype = gzget();
			loopi(NUMGUNS)
				target->ammo[i] = gzget();
			target->state = gzget();
			target->lastmove = playbacktime;
			if (bdamage = gzgeti())
				damageblend(bdamage);
			if (ddamage = gzgeti()) {
				gzgetv(dorig);
				particle_splash(3, ddamage, 1000, dorig);
			};
			// FIXME: set more client state here
		};

		// insert latest copy of player into history
		if (extras
				&& (playerhistory.empty()
						|| playerhistory.back()->lastupdate != playbacktime)) {
			Sprite *d = newSprite();
			*d = *target;
			d->lastupdate = playbacktime;
			playerhistory.emplace_back(d);
			if (playerhistory.size() > 20) {
				zapSprite(playerhistory[0]);
				playerhistory.erase(playerhistory.begin());
			};
		};

		readdemotime();
	};

	if (demoplayback) {
		int itime = lastmillis - demodelaymsec;
		for (int i = playerhistory.size() - 1; i >= 0; --i)
			if (playerhistory[i]->lastupdate < itime) // find 2 positions in history that surround interpolation time point
					{
				Sprite *a = playerhistory[i];
				Sprite *b = a;
				if (i + 1 < playerhistory.size())
					b = playerhistory[i + 1];
				*player1 = *b;
				if (a != b)                          // interpolate pos & angles
						{
					Sprite *c = b;
					if (i + 2 < playerhistory.size())
						c = playerhistory[i + 2];
					Sprite *z = a;
					if (i - 1 >= 0)
						z = playerhistory[i - 1];
					//if(a==z || b==c) printf("* %d\n", lastmillis);
					float bf = (itime - a->lastupdate)
							/ (float) (b->lastupdate - a->lastupdate);
					fixwrap(a, player1);
					fixwrap(c, player1);
					fixwrap(z, player1);
					vdist(dist, v, z->o, c->o);
					if (dist < 16)	// if teleport or spawn, dont't interpolate
							{
						catmulrom(z->o, a->o, b->o, c->o, bf, player1->o);
						catmulrom(*(Vec3 *) &z->yaw, *(Vec3 *) &a->yaw,
								*(Vec3 *) &b->yaw, *(Vec3 *) &c->yaw, bf,
								*(Vec3 *) &player1->yaw);
					};
					fixplayer1range();
				};
				break;
			};
		//if(player1->state!=CS_DEAD) showscores(false);
	};
}