1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
/* This file is part of the Spring engine (GPL v2 or later), see LICENSE.html */
#ifndef SELECTED_UNITS_H
#define SELECTED_UNITS_H
#include "Sim/Units/UnitSet.h"
#include "Sim/Units/CommandAI/Command.h"
#include "System/float4.h"
#include "System/Object.h"
#include <vector>
#include <string>
class CFeature;
struct SCommandDescription;
class CSelectedUnitsHandler : public CObject
{
public:
CSelectedUnitsHandler();
void Init(unsigned numPlayers);
void SelectGroup(int num);
void AiOrder(int unitid, const Command& c, int playerID);
int GetDefaultCmd(const CUnit* unit, const CFeature* feature);
bool CommandsChanged();
void NetOrder(Command& c, int playerId);
void NetSelect(std::vector<int>& s, int playerId);
void ClearNetSelect(int playerId);
void DependentDied(CObject* o);
void Draw();
struct AvailableCommandsStruct {
std::vector<SCommandDescription> commands;
int commandPage;
};
AvailableCommandsStruct GetAvailableCommands();
void GiveCommand(Command c, bool fromUser = true);
void AddUnit(CUnit* unit);
void RemoveUnit(CUnit* unit);
void ClearSelected();
/// used by MouseHandler.cpp & MiniMap.cpp
void HandleUnitBoxSelection(const float4& planeRight, const float4& planeLeft, const float4& planeTop, const float4& planeBottom);
void HandleSingleUnitClickSelection(CUnit* unit, bool doInViewTest, bool selectType);
void ToggleBuildIconsFirst();
bool BuildIconsFirst() const { return buildIconsFirst; }
void PossibleCommandChange(CUnit* sender);
void DrawCommands();
std::string GetTooltip();
void SetCommandPage(int page);
void SendCommand(const Command& c);
void SendCommandsToUnits(const std::vector<int>& unitIDs, const std::vector<Command>& commands, bool pairwise = false);
bool IsUnitSelected(const CUnit* unit) const;
bool IsUnitSelected(const int unitID) const;
bool AutoAddBuiltUnitsToFactoryGroup() const { return autoAddBuiltUnitsToFactoryGroup; }
bool AutoAddBuiltUnitsToSelectedGroup() const { return autoAddBuiltUnitsToSelectedGroup; }
bool IsGroupSelected(int groupID) const { return (selectedGroup == groupID); }
int GetSelectedGroup() const { return selectedGroup; }
void SelectUnits(const std::string& line);
void SelectCycle(const std::string& command);
public:
CUnitSet selectedUnits;
bool selectionChanged;
bool possibleCommandsChanged;
std::vector< std::vector<int> > netSelected;
private:
int selectedGroup;
int soundMultiselID;
bool autoAddBuiltUnitsToFactoryGroup;
bool autoAddBuiltUnitsToSelectedGroup;
bool buildIconsFirst;
};
extern CSelectedUnitsHandler selectedUnitsHandler;
#endif /* SELECTED_UNITS_H */
|