____ _ __
/ __ )____ _____ | | / /___ ___________
/ __ / __ \/ ___/ | | /| / / __ `/ ___/ ___/
/ /_/ / /_/ (__ ) | |/ |/ / /_/ / / (__ )
/_____/\____/____/ |__/|__/\__,_/_/ /____/
A futuristic real-time strategy game.
This file is part of Bos Wars.
(C) Copyright 2001-2007 by the Bos Wars and Stratagus Project.
Distributed under the "GNU General Public License"
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include "stratagus.h"
#include "video.h"
#include "map.h"
#include "sound.h"
#include "unitsound.h"
#include "unittype.h"
#include "animation.h"
#include "icons.h"
#include "missile.h"
#include "script.h"
#include "construct.h"
#include "spells.h"
#include "font.h"
#include "unit.h"
#include "unit_manager.h"
#include "player.h"
#include "luacallback.h"
Go to the source code of this file.
Classes | |
| struct | LabelsStruct |
| struct | LabelsLaterStruct |
Defines | |
| #define | MAGIC_FOR_NEW_UNITS 33 |
| How many percent of max mana for new units. | |
Functions | |
| int | GetSpriteIndex (const std::string &spriteName) |
| unsigned | CclGetResourceByName (lua_State *l) |
| < Get resource by name | |
| static void | ParseBuildingRules (lua_State *l, std::vector< CBuildRestriction * > &blist) |
| static int | CclDefineUnitType (lua_State *l) |
| CUnitType * | CclGetUnitType (lua_State *l) |
| Access unit-type object. | |
| static void | AddLabel (lua_State *l, CAnimation *anim, const std::string &name) |
| static CAnimation * | FindLabel (lua_State *l, const std::string &name) |
| static void | FindLabelLater (lua_State *l, CAnimation **anim, const std::string &name) |
| static void | FixLabels (lua_State *l) |
| static void | ParseAnimationFrame (lua_State *l, const char *str, CAnimation *anim) |
| static CAnimation * | ParseAnimation (lua_State *l, int idx) |
| static void | AddAnimationToArray (CAnimation *anim) |
| static int | CclDefineAnimations (lua_State *l) |
| void | DefineVariableField (lua_State *l, CVariable *var, int lua_index) |
| < Parse User Variables field. | |
| int | GetVariableIndex (const char *varname) |
| Get index of the variable. | |
| static int | CclDefineVariables (lua_State *l) |
| static int | CclDefineDecorations (lua_State *l) |
| void | UpdateUnitVariables (const CUnit *unit) |
| void | InitDefinedVariables () |
| void | UnitTypeCclRegister (void) |
| Register ccl features. | |
Variables | |
| CAnimation * | AnimationsArray [ANIMATIONS_MAXANIM] |
| int | NumAnimations |
| Hash table of all the animations. | |
| std::map< std::string, CAnimations * > | AnimationMap |
| Animation map. | |
| CUnitTypeVar | UnitTypeVar |
| Variables for UnitType and unit. | |
| static std::vector< LabelsStruct > | Labels |
| static std::vector < LabelsLaterStruct > | LabelsLater |
Definition in file script_unittype.cpp.
| #define MAGIC_FOR_NEW_UNITS 33 |
How many percent of max mana for new units.
Definition at line 61 of file script_unittype.cpp.
Referenced by CclDefineUnitType().
| static void AddAnimationToArray | ( | CAnimation * | anim | ) | [static] |
Add animation to AnimationsArray
Definition at line 961 of file script_unittype.cpp.
References ANIMATIONS_MAXANIM, Assert, and NumAnimations.
Referenced by CclDefineAnimations().
| static void AddLabel | ( | lua_State * | l, | |
| CAnimation * | anim, | |||
| const std::string & | name | |||
| ) | [static] |
Add a label
Definition at line 761 of file script_unittype.cpp.
References LabelsStruct::Anim, Labels, and LabelsStruct::Name.
Referenced by ParseAnimationFrame().
| static int CclDefineAnimations | ( | lua_State * | l | ) | [static] |
Define a unit-type animation set.
| l | Lua state. |
Definition at line 976 of file script_unittype.cpp.
References _C_, AddAnimationToArray(), AnimationMap, AnimationsByIdent(), CAnimations::Attack, CAnimations::Death, CAnimations::Harvest, LuaCheckArgs, LuaError, LuaToString(), CAnimations::Move, ParseAnimation(), CAnimations::Repair, CAnimations::Start, CAnimations::Still, and CAnimations::Train.
Referenced by UnitTypeCclRegister().
| static int CclDefineDecorations | ( | lua_State * | l | ) | [static] |
Define Decorations for user variables
| l | Lua state. |
Definition at line 1135 of file script_unittype.cpp.
References _C_, Assert, CUnitTypeVar::DecoVar, GetSpriteIndex(), GetVariableIndex(), CDecoVar::HideAllied, CDecoVar::HideNeutral, CDecoVar::Index, CDecoVar::IsCenteredInX, CDecoVar::IsCenteredInY, LuaError, LuaToBoolean(), LuaToNumber(), LuaToString(), CDecoVar::OffsetX, CDecoVar::OffsetXPercent, CDecoVar::OffsetY, CDecoVar::OffsetYPercent, CDecoVar::ShowIfNotEnable, CDecoVar::ShowOnlySelected, CDecoVar::ShowOpponent, CDecoVar::ShowWhenMax, and CDecoVarSpriteBar::SpriteIndex.
Referenced by UnitTypeCclRegister().
| static int CclDefineUnitType | ( | lua_State * | l | ) | [static] |
Parse unit-type.
| l | Lua state. |
Definition at line 217 of file script_unittype.cpp.
References _C_, CUnitSound::Acknowledgement, CUnitType::AirUnit, CUnitType::Animations, AnimationsByIdent(), CUnitType::AnnoyComputerFactor, CUnitType::AttackFromTransporter, ATTACKRANGE_INDEX, SpellType::AutoCast, CUnitType::AutoCastActive, CUnitType::BoxHeight, CUnitType::BoxWidth, CUnitType::BuilderLost, CUnitType::BuilderOutside, CUnitType::Building, CUnitType::BuildingRules, CUnitType::BurnDamageRate, CUnitType::BurnPercent, CUnitType::CanAttack, CUnitType::CanCastSpell, CUnitType::CanHarvestFrom, CUnitType::CanTarget, CanTargetAir, CanTargetLand, CanTargetSea, CUnitType::CanTransport, CUnitType::Construction, ConstructionByIdent(), CUnitType::CorpseName, CUnitType::CorpseType, CUnitType::Coward, CUnitSound::Dead, CUnitType::DeathExplosion, DebugPrint, CUnitType::DecayRate, CUnitType::Decoration, DefineVariableField(), CUnitType::DrawLevel, CVariable::Enable, CUnitType::ExplodeWhenKilled, CUnitType::Explosion, CUnitType::File, CUnitType::Flip, GetVariableIndex(), CUnitType::GroundAttack, CUnitSound::Harvest, CUnitType::Harvester, CUnitType::Height, CUnitSound::Help, HP_INDEX, IconConfig::Icon, CUnitType::Icon, CVariable::Increase, CUnitType::Indestructible, CUnitType::IsNotSelectable, CUnitType::LandUnit, LuaCheckArgs, LuaError, LuaToBoolean(), LuaToNumber(), LuaToString(), MAGIC_FOR_NEW_UNITS, MANA_INDEX, CVariable::Max, CUnitType::MaxOnBoard, CUnitType::MinAttackRange, MissileConfig::Missile, CUnitType::Missile, CUnitType::MouseAction, MouseActionAttack, MouseActionHarvest, MouseActionMove, MouseActionNone, MouseActionSail, MouseActionSpellCast, SoundConfig::Name, MissileConfig::Name, IconConfig::Name, CUnitType::Name, CUnitType::Neutral, CUnitType::NeutralMinimapColorRGB, NewUnitTypeSlot(), CUnitType::NumDirections, CUnitType::OffsetX, CUnitType::OffsetY, CUnitType::Organic, ParseBuildingRules(), CUnitType::Points, CUnitType::Priority, CUnitType::ProductionEfficiency, CUnitType::ReactRangeComputer, CUnitType::ReactRangePerson, CUnitSound::Ready, CUnitSound::Repair, CUnitType::RepairHP, CUnitType::RepairRange, CUnitType::Revealer, CUnitType::SeaUnit, CUnitType::SelectableByRectangle, CUnitSound::Selected, CUnitType::SetEnergyProductionRate(), CUnitType::SetEnergyStorageCapacity(), CUnitType::SetEnergyValue(), CUnitType::SetMagmaProductionRate(), CUnitType::SetMagmaStorageCapacity(), CUnitType::SetMagmaValue(), CUnitType::SetMaxEnergyUtilizationRate(), CUnitType::SetMaxMagmaUtilizationRate(), CUnitType::ShadowFile, CUnitType::ShadowHeight, CUnitType::ShadowOffsetX, CUnitType::ShadowOffsetY, CUnitType::ShadowWidth, CUnitType::ShoreBuilding, SpellType::Slot, CUnitType::Sound, SpellTypeByIdent(), SpellTypeTable, CUnitType::TileHeight, CUnitType::TileWidth, CUnitType::UnitType, UnitTypeByIdent(), UnitTypeFly, UnitTypeLand, UnitTypeNaval, CVariable::Value, CUnitType::Vanishes, CUnitType::Variable, CUnitType::VisibleUnderFog, and CUnitType::Width.
Referenced by UnitTypeCclRegister().
| static int CclDefineVariables | ( | lua_State * | l | ) | [static] |
Define user variables.
| l | Lua state. |
Definition at line 1089 of file script_unittype.cpp.
References _C_, DebugPrint, DefineVariableField(), GetVariableIndex(), LuaToString(), new_strdup(), CUnitTypeVar::NumberVariable, CUnitTypeVar::Variable, and CUnitTypeVar::VariableName.
Referenced by UnitTypeCclRegister().
| unsigned CclGetResourceByName | ( | lua_State * | l | ) |
< Get resource by name
Get the resource ID from a SCM object.
| l | Lua state. |
Definition at line 99 of file script_unittype.cpp.
References _C_, DefaultResourceNames, LuaError, LuaToString(), and MaxCosts.
| CUnitType* CclGetUnitType | ( | lua_State * | l | ) |
Access unit-type object.
Access unit-type object
| l | Lua state. |
Definition at line 737 of file script_unittype.cpp.
References _lua_user_data_::Data, data, LuaError, LuaToString(), LuaUnitType, _lua_user_data_::Type, and UnitTypeByIdent().
Referenced by CclAiForce(), CclAiNeed(), CclAiSet(), CclAiWait(), CclCreateUnit(), CclIfNearUnit(), CclIfRescuedNearUnit(), and TriggerGetUnitType().
| void DefineVariableField | ( | lua_State * | l, | |
| CVariable * | var, | |||
| int | lua_index | |||
| ) |
< Parse User Variables field.
Define the field of the UserDefined variables.
| l | Lua state. | |
| var | Variable to set. | |
| lua_index | Index of the table where are the infos |
Definition at line 1042 of file script_unittype.cpp.
References _C_, CVariable::Enable, CVariable::Increase, LuaError, LuaToBoolean(), LuaToNumber(), LuaToString(), CVariable::Max, and CVariable::Value.
Referenced by CclDefineUnitType(), CclDefineVariables(), and CclUnit().
| static CAnimation* FindLabel | ( | lua_State * | l, | |
| const std::string & | name | |||
| ) | [static] |
Find a label
Definition at line 772 of file script_unittype.cpp.
References _C_, int(), Labels, and LuaError.
Referenced by FixLabels().
| static void FindLabelLater | ( | lua_State * | l, | |
| CAnimation ** | anim, | |||
| const std::string & | name | |||
| ) | [static] |
Find a label later
Definition at line 786 of file script_unittype.cpp.
References LabelsLaterStruct::Anim, LabelsLater, and LabelsLaterStruct::Name.
Referenced by ParseAnimationFrame().
| static void FixLabels | ( | lua_State * | l | ) | [static] |
Fix labels
Definition at line 797 of file script_unittype.cpp.
References FindLabel(), int(), and LabelsLater.
Referenced by ParseAnimation().
| int GetSpriteIndex | ( | const std::string & | spriteName | ) |
Return the index of the sprite.
| spriteName | Name of the sprite. |
Definition at line 197 of file unit_draw.cpp.
References int(), and DecoSpriteType::Name.
Referenced by CclDefineDecorations(), and CclDefineSprites().
| int GetVariableIndex | ( | const char * | varname | ) |
Get index of the variable.
Return the index of the variable.
| varname | Name of the variable. |
Definition at line 1074 of file script_unittype.cpp.
References CUnitTypeVar::NumberVariable, and CUnitTypeVar::VariableName.
Referenced by CclDefineDecorations(), CclDefineUnitType(), CclDefineVariables(), CclGetUnitVariable(), CclSetUnitVariable(), CclSpellAction(), CclSpellCondition(), and CclUnit().
| void InitDefinedVariables | ( | ) |
Define already variables, useful for drawing now.
Definition at line 1351 of file script_unittype.cpp.
References new_strdup(), CUnitTypeVar::NumberVariable, NVARALREADYDEFINED, CUnitTypeVar::Variable, and CUnitTypeVar::VariableName.
Referenced by EditorMainLoop(), and UnitTypeCclRegister().
| static CAnimation* ParseAnimation | ( | lua_State * | l, | |
| int | idx | |||
| ) | [static] |
Parse an animation
Definition at line 924 of file script_unittype.cpp.
References FixLabels(), Labels, LabelsLater, LuaError, LuaToString(), CAnimation::Next, and ParseAnimationFrame().
Referenced by CclDefineAnimations().
| static void ParseAnimationFrame | ( | lua_State * | l, | |
| const char * | str, | |||
| CAnimation * | anim | |||
| ) | [static] |
Parse an animation frame
Definition at line 807 of file script_unittype.cpp.
References _C_, AddLabel(), AnimationAttack, AnimationExactFrame, AnimationFrame, AnimationGoto, AnimationLabel, AnimationMove, AnimationRandomFrame, AnimationRandomGoto, AnimationRandomRotate, AnimationRandomSound, AnimationRandomWait, AnimationRotate, AnimationSound, AnimationUnbreakable, AnimationWait, CAnimation::D, FindLabelLater(), CAnimation::Frame, CAnimation::Goto, LuaError, CAnimation::Move, new_strdup(), CAnimation::RandomFrame, CAnimation::RandomGoto, CAnimation::RandomSound, CAnimation::RandomWait, CAnimation::Rotate, CAnimation::Sound, CAnimation::Type, CAnimation::Unbreakable, and CAnimation::Wait.
Referenced by ParseAnimation().
| static void ParseBuildingRules | ( | lua_State * | l, | |
| std::vector< CBuildRestriction * > & | blist | |||
| ) | [static] |
Parse BuildingRules
| l | Lua state. | |
| blist | BuildingRestriction to fill in |
Definition at line 119 of file script_unittype.cpp.
References _C_, Assert, CBuildRestrictionDistance::Distance, CBuildRestrictionDistance::DistanceType, Equal, GreaterThan, GreaterThanEqual, LessThan, LessThanEqual, LuaError, LuaToBoolean(), LuaToNumber(), LuaToString(), NotEqual, CBuildRestrictionAddOn::OffsetX, CBuildRestrictionAddOn::OffsetY, CBuildRestrictionOnTop::ParentName, CBuildRestrictionAddOn::ParentName, CBuildRestrictionAnd::push_back(), CBuildRestrictionOnTop::ReplaceOnBuild, CBuildRestrictionOnTop::ReplaceOnDie, and CBuildRestrictionDistance::RestrictTypeName.
Referenced by CclDefineUnitType().
| void UnitTypeCclRegister | ( | void | ) |
Register ccl features.
Register CCL features for unit-type.
Definition at line 1371 of file script_unittype.cpp.
References CclDefineAnimations(), CclDefineDecorations(), CclDefineUnitType(), CclDefineVariables(), InitDefinedVariables(), and Lua.
Referenced by InitCcl().
| void UpdateUnitVariables | ( | const CUnit * | unit | ) |
Update unit variables which are not user defined.
Definition at line 1250 of file script_unittype.cpp.
References _C_, ARMOR_INDEX, Assert, ATTACKRANGE_INDEX, BASICDAMAGE_INDEX, CUnit::BoardCount, BUILD_INDEX, CUnit::_order_data_::Built, CUnitType::CanHarvestFrom, CYCLES_PER_SECOND, CUnit::Data, DebugPrint, CVariable::Enable, EnergyCost, GIVERESOURCE_INDEX, HP_INDEX, CUnitType::Ident, CMap::Info, KILL_INDEX, MagmaCost, MANA_INDEX, Map, CMapInfo::MapHeight, CMapInfo::MapWidth, CVariable::Max, MaxCosts, CUnitType::MaxOnBoard, NVARALREADYDEFINED, CUnit::Orders, PIERCINGDAMAGE_INDEX, POSX_INDEX, POSY_INDEX, CUnitType::ProductionCosts, CUnit::_order_data_::_order_built_::Progress, RADAR_INDEX, RADARJAMMER_INDEX, CUnit::ResourcesHeld, SIGHTRANGE_INDEX, CUnit::Slot, SLOT_INDEX, CUnit::Stats, CUnit::_order_data_::_order_train_::Ticks, CUnit::_order_data_::Train, TRAINING_INDEX, TRANSPORT_INDEX, CUnit::Type, UnitActionBuilt, UnitActionTrain, UnitSlotFree, CVariable::Value, CUnitType::Variable, CUnit::Variable, CUnitTypeVar::VariableName, CUnitStats::Variables, CUnit::X, and CUnit::Y.
Referenced by DrawDecoration(), and DrawUnitInfo().
| std::map<std::string, CAnimations *> AnimationMap |
Animation map.
Definition at line 70 of file script_unittype.cpp.
Referenced by AnimationsByIdent(), CclDefineAnimations(), and CleanUnitTypes().
| CAnimation* AnimationsArray[ANIMATIONS_MAXANIM] |
Definition at line 67 of file script_unittype.cpp.
Referenced by CclUnit(), CleanUnitTypes(), and SaveUnit().
std::vector<LabelsStruct> Labels [static] |
Definition at line 78 of file script_unittype.cpp.
Referenced by AddLabel(), CclSetTitleScreens(), FindLabel(), and ParseAnimation().
std::vector<LabelsLaterStruct> LabelsLater [static] |
Definition at line 84 of file script_unittype.cpp.
Referenced by FindLabelLater(), FixLabels(), and ParseAnimation().
| int NumAnimations |
Hash table of all the animations.
Definition at line 68 of file script_unittype.cpp.
Referenced by AddAnimationToArray(), CleanUnitTypes(), and SaveUnit().
Variables for UnitType and unit.
Definition at line 72 of file script_unittype.cpp.
Referenced by CUnit::AssignToPlayer(), AdjustVariable::Cast(), CclSpellAction(), CclSpellCondition(), CleanUnitTypes(), DrawDecoration(), HandleBuffs(), CUnit::Init(), NewUnitTypeSlot(), PassCondition(), SaveUnit(), and UpdateStats().
1.5.6