⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 te_team.cpp

📁 空战游戏flacon源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
					TeamInfo[gSelectedTeam]->stance[tid] = War;
				}
		}
		UpdateBigMapColors(gSelectedTeam);
		SetupTeamData();
		SetupCurrentTeamValues(gSelectedTeam);
		SetupTeamListValues();
		UpdateOccupationMap();
		update_team_victory_window ();
	}
	else
	{// Error Message No more teams available
	}
}

static void RemoveTeamCB(long,short hittype,C_Base *)
{
	short i,TeamCount,new_owner;
	CampBaseClass	*entity;
	VuListIterator	eit(AllCampList);

	if(hittype != C_TYPE_LMOUSEUP)
		return;

	TeamCount=0;
	for(i=0;i<NUM_TEAMS;i++)
	{
		if(TeamInfo[i] && (TeamInfo[i]->flags & TEAM_ACTIVE))
			TeamCount++;
	}
	if(TeamCount < 2)
	{
		// Error, you need at least 1 team
		return;
	}

	if(TeamInfo[gSelectedTeam])
	{
		FlagImageID[TeamInfo[gSelectedTeam]->GetFlag()][FLAG_STATUS]=0;
		TeamColorUse[TeamInfo[gSelectedTeam]->GetColor()]=0;
		RemoveTeam(gSelectedTeam);
		UpdateBigMapColors(gSelectedTeam);

		TeamCount=gSelectedTeam;
		i=0;
		while(!i)
		{
			gSelectedTeam--;
			if(gSelectedTeam < 1)
				gSelectedTeam=NUM_TEAMS-1;
			if(TeamInfo[gSelectedTeam] || gSelectedTeam == TeamCount)
				i=1;
		}

		if (FalconLocalSession->GetTeam() == gSelectedTeam)
			{
			FalconLocalSession->SetCountry(255);
			for (i=0; i<NUM_TEAMS; i++)
				{
				if (TeamInfo[i])
					FalconLocalSession->SetCountry(static_cast<uchar>(i));
				}
			}

		SetupTeamData();
		gDrawTeam=i;
		SetupCurrentTeamValues(gSelectedTeam);
		SetupTeamListValues();
		update_team_victory_window ();
	}

	// Pick a team to give all our stuff to.
	for (i=7; i<NUM_TEAMS && !TeamInfo[i]; i--);
		new_owner = i;

	entity = (CampBaseClass*) eit.GetFirst();
	while (entity)
		{
		entity->SetOwner(static_cast<uchar>(new_owner));
		if (entity->IsObjective())
			((Objective)entity)->SetObjectiveOldown(static_cast<uchar>(new_owner));
		entity = (CampBaseClass*) eit.GetNext();
		}
}

static void ChoosePrevFlag(long,short hittype,C_Base *)
{
	short oldFlag,newflag,done;

	if(hittype != C_TYPE_LMOUSEUP)
		return;

	oldFlag=static_cast<short>(TeamInfo[gSelectedTeam]->GetFlag());
	newflag=oldFlag;

	done=0;
	while(!done)
	{
		newflag--;
		if(newflag < 1)
			newflag+=TOTAL_FLAGS;
		if(!FlagImageID[newflag][FLAG_STATUS])
			done=1;
	}
	FlagImageID[newflag][FLAG_STATUS]=1;
	FlagImageID[oldFlag][FLAG_STATUS]=0;
	TeamInfo[gSelectedTeam]->SetFlag(static_cast<uchar>(newflag));
	SetupCurrentTeamValues(gSelectedTeam);
	SetupTeamListValues();
	SetupTeamFlags();
}

static void ChooseNextFlag(long,short hittype,C_Base *)
{
	short oldFlag,newflag,done;

	if(hittype != C_TYPE_LMOUSEUP)
		return;

	oldFlag=static_cast<short>(TeamInfo[gSelectedTeam]->GetFlag());
	FlagImageID[oldFlag][FLAG_STATUS]=0;
	newflag=oldFlag;

	done=0;
	while(!done)
	{
		newflag++;
		if(newflag >= TOTAL_FLAGS)
			newflag=1;
		if(!FlagImageID[newflag][FLAG_STATUS])
			done=1;
	}
	FlagImageID[newflag][FLAG_STATUS]=1;
	TeamInfo[gSelectedTeam]->SetFlag(static_cast<uchar>(newflag));
	SetupCurrentTeamValues(gSelectedTeam);
	SetupTeamListValues();
	SetupTeamFlags();
}

static void ChoosePrevColor(long,short hittype,C_Base *)
{
	short oldcolor,newcolor,done;

	if(hittype != C_TYPE_LMOUSEUP)
		return;

	oldcolor=static_cast<short>(TeamInfo[gSelectedTeam]->GetColor());
	TeamColorUse[oldcolor]=0;
	newcolor=oldcolor;

	done=0;
	while(!done)
	{
		newcolor--;
		if(newcolor < 1)
			newcolor=NUM_TEAMS-1;
		if(!TeamColorUse[newcolor])
			done=1;
	}
	TeamColorUse[newcolor]=1;
	TeamInfo[gSelectedTeam]->SetColor(static_cast<uchar>(newcolor));
	UpdateBigMapColors(gSelectedTeam);
	UpdateOccupationMap();
	SetupCurrentTeamValues(gSelectedTeam);
	SetupTeamListValues();
}

static void ChooseNextColor(long,short hittype,C_Base *)
{
	short oldcolor,newcolor,done;

	if(hittype != C_TYPE_LMOUSEUP)
		return;

	oldcolor=static_cast<short>(TeamInfo[gSelectedTeam]->GetColor());
	TeamColorUse[oldcolor]=0;
	newcolor=oldcolor;

	done=0;
	while(!done)
	{
		newcolor++;
		if(newcolor >= NUM_TEAMS)
			newcolor=1;
		if(!TeamColorUse[newcolor])
			done=1;
	}
	TeamColorUse[newcolor]=1;
	TeamInfo[gSelectedTeam]->SetColor(static_cast<uchar>(newcolor));
	UpdateBigMapColors(gSelectedTeam);
	UpdateOccupationMap();
	SetupCurrentTeamValues(gSelectedTeam);
	SetupTeamListValues();
	SetupTeamColors();
}

void ChooseTeamCB(long,short hittype,C_Base *base)
{
	C_Window *win;
	C_Button *btn;
	C_Line   *line;

	if(hittype != C_TYPE_LMOUSEUP)
		return;

	gSelectedTeam=static_cast<uchar>(base->GetUserNumber(0));
	if(gSelectedTeam < 1 || gSelectedTeam >= NUM_TEAMS)
		gSelectedTeam=1;

	gDrawTeam=gSelectedTeam;
	SetupCurrentTeamValues(gSelectedTeam);
	SetupTeamListValues();
	// Set team # on Map Windows (TEAM_SELECTOR)

	FalconLocalSession->SetCountry(gSelectedTeam);

	win=gMainHandler->FindWindow(TAC_EDIT_WIN);
	if(win)
	{
		btn=(C_Button*)win->FindControl(TEAM_SELECTOR);
		if(btn)
		{
			btn->SetState(gSelectedTeam);
			btn->Refresh();
		}
		line=(C_Line*)win->FindControl(TEAM_COLOR);
		if(line)
		{
			line->SetColor(TeamColorList[TeamInfo[gSelectedTeam]->GetColor()]);
			line->Refresh();
		}
	}

	win=gMainHandler->FindWindow(TAC_PUA_MAP);
	if(win)
	{
		btn=(C_Button*)win->FindControl(TEAM_SELECTOR);
		if(btn)
		{
			btn->SetState(gSelectedTeam);
			btn->Refresh();
		}
		line=(C_Line*)win->FindControl(TEAM_COLOR);
		if(line)
		{
			line->SetColor(TeamColorList[TeamInfo[gSelectedTeam]->GetColor()]);
			line->Refresh();
		}
	}

	win=gMainHandler->FindWindow(TAC_FULLMAP_WIN);
	if(win)
	{
		btn=(C_Button*)win->FindControl(TEAM_SELECTOR);
		if(btn)
		{
			btn->SetState(gSelectedTeam);
			btn->Refresh();
		}
		line=(C_Line*)win->FindControl(TEAM_COLOR);
		if(line)
		{
			line->SetColor(TeamColorList[TeamInfo[gSelectedTeam]->GetColor()]);
			line->Refresh();
		}
	}
}

static void SetTeamNameCB(long,short hittype,C_Base *base)
{
	C_EditBox *ebox;

	if(hittype != DIK_RETURN && hittype)
		return;

	ebox=(C_EditBox*)base;
	if(ebox && TeamInfo[gSelectedTeam])
		TeamInfo[gSelectedTeam]->SetName(ebox->GetText());
	UpdateTeamName(gSelectedTeam);
	SetupTeamNames();
}

static void SetTeamStatementCB(long,short hittype,C_Base *base)
{
	C_EditBox *ebox;

	if(hittype != DIK_RETURN)
		return;

	ebox=(C_EditBox*)base;
	if(ebox && TeamInfo[gSelectedTeam])
		TeamInfo[gSelectedTeam]->SetMotto(ebox->GetText());
}

void Hookup_Team_Win(C_Window *win)
{
	C_Base *base;

	if(win)
	{
		if(win->GetID() != TAC_TEAM_WIN)
			return;

		base=win->FindControl(TAC_MAP_TE);
		if(base)
			base->SetCallback(tactical_territory_map_edit);

		base=win->FindControl(DRAW_TERRITORY);
		if(base)
			base->SetCallback(tactical_set_drawmode);

		base=win->FindControl(ERASE_TERRITORY);
		if(base)
			base->SetCallback(tactical_set_erasemode);

		base=win->FindControl(CLEAR_TERRITORY);
		if(base)
			base->SetCallback(tactical_territory_editor_clear);

		base=win->FindControl(UNDO_TERRITORY);
		if(base)
			base->SetCallback(tactical_territory_editor_restore);

		base=win->FindControl(GROUP1_FLAG);
		if(base)
			base->SetCallback(ChooseTeamCB);

		base=win->FindControl(GROUP2_FLAG);
		if(base)
			base->SetCallback(ChooseTeamCB);

		base=win->FindControl(GROUP3_FLAG);
		if(base)
			base->SetCallback(ChooseTeamCB);

		base=win->FindControl(GROUP4_FLAG);
		if(base)
			base->SetCallback(ChooseTeamCB);

		base=win->FindControl(GROUP5_FLAG);
		if(base)
			base->SetCallback(ChooseTeamCB);

		base=win->FindControl(GROUP6_FLAG);
		if(base)
			base->SetCallback(ChooseTeamCB);

		base=win->FindControl(GROUP7_FLAG);
		if(base)
			base->SetCallback(ChooseTeamCB);

		base=win->FindControl(GROUP8_FLAG);
		if(base)
			base->SetCallback(ChooseTeamCB);

		base=win->FindControl(TAC_NEW);
		if(base)
			base->SetCallback(MakeNewTeamCB);

		base=win->FindControl(TAC_DELETE_TEAM);
		if(base)
			base->SetCallback(RemoveTeamCB);

		base=win->FindControl(CURRENT_NAME);
		if(base)
			base->SetCallback(SetTeamNameCB);

		base=win->FindControl(MISSION_STATEMENT);
		if(base)
			base->SetCallback(SetTeamStatementCB);

		base=win->FindControl(PREV_FLAG);
		if(base)
			base->SetCallback(ChoosePrevFlag);

		base=win->FindControl(NEXT_FLAG);
		if(base)
			base->SetCallback(ChooseNextFlag);

		base=win->FindControl(PREV_COLOR);
		if(base)
			base->SetCallback(ChoosePrevColor);

		base=win->FindControl(NEXT_COLOR);
		if(base)
			base->SetCallback(ChooseNextColor);

		base=win->FindControl(PILOT_SKILL);
		if(base)
			base->SetCallback(NULL);

		base=win->FindControl(SAM_SKILL);
		if(base)
			base->SetCallback(NULL);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -