您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ CArrayGet函数代码示例

51自学网 2021-06-01 19:57:09
  C++
这篇教程C++ CArrayGet函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中CArrayGet函数的典型用法代码示例。如果您正苦于以下问题:C++ CArrayGet函数的具体用法?C++ CArrayGet怎么用?C++ CArrayGet使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

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

示例1: CanCompleteMission

int CanCompleteMission(struct MissionOptions *options){	int i;	// Death is the only escape from dogfights and quick play	if (gCampaign.Entry.Mode == CAMPAIGN_MODE_DOGFIGHT)	{		return GetNumPlayersAlive() <= 1;	}	else if (gCampaign.Entry.Mode == CAMPAIGN_MODE_QUICK_PLAY)	{		return GetNumPlayersAlive() == 0;	}	// Check all objective counts are enough	for (i = 0; i < (int)options->Objectives.size; i++)	{		struct Objective *o = CArrayGet(&options->Objectives, i);		MissionObjective *mobj =			CArrayGet(&options->missionData->Objectives, i);		if (o->done < mobj->Required)		{			return 0;		}	}	return 1;}
开发者ID:kodephys,项目名称:cdogs-sdl,代码行数:28,


示例2: HUDNumPopupsDrawObjective

void HUDNumPopupsDrawObjective(	const HUDNumPopups *popups, const int idx, const Vec2i pos){	const Objective *o = CArrayGet(&gMission.missionData->Objectives, idx);	const HUDNumPopup *p = CArrayGet(&popups->objective, idx);	DrawNumUpdate(p, "%d", o->done, pos, 0);}
开发者ID:CliffsDover,项目名称:cdogs-sdl,代码行数:7,


示例3: GetHitType

static HitType GetHitType(	const TTileItem *ti, const TMobileObject *bullet, int *targetUID){	*targetUID = -1;	HitType ht = HIT_NONE;	switch (ti->kind)	{	case KIND_CHARACTER:		ht = HIT_FLESH;		*targetUID = ((const TActor *)CArrayGet(&gActors, ti->id))->uid;		break;	case KIND_OBJECT:		ht = HIT_OBJECT;		*targetUID = ((const TObject *)CArrayGet(&gObjs, ti->id))->uid;		break;	default:		CASSERT(false, "cannot damage target kind");		break;	}	if (bullet->tileItem.SoundLock > 0 ||		!HasHitSound(		bullet->bulletClass->Power, bullet->flags, bullet->PlayerUID,		ti->kind, *targetUID, bullet->bulletClass->Special, true))	{		ht = HIT_NONE;	}	return ht;}
开发者ID:ChunHungLiu,项目名称:cdogs-sdl,代码行数:28,


示例4: DrawObjectiveHighlight

static void DrawObjectiveHighlight(	TTileItem *ti, Tile *tile, DrawBuffer *b, Vec2i offset){	color_t color;	if (ti->flags & TILEITEM_OBJECTIVE)	{		// Objective		const int objective = ObjectiveFromTileItem(ti->flags);		const Objective *o =			CArrayGet(&gMission.missionData->Objectives, objective);		if (o->Flags & OBJECTIVE_HIDDEN)		{			return;		}		if (!(o->Flags & OBJECTIVE_POSKNOWN) &&			(tile->flags & MAPTILE_OUT_OF_SIGHT))		{			return;		}		color = o->color;	}	else if (ti->kind == KIND_PICKUP)	{		// Gun pickup		const Pickup *p = CArrayGet(&gPickups, ti->id);		if (!PickupIsManual(p))		{			return;		}		color = colorDarker;	}	else	{		return;	}		const Vec2i pos = Vec2iNew(		ti->x - b->xTop + offset.x, ti->y - b->yTop + offset.y);	const int pulsePeriod = ConfigGetInt(&gConfig, "Game.FPS");	int alphaUnscaled =		(gMission.time % pulsePeriod) * 255 / (pulsePeriod / 2);	if (alphaUnscaled > 255)	{		alphaUnscaled = 255 * 2 - alphaUnscaled;	}	color.a = (Uint8)alphaUnscaled;	if (ti->getPicFunc != NULL)	{		Vec2i picOffset;		const Pic *pic = ti->getPicFunc(ti->id, &picOffset);		BlitPicHighlight(			&gGraphicsDevice, pic, Vec2iAdd(pos, picOffset), color);	}	else if (ti->kind == KIND_CHARACTER)	{		TActor *a = CArrayGet(&gActors, ti->id);		ActorPics pics = GetCharacterPicsFromActor(a);		DrawActorHighlight(&pics, pos, color);	}}
开发者ID:CliffsDover,项目名称:cdogs-sdl,代码行数:60,


示例5: DrawObjectiveInfo

static void DrawObjectiveInfo(	const struct MissionOptions *mo, const int idx, const Vec2i pos){	const MissionObjective *mobj =		CArrayGet(&mo->missionData->Objectives, idx);	const ObjectiveDef *o = CArrayGet(&mo->Objectives, idx);	const CharacterStore *store = &gCampaign.Setting.characters;	switch (mobj->Type)	{	case OBJECTIVE_KILL:		{			const Character *cd = CArrayGet(				&store->OtherChars, CharacterStoreGetSpecialId(store, 0));			const int i = cd->looks.face;			TOffsetPic pic;			pic.picIndex = cHeadPic[i][DIRECTION_DOWN][STATE_IDLE];			pic.dx = cHeadOffset[i][DIRECTION_DOWN].dx;			pic.dy = cHeadOffset[i][DIRECTION_DOWN].dy;			DrawTTPic(				pos.x + pic.dx, pos.y + pic.dy,				PicManagerGetOldPic(&gPicManager, pic.picIndex), &cd->table);		}		break;	case OBJECTIVE_RESCUE:		{			const Character *cd = CArrayGet(				&store->OtherChars, CharacterStoreGetPrisonerId(store, 0));			const int i = cd->looks.face;			TOffsetPic pic;			pic.picIndex = cHeadPic[i][DIRECTION_DOWN][STATE_IDLE];			pic.dx = cHeadOffset[i][DIRECTION_DOWN].dx;			pic.dy = cHeadOffset[i][DIRECTION_DOWN].dy;			DrawTTPic(				pos.x + pic.dx, pos.y + pic.dy,				PicManagerGetOldPic(&gPicManager, pic.picIndex), &cd->table);		}		break;	case OBJECTIVE_COLLECT:		{			const Pic *p = o->pickupClass->Pic;			Blit(&gGraphicsDevice, p, Vec2iAdd(pos, p->offset));		}		break;	case OBJECTIVE_DESTROY:		{			Vec2i picOffset;			const Pic *p =				MapObjectGetPic(IntMapObject(mobj->Index), &picOffset, false);			Blit(&gGraphicsDevice, p, Vec2iAdd(pos, picOffset));		}		break;	case OBJECTIVE_INVESTIGATE:		// Don't draw		return;	default:		CASSERT(false, "Unknown objective type");		return;	}}
开发者ID:Gokulakrishnansr,项目名称:cdogs-sdl,代码行数:60,


示例6: UIObjectDraw

void UIObjectDraw(	UIObject *o, GraphicsDevice *g, Vec2i pos, Vec2i mouse, CArray *drawObjs){	// Draw this UIObject and its children in BFS order	// Maintain a queue of UIObjects to draw	if (drawObjs->elemSize == 0)	{		CArrayInit(drawObjs, sizeof(UIObjectDrawContext));		UIObjectDrawContext c;		c.obj = o;		c.pos = pos;		CArrayPushBack(drawObjs, &c);		for (int i = 0; i < (int)drawObjs->size; i++)		{			UIObjectDrawContext *cPtr = CArrayGet(drawObjs, i);			UIObjectDrawAndAddChildren(				cPtr->obj, g, cPtr->pos, mouse, drawObjs);		}	}	else	{		for (int i = 0; i < (int)drawObjs->size; i++)		{			UIObjectDrawContext *cPtr = CArrayGet(drawObjs, i);			UIObjectDrawAndAddChildren(				cPtr->obj, g, cPtr->pos, mouse, NULL);		}	}}
开发者ID:depoorterp,项目名称:cdogs-sdl,代码行数:29,


示例7: switch

TTileItem *ThingIdGetTileItem(ThingId *tid){	TTileItem *ti = NULL;	switch (tid->Kind)	{	case KIND_CHARACTER:		ti = &((TActor *)CArrayGet(&gActors, tid->Id))->tileItem;		break;	case KIND_PARTICLE:		ti = &((Particle *)CArrayGet(&gParticles, tid->Id))->tileItem;		break;	case KIND_MOBILEOBJECT:		ti = &((TMobileObject *)CArrayGet(			&gMobObjs, tid->Id))->tileItem;		break;	case KIND_OBJECT:		ti = &((TObject *)CArrayGet(&gObjs, tid->Id))->tileItem;		break;	case KIND_PICKUP:		ti = &((Pickup *)CArrayGet(&gPickups, tid->Id))->tileItem;		break;	default:		CASSERT(false, "unknown tile item to get");		break;	}	return ti;}
开发者ID:CrypticGator,项目名称:cdogs-sdl,代码行数:27,


示例8: SetupBadguysForMission

static void SetupBadguysForMission(Mission *mission){	int i;	CharacterStore *s = &gCampaign.Setting.characters;	CharacterStoreResetOthers(s);	if (s->OtherChars.size == 0)	{		return;	}	for (i = 0; i < (int)mission->Objectives.size; i++)	{		MissionObjective *mobj = CArrayGet(&mission->Objectives, i);		if (mobj->Type == OBJECTIVE_RESCUE)		{			CharacterStoreAddPrisoner(s, mobj->Index);			break;	// TODO: multiple prisoners		}	}	for (i = 0; i < (int)mission->Enemies.size; i++)	{		CharacterStoreAddBaddie(s, *(int *)CArrayGet(&mission->Enemies, i));	}	for (i = 0; i < (int)mission->SpecialChars.size; i++)	{		CharacterStoreAddSpecial(			s, *(int *)CArrayGet(&mission->SpecialChars, i));	}}
开发者ID:kodephys,项目名称:cdogs-sdl,代码行数:33,


示例9: PlayerSelection

bool PlayerSelection(void){	PlayerSelectionData data;	memset(&data, 0, sizeof data);	data.IsOK = true;	GetDataFilePath(data.prefixes, "data/prefixes.txt");	GetDataFilePath(data.suffixes, "data/suffixes.txt");	GetDataFilePath(data.suffixnames, "data/suffixnames.txt");	NameGenInit(&data.g, data.prefixes, data.suffixes, data.suffixnames);	// Create selection menus for each local player	for (int i = 0, idx = 0; i < (int)gPlayerDatas.size; i++, idx++)	{		PlayerData *p = CArrayGet(&gPlayerDatas, i);		if (!p->IsLocal)		{			idx--;			continue;		}		PlayerSelectMenusCreate(			&data.menus[idx], GetNumPlayers(false, false, true), idx, i,			&gEventHandlers, &gGraphicsDevice, &data.g);	}	if (!gCampaign.IsClient)	{		NetServerOpen(&gNetServer);	}	GameLoopData gData = GameLoopDataNew(		&data, PlayerSelectionUpdate,		&data, PlayerSelectionDraw);	GameLoop(&gData);	if (data.IsOK)	{		for (int i = 0, idx = 0; i < (int)gPlayerDatas.size; i++, idx++)		{			PlayerData *p = CArrayGet(&gPlayerDatas, i);			if (!p->IsLocal)			{				idx--;				continue;			}			// For any player slots not picked, turn them into AIs			if (p->inputDevice == INPUT_DEVICE_UNSET)			{				PlayerSetInputDevice(p, INPUT_DEVICE_AI, 0);			}		}	}	for (int i = 0; i < GetNumPlayers(false, false, true); i++)	{		MenuSystemTerminate(&data.menus[i].ms);	}	NameGenTerminate(&data.g);	return data.IsOK;}
开发者ID:depoorterp,项目名称:cdogs-sdl,代码行数:59,


示例10: DrawObjectiveHighlight

static void DrawObjectiveHighlight(	TTileItem *ti, Tile *tile, DrawBuffer *b, Vec2i offset){	if (!(ti->flags & TILEITEM_OBJECTIVE))	{		return;	}	int objective = ObjectiveFromTileItem(ti->flags);	MissionObjective *mo =		CArrayGet(&gMission.missionData->Objectives, objective);	if (mo->Flags & OBJECTIVE_HIDDEN)	{		return;	}	if (!(mo->Flags & OBJECTIVE_POSKNOWN) &&		(tile->flags & MAPTILE_OUT_OF_SIGHT))	{		return;	}	Vec2i pos = Vec2iNew(		ti->x - b->xTop + offset.x, ti->y - b->yTop + offset.y);	struct Objective *o =		CArrayGet(&gMission.Objectives, objective);	color_t color = o->color;	int pulsePeriod = FPS_FRAMELIMIT;	int alphaUnscaled =		(gMission.time % pulsePeriod) * 255 / (pulsePeriod / 2);	if (alphaUnscaled > 255)	{		alphaUnscaled = 255 * 2 - alphaUnscaled;	}	color.a = (Uint8)alphaUnscaled;	if (ti->getPicFunc != NULL)	{		Vec2i picOffset;		const Pic *pic = ti->getPicFunc(ti->id, &picOffset);		BlitPicHighlight(			&gGraphicsDevice, pic, Vec2iAdd(pos, picOffset), color);	}	else if (ti->getActorPicsFunc != NULL)	{		ActorPics pics = ti->getActorPicsFunc(ti->id);		// Do not highlight dead, dying or transparent characters		if (!pics.IsDead && !pics.IsTransparent)		{			for (int i = 0; i < 3; i++)			{				if (PicIsNotNone(&pics.Pics[i]))				{					BlitPicHighlight(						&gGraphicsDevice,						&pics.Pics[i], pos, color);				}			}		}	}}
开发者ID:kodephys,项目名称:cdogs-sdl,代码行数:57,


示例11: DogfightFinalScoresDraw

static void DogfightFinalScoresDraw(void *data){	UNUSED(data);	// This will only draw once	const int w = gGraphicsDevice.cachedConfig.Res.x;	const int h = gGraphicsDevice.cachedConfig.Res.y;	GraphicsBlitBkg(&gGraphicsDevice);	// Work out who's the winner, or if it's a tie	int maxScore = 0;	int playersWithMaxScore = 0;	for (int i = 0; i < (int)gPlayerDatas.size; i++)	{		const PlayerData *p = CArrayGet(&gPlayerDatas, i);		if (p->RoundsWon > maxScore)		{			maxScore = p->RoundsWon;			playersWithMaxScore = 1;		}		else if (p->RoundsWon == maxScore)		{			playersWithMaxScore++;		}	}	const bool isTie = playersWithMaxScore == (int)gPlayerDatas.size;	// Draw players and their names spread evenly around the screen.	// If it's a tie, display the message in the centre,	// otherwise display the winner just below the winning player#define DRAW_TEXT	"It's a draw!"#define WINNER_TEXT	"Winner!"	CASSERT(		gPlayerDatas.size >= 2 && gPlayerDatas.size <= 4,		"Unimplemented number of players for dogfight");	for (int i = 0; i < (int)gPlayerDatas.size; i++)	{		const Vec2i pos = Vec2iNew(			w / 4 + (i & 1) * w / 2,			gPlayerDatas.size == 2 ? h / 2 : h / 4 + (i / 2) * h / 2);		const PlayerData *p = CArrayGet(&gPlayerDatas, i);		DisplayCharacterAndName(pos, &p->Char, p->name);		ShowPlayerScore(pos, p->RoundsWon);		if (!isTie && maxScore == p->RoundsWon)		{			FontStrMask(				WINNER_TEXT,				Vec2iNew(pos.x - FontStrW(WINNER_TEXT) / 2, pos.y + 30),				colorGreen);		}	}	if (isTie)	{		FontStrCenter(DRAW_TEXT);	}}
开发者ID:Wuzzy2,项目名称:cdogs-sdl,代码行数:57,


示例12: CArrayGet

Ammo *AmmoGetById(AmmoClasses *ammo, const int id){	if (id < (int)ammo->Ammo.size)	{		return CArrayGet(&ammo->Ammo, id);	}	else	{		return CArrayGet(&ammo->CustomAmmo, id - (int)ammo->Ammo.size);	}}
开发者ID:cxong,项目名称:cdogs-sdl,代码行数:11,


示例13: ActionRun

static void ActionRun(Action *a, CArray *mapTriggers){	int i;	switch (a->action)	{	case ACTION_NULL:		return;	case ACTION_SOUND:		SoundPlayAt(&gSoundDevice, a->a.Sound, a->u.pos);		break;	case ACTION_SETTRIGGER:		for (i = 0; i < (int)mapTriggers->size; i++)		{			Trigger *tr = *(Trigger **)CArrayGet(mapTriggers, i);			if (tr->id == a->u.index)			{				tr->isActive = 1;				break;			}		}		break;	case ACTION_CLEARTRIGGER:		for (i = 0; i < (int)mapTriggers->size; i++)		{			Trigger *tr = *(Trigger **)CArrayGet(mapTriggers, i);			if (tr->id == a->u.index)			{				tr->isActive = 0;				break;			}		}		break;	case ACTION_CHANGETILE:		{			Tile *t= MapGetTile(&gMap, a->u.pos);			t->flags = a->a.tileFlags;			t->pic = a->tilePic;			t->picAlt = a->tilePicAlt;		}		break;	case ACTION_ACTIVATEWATCH:		ActivateWatch(a->u.index);		break;	case ACTION_DEACTIVATEWATCH:		DeactivateWatch(a->u.index);		break;	}}
开发者ID:Wuzzy2,项目名称:cdogs-sdl,代码行数:54,


示例14: CASSERT

MapObject *IndexMapObject(const int i){	CASSERT(		i >= 0 &&		i < (int)gMapObjects.Classes.size + (int)gMapObjects.CustomClasses.size,		"Map object index out of bounds");	if (i < (int)gMapObjects.Classes.size)	{		return CArrayGet(&gMapObjects.Classes, i);	}	return CArrayGet(&gMapObjects.CustomClasses, i - gMapObjects.Classes.size);}
开发者ID:carstene1ns,项目名称:cdogs-sdl,代码行数:12,


示例15: ScreenMissionSummary

bool ScreenMissionSummary(CampaignOptions *c, struct MissionOptions *m){	// Save password	MissionSave ms;	MissionSaveInit(&ms);	ms.Campaign = c->Entry;	// Don't make password for next level if there is none	int passwordIndex = m->index + 1;	if (passwordIndex == c->Entry.NumMissions)	{		passwordIndex--;	}	strcpy(ms.Password, MakePassword(passwordIndex, 0));	ms.MissionsCompleted = m->index + 1;	AutosaveAddMission(&gAutosave, &ms, ms.Campaign.BuiltinIndex);	AutosaveSave(&gAutosave, GetConfigFilePath(AUTOSAVE_FILE));	// Calculate bonus scores	// Bonuses only apply if at least one player has lived	if (AreAnySurvived())	{		int bonus = 0;		// Objective bonuses		for (int i = 0; i < (int)m->missionData->Objectives.size; i++)		{			const struct Objective *o = CArrayGet(&m->Objectives, i);			const MissionObjective *mo = CArrayGet(&m->missionData->Objectives, i);			if (o->done == mo->Count && o->done > mo->Required)			{				// Perfect				bonus += PERFECT_BONUS;			}		}		bonus += GetAccessBonus(m);		bonus += GetTimeBonus(m, NULL);		for (int i = 0; i < (int)gPlayerDatas.size; i++)		{			PlayerData *p = CArrayGet(&gPlayerDatas, i);			ApplyBonuses(p, bonus);		}	}	GameLoopWaitForAnyKeyOrButtonData wData;	GameLoopData gData = GameLoopDataNew(		&wData, GameLoopWaitForAnyKeyOrButtonFunc,		m, MissionSummaryDraw);	GameLoop(&gData);	if (wData.IsOK)	{		SoundPlay(&gSoundDevice, StrSound("mg"));	}	return wData.IsOK;}
开发者ID:Wuzzy2,项目名称:cdogs-sdl,代码行数:53,


示例16: DeathmatchFinalScoresDraw

static void DeathmatchFinalScoresDraw(void *data){	UNUSED(data);	// This will only draw once	const int w = gGraphicsDevice.cachedConfig.Res.x;	const int h = gGraphicsDevice.cachedConfig.Res.y;	GraphicsBlitBkg(&gGraphicsDevice);	// Work out the highest kills	int maxKills = 0;	for (int i = 0; i < (int)gPlayerDatas.size; i++)	{		const PlayerData *p = CArrayGet(&gPlayerDatas, i);		if (p->kills > maxKills)		{			maxKills = p->kills;		}	}	// Draw players and their names spread evenly around the screen.	CASSERT(		gPlayerDatas.size >= 2 && gPlayerDatas.size <= 4,		"Unimplemented number of players for deathmatch");#define LAST_MAN_TEXT	"Last man standing!"	for (int i = 0; i < (int)gPlayerDatas.size; i++)	{		const Vec2i pos = Vec2iNew(			w / 4 + (i & 1) * w / 2,			gPlayerDatas.size == 2 ? h / 2 : h / 4 + (i / 2) * h / 2);		const PlayerData *p = CArrayGet(&gPlayerDatas, i);		DisplayCharacterAndName(pos, &p->Char, p->name);				// Kills		char s[16];		sprintf(s, "Kills: %d", p->kills);		FontStrMask(			s, Vec2iNew(pos.x - FontStrW(s) / 2, pos.y + 20),			p->kills == maxKills ? colorGreen : colorWhite);		// Last man standing?		if (p->Lives > 0)		{			FontStrMask(				LAST_MAN_TEXT,				Vec2iNew(pos.x - FontStrW(LAST_MAN_TEXT) / 2, pos.y + 30),				colorGreen);		}	}}
开发者ID:Wuzzy2,项目名称:cdogs-sdl,代码行数:51,


示例17: CASSERT

GunDescription *IdGunDescription(const int i){	CASSERT(		i >= 0 &&		i < (int)gGunDescriptions.Guns.size +		(int)gGunDescriptions.CustomGuns.size,		"Gun index out of bounds");	if (i < (int)gGunDescriptions.Guns.size)	{		return CArrayGet(&gGunDescriptions.Guns, i);	}	return CArrayGet(		&gGunDescriptions.CustomGuns, i - gGunDescriptions.Guns.size);}
开发者ID:depoorterp,项目名称:cdogs-sdl,代码行数:14,


示例18: PicManagerClear

void PicManagerClear(CArray *pics, CArray *sprites){	for (int i = 0; i < (int)pics->size; i++)	{		NamedPic *n = CArrayGet(pics, i);		CFREE(n->name);		PicFree(&n->pic);	}	CArrayClear(pics);	for (int i = 0; i < (int)sprites->size; i++)	{		NamedSpritesFree(CArrayGet(sprites, i));	}	CArrayClear(sprites);}
开发者ID:Wuzzy2,项目名称:cdogs-sdl,代码行数:15,


示例19: HealthPickupsUpdate

void HealthPickupsUpdate(HealthPickups *h, int ticks){	// Don't spawn pickups if not allowed	if (!AreHealthPickupsAllowed(gCampaign.Entry.Mode) ||		!gConfig.Game.HealthPickups)	{		return;	}	double scalar = 1.0;	// Update time until next spawn based on:	// Damage taken (find player with lowest health)	int minHealth = ModeMaxHealth(gCampaign.Entry.Mode);	int maxHealth = minHealth;	for (int i = 0; i < (int)gPlayerDatas.size; i++)	{		const PlayerData *p = CArrayGet(&gPlayerDatas, i);		if (!IsPlayerAlive(p))		{			continue;		}		const TActor *player = CArrayGet(&gActors, p->Id);		minHealth = MIN(minHealth, player->health);	}	// Double spawn rate if near 0 health	scalar *= (minHealth + maxHealth) / (maxHealth * 2.0);	// Scale down over time	scalar *= pow(TIME_DECAY_EXPONENT, h->pickupsSpawned);	h->timeUntilNextSpawn = (int)floor(scalar * SPAWN_TIME);	// Update time	h->timer += ticks;	// Attempt to add health if time reached, and we haven't placed too many	if (h->timer >= h->timeUntilNextSpawn &&		h->map->NumExplorableTiles / MAX_TILES_PER_PICKUP + 1 > h->numPickups)	{		h->timer = 0;		if (TryPlacePickup(h))		{			h->pickupsSpawned++;			h->numPickups++;		}	}}
开发者ID:Wuzzy2,项目名称:cdogs-sdl,代码行数:48,


示例20: LoadGunSpawners

static void LoadGunSpawners(CArray *classes, const CArray *guns){	for (int i = 0; i < (int)guns->size; i++)	{		const GunDescription *g = CArrayGet(guns, i);		if (!g->IsRealGun)		{			continue;		}		MapObject m;		memset(&m, 0, sizeof m);		char buf[256];		sprintf(buf, "%s spawner", g->name);		CSTRDUP(m.Name, buf);		m.Normal.Pic = PicManagerGetPic(&gPicManager, "spawn_pad");		m.Normal.Offset = Vec2iNew(			-m.Normal.Pic->size.x / 2,			TILE_HEIGHT / 2 - m.Normal.Pic->size.y);		m.Size = Vec2iNew(TILE_WIDTH, TILE_HEIGHT);		m.Health = 0;		m.Type = MAP_OBJECT_TYPE_PICKUP_SPAWNER;		sprintf(buf, "gun_%s", g->name);		m.u.PickupClass = StrPickupClass(buf);		CArrayPushBack(classes, &m);	}}
开发者ID:carstene1ns,项目名称:cdogs-sdl,代码行数:26,


示例21: MissionBriefingDraw

static void MissionBriefingDraw(void *data){	const MissionBriefingData *mData = data;	GraphicsBlitBkg(&gGraphicsDevice);	// Mission title	FontStrOpt(mData->Title, Vec2iZero(), mData->TitleOpts);	// Display password	FontStrOpt(mData->Password, Vec2iZero(), mData->PasswordOpts);	// Display description with typewriter effect	FontStr(mData->TypewriterBuf, mData->DescriptionPos);	// Display objectives	for (int i = 0;		i < (int)mData->MissionOptions->missionData->Objectives.size;		i++)	{		const MissionObjective *o =			CArrayGet(&mData->MissionOptions->missionData->Objectives, i);		// Do not brief optional objectives		if (o->Required == 0)		{			continue;		}		const Vec2i yInc = Vec2iNew(0, i * mData->ObjectiveHeight);		FontStr(o->Description, Vec2iAdd(mData->ObjectiveDescPos, yInc));		DrawObjectiveInfo(			mData->MissionOptions, i, Vec2iAdd(mData->ObjectiveInfoPos, yInc));	}}
开发者ID:Wuzzy2,项目名称:cdogs-sdl,代码行数:30,


示例22: json_new_string

static json_t *SaveStaticTiles(Mission *m){	// Create a text buffer for CSV	// The buffer will contain n*5 chars (tiles, allow 5 chars each),	// and n - 1 commas, so 6n total	const int size = (int)m->u.Static.Tiles.size;	if (size == 0)	{		return json_new_string("");	}	char *bigbuf;	CCALLOC(bigbuf, size * 6);	char *pBuf = bigbuf;	CASSERT(pBuf != NULL, "memory error");	for (int i = 0; i < size; i++)	{		char buf[32];		sprintf(buf, "%d", *(unsigned short *)CArrayGet(			&m->u.Static.Tiles, i));		strcpy(pBuf, buf);		pBuf += strlen(buf);		if (i < size - 1)		{			*pBuf = ',';			pBuf++;		}	}	json_t *node = json_new_string(bigbuf);	CFREE(bigbuf);	return node;}
开发者ID:FlyingTarrasque,项目名称:cdogs-sdl,代码行数:31,


示例23: ConvertTBadGuy

TBadGuy ConvertTBadGuy(Character *e){	TBadGuy b;	b.armedBodyPic = BODY_ARMED;	b.unarmedBodyPic = BODY_UNARMED;	b.facePic = e->looks.face;	b.speed = e->speed;	b.probabilityToMove = e->bot->probabilityToMove;	b.probabilityToTrack = e->bot->probabilityToTrack;	b.probabilityToShoot = e->bot->probabilityToShoot;	b.actionDelay = e->bot->actionDelay;	for (int i = 0; i < (int)gGunDescriptions.size; i++)	{		const GunDescription *g = CArrayGet(&gGunDescriptions, i);		if (strcmp(e->Gun->name, g->name) == 0)		{			b.gun = i;			break;		}	}	b.skinColor = e->looks.skin;	b.armColor = e->looks.arm;	b.bodyColor = e->looks.body;	b.legColor = e->looks.leg;	b.hairColor = e->looks.hair;	b.health = e->maxHealth;	b.flags = e->flags;	return b;}
开发者ID:kodephys,项目名称:cdogs-sdl,代码行数:29,


示例24: MenuDisplay

void MenuDisplay(const MenuSystem *ms){	const menu_t *menu = ms->current;	if (menu->type == MENU_TYPE_CUSTOM)	{		menu->u.customData.displayFunc(			menu, ms->graphics, ms->pos, ms->size, menu->u.customData.data);	}	else	{		MenuDisplayItems(ms);		if (strlen(menu->u.normal.title) != 0)		{			FontOpts opts = FontOptsNew();			opts.HAlign = ALIGN_CENTER;			opts.Area = ms->size;			opts.Pad = Vec2iNew(20, 20);			FontStrOpt(menu->u.normal.title, ms->pos, opts);		}		MenuDisplaySubmenus(ms);	}	for (int i = 0; i < (int)ms->customDisplayFuncs.size; i++)	{		MenuCustomDisplayFunc *cdf = CArrayGet(&ms->customDisplayFuncs, i);		cdf->Func(NULL, ms->graphics, ms->pos, ms->size, cdf->Data);	}	if (menu->customDisplayFunc)	{		menu->customDisplayFunc(			menu, ms->graphics, ms->pos, ms->size, menu->customDisplayData);	}}
开发者ID:Wuzzy2,项目名称:cdogs-sdl,代码行数:34,


示例25: strcpy

static char *MakeMapObjectTooltip(const MapObject *mo){	// Add a descriptive tooltip for the map object	char buf[512];	// Construct text representing explosion guns	char exBuf[256];	strcpy(exBuf, "");	if (mo->DestroyGuns.size > 0)	{		sprintf(exBuf, "/nExplodes: ");		for (int i = 0; i < (int)mo->DestroyGuns.size; i++)		{			if (i > 0)			{				strcat(exBuf, ", ");			}			const GunDescription **g = CArrayGet(&mo->DestroyGuns, i);			strcat(exBuf, (*g)->name);		}	}	sprintf(buf, "%s/nHealth: %d%s", mo->Name, mo->Health, exBuf);	char *tmp;	CSTRDUP(tmp, buf);	return tmp;}
开发者ID:ChunHungLiu,项目名称:cdogs-sdl,代码行数:25,


示例26: CollideAllItems

void CollideAllItems(	const TTileItem *item, const Vec2i pos,	const int mask, const CollisionTeam team, const bool isPVP,	CollideItemFunc func, void *data){	const Vec2i tv = Vec2iToTile(pos);	Vec2i dv;	// Check collisions with all other items on this tile, in all 8 directions	for (dv.y = -1; dv.y <= 1; dv.y++)	{		for (dv.x = -1; dv.x <= 1; dv.x++)		{			const Vec2i dtv = Vec2iAdd(tv, dv);			if (!MapIsTileIn(&gMap, dtv))			{				continue;			}			CArray *tileThings = &MapGetTile(&gMap, dtv)->things;			for (int i = 0; i < (int)tileThings->size; i++)			{				TTileItem *ti = ThingIdGetTileItem(CArrayGet(tileThings, i));				// Don't collide if items are on the same team				if (!CollisionIsOnSameTeam(ti, team, isPVP))				{					if (item != ti &&						(ti->flags & mask) &&						ItemsCollide(item, ti, pos))					{						func(ti, data);					}				}			}		}	}}
开发者ID:Wuzzy2,项目名称:cdogs-sdl,代码行数:35,


示例27: Vec2iToTile

TTileItem *GetItemOnTileInCollision(	TTileItem *item, Vec2i pos, int mask, CollisionTeam team, int isDogfight){	Vec2i tv = Vec2iToTile(pos);	Vec2i dv;	if (!MapIsTileIn(&gMap, tv))	{		return NULL;	}	// Check collisions with all other items on this tile, in all 8 directions	for (dv.y = -1; dv.y <= 1; dv.y++)	{		for (dv.x = -1; dv.x <= 1; dv.x++)		{			CArray *tileThings = &MapGetTile(&gMap, Vec2iAdd(tv, dv))->things;			for (int i = 0; i < (int)tileThings->size; i++)			{				TTileItem *ti = ThingIdGetTileItem(CArrayGet(tileThings, i));				// Don't collide if items are on the same team				if (!CollisionIsOnSameTeam(ti, team, isDogfight))				{					if (item != ti &&						(ti->flags & mask) &&						ItemsCollide(item, ti, pos))					{						return ti;					}				}			}		}	}	return NULL;}
开发者ID:kodephys,项目名称:cdogs-sdl,代码行数:35,



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


C++ CArrayPushBack函数代码示例
C++ CAT_MASK函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。