Skip to content

Instantly share code, notes, and snippets.

@coderbot16
Created February 17, 2018 20:25
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save coderbot16/543ebf9a9ecc295a972d1857c731aa59 to your computer and use it in GitHub Desktop.
Save coderbot16/543ebf9a9ecc295a972d1857c731aa59 to your computer and use it in GitHub Desktop.
Possible instructions in Empire Earth random map script files
pub type UnitRef = u32;
pub type ResourceRef = u32;
pub type TerrainRef = u32;
pub type CliffRef = u32;
pub type HerdHandle = u32;
pub type ForestHandle = u32;
pub type TerrainHandle = u32;
pub type Range = (u32, u32);
pub enum Instruction {
// HERD INSTRUCTIONS
RandomHerdPerNeutral(u32),
RandomHerdPerPlayer(u32),
HerdPerNeutral { handle: HerdHandle, amount: u32 },
HerdPerPlayer { handle: HerdHandle, amount: u32 },
DefineRandomHerdSet(Vec<HerdHandle>),
/// Center is relative to player center.
DefineHerd { handle: HerdHandle, unit: UnitRef, herdSize: u32, minDistFromCenter: u32, maxDistFromCenter: u32 },
AvailableAnimals(Vec<UnitRef>),
// FOREST INSTRUCTIONS
AvailableForests(Vec<ForestHandle>),
/// Defines a forest with the terrain that should be placed below it,
/// and the Units that make up the forest.
DefineForest { handle: ForestHandle, terrain: TerrainRef, trees: Vec<UnitRef> },
// TERRAIN INSTRUCTIONS
/// Specifies an alternative terrain at different elevation ranges.
RandomMapTerrainRange { handle: TerrainHandle, min: i32, max: i32, alternate: TerrainRef },
/// Links a TerrainHandle to a primary terrain.
DeclareRandomMapTerrain { handle: TerrainHandle, terrain: TerrainRef },
/// Sets the terrain below a certain resource.
ResourceTerrainTexture { resource: ResourceRef, terrain: TerrainRef },
/// Defines a region in percentage for the terrain to be generated.
TerrainRegion { min: u32, max: u32, handle: TerrainHandle },
// UNIT PLACE INSTRUCTIONS
PlaceUnitInRing,// TODO
PlaceWorldUnit,// TODO
PlaceWall,// TODO
/// Places a unit for the current player, offset from thier center.
PlaceUnit { unit: UnitRef, x: f32, y: f32, degrees: f32 },
PlaceWorldUnitInRing { unit: UnitRef, min: u32, max: u32 },
PlaceResourceInRing { resource: ResourceRef, min: u32, max: u32 },
// SPECIAL ATTRIBUTES
StringTableId(u32),
UseMapGenerator(String),
MapCharacteristics(u32),
// ATTRIBUTES
/// Range: >=0
MinimumStartPositionToMapEdge(u32),
InnerPushFromMapCenter(u32),
OuterPushFromMapCenter(u32),
// SHALLOWS
GenerateShallows(bool),
/// Range: >=0
MaxShallowConnectionsPerPlayer(u32),
/// Range: >0
ShallowsWidth(u32),
/// Range: [-10, 20]
ShallowsElevation(i32),
/// Defines the cliff texture used to paint cliffs.
CliffTexture(CliffRef),
/// Range: >=0.0
TerrainChaos(f32),
/// Range: <true, false>
TestingLandDistribution(bool),
/// Range: <true, false>
FilterHeightMap(bool),
/// Range: >0
MaxIterationsClumpGrowth(u32),
/// Range: >0
MaxLoopCount(u32),
/// Range: >= 1.0
ConvergentThreshold(f32),
/// Range: >= 1.0
ConvergentSampleSize(f32),
// RESOURCE ATTRIBUTES
/// Range: >=0
ResourceToWaterDistance(u32),
/// Range: >=0
ResourceToEdgeDistance(u32),
/// Range: >=0.0
ResourceSeperation(f32),
/// Range: [0<=min<=max]
ResourcePlacementLimit { resource: ResourceRef, min: u32, max: u32 },
/// Range: [-10, 20]
MaxTreeElevation(i32),
/// Range: [-10, 20]
MaxResourceElevation(i32),
/// Range: >=0
ResourcePerNeutralLand { resource: ResourceRef, amount: u32 },
/// Range: >=0
ResourcePerPlayer { resource: ResourceRef, amount: u32 },
// FOREST ATTRIBUTES
/// Range: >0
MaximumTreesPerClump(u32),
/// Range: >0
MaxTreeLoopCount(u32),
/// Range: >0
MaxClumpsPerForest(u32),
/// Range: [0.0, 1.0]
ForestChaosLevel(f32),
/// Range: >=0
ForestsPerPlayer(u32),
/// Range: >=0.0
ForestFreeRadius(f32),
// INNER NEUTRAL ZONE ATTRIBUTES
/// Range: >0
InnerNeutralFlatClumps(u32),
/// Range: [0.0, 1.0]
InnerNeutralFlatChaos(f32),
/// Range: >0
InnerNeutralLandClumps(u32),
/// Range: [0.0, 1.0]
InnerNeutralLandChaos(f32),
/// Range: [0.0, 1.0]
InnerNeutralTreePercentage(f32),
/// Range: [0.0, 1.0]
InnerNeutralPercentFlat(f32),
/// Range: [0.0, 1.0]
InnerNeutralPercentLand(f32),
/// Range: >=0
NumInnerNeutrals(u32),
/// Range: [0.0, 1.0]
NeutralInnerRadius(f32),
// OUTER NEUTRAL ZONE ATTRIBUTES
/// Range: >0
OuterNeutralFlatClumps(u32),
/// Range: [0.0, 1.0]
OuterNeutralFlatChaos(f32),
/// Range: >0
OuterNeutralLandClumps(u32),
/// Range: [0.0, 1.0]
OuterNeutralLandChaos(f32),
/// Range: [0.0, 1.0]
OuterNeutralTreePercentage(f32),
/// Range: [0.0, 1.0]
OuterNeutralPercentFlat(f32),
/// Range: [0.0, 1.0]
OuterNeutralPercentLand(f32),
/// Range: >=0
NumOuterNeutrals(u32),
/// Range: [0.0, 1.0]
NeutralOuterRadius(f32),
// PLAYER ZONE ATTRIBUTES
/// Range: >0
PlayerLandClumps(u32),
/// Range: [0.0, 1.0]
PlayerLandChaos(f32),
/// Range: >0
PlayerFlatClumps(u32),
/// Range: [0.0, 1.0]
PlayerFlatChaos(f32),
/// Range: [0.0, 1.0]
PlayerTreePercentage(f32),
/// Range: [0.0, 1.0]
PlayerPercentFlat(f32),
/// Range: [0.0, 1.0]
PlayerOuterRadius(f32),
/// Range: [0.0, 1.0]
PlayerInnerRadius(f32),
/// Range: 0.0 < angle <= 180.0
MaxAngleBetweenTeamMembers(f32),
// MISC ATTRIBUTES
/// Range: >=0.0
LandfillPercentage(f32),
/// Range: <true, false>
TeamGrowth(bool),
/// Range: [0.0, 1.0]
CoastalToDeeperWaterPercentage(f32),
/// Range: >=0
RiverWidth(u32),
/// Range: >=0
WaterBorder(u32),
/// Range: [-10, 20]
LandElevationThreshold(i32),
/// Range: [0.0, 1.0]
PercentLand(f32),
/// Range: >=0.0
HeightMapSmoothness(f32),
/// Range: TODO
HeightMapChaos(f32),
/// Range: TODO
ElevationScale(f32),
/// The elevation used for 'flat' locations.
/// Range: [-10, 20]
FlatElevation(i32),
/// Initial integer elevation for the heightmap generator.
/// Range: [-10, 20]
InitialElevation(i32),
/// Maximum integer elevation for the heightmap generator.
/// Range: [-10, 20]
MinIntElevation(i32),
/// Minimum integer elevation for the heightmap generator.
/// Range: [-10, 20]
MaxIntElevation(i32)
}
pub enum InstructionType {
MapCharacteristics,
MinimumStartPositionToMapEdge,
InnerPushFromMapCenter,
OuterPushFromMapCenter,
AvailableAnimals,
GenerateShallows,
MaxShallowConnectionsPerPlayer,
ShallowsWidth,
ShallowsElevation,
StringTableId,
UseMapGenerator,
PlaceWorldUnitInRing,
PlaceUnitInRing,
PlaceWorldUnit,
PlaceWall,
/// Places a unit for the current player, offset from thier center.
PlaceUnit,
/// Specifies alternative terrains for height ranges.
RandomMapTerrainRange,
/// Links a TerrainHandle to a TerrainRef.
DeclareRandomMapTerrain,
/// Defines the cliff texture used to paint cliffs.
CliffTexture,
TerrainChaos,
/// Defines a region in percentage for the terrain to be generated.
TerrainRegion,
TestingLandDistribution,
FilterHeightMap,
MaxIterationsClumpGrowth,
MaxLoopCount,
ConvergentThreshold,
ConvergentSampleSize,
RandomHerdPerNeutral,
RandomHerdPerPlayer,
HerdPerNeutral,
HerdPerPlayer,
DefineRandomHerdSet,
DefineHerd,
PlaceResourceInRing,
ResourceTerrainTexture,
ResourceSeperation,
ResourcePlacementLimit,
MaxTreeElevation,
MaxResourceElevation,
ResourcePerNeutralLand,
ResourcePerPlayer,
AvailableForests,
DefineForest,
MaximumTreesPerClump,
MaxTreeLoopCount,
ResourceToWaterDistance,
ResourceToEdgeDistance,
MaxClumpsPerForest,
ForestChaosLevel,
ForestsPerPlayer,
ForestFreeRadius,
InnerNeutralFlatClumps,
InnerNeutralFlatChaos,
InnerNeutralLandClumps,
InnerNeutralLandChaos,
InnerNeutralTreePercentage,
InnerNeutralPercentFlat,
InnerNeutralPercentLand,
NumInnerNeutrals,
OuterNeutralFlatClumps,
OuterNeutralFlatChaos,
OuterNeutralLandClumps,
OuterNeutralLandChaos,
OuterNeutralTreePercentage,
OuterNeutralPercentFlat,
OuterNeutralPercentLand,
NumOuterNeutrals,
NeutralOuterRadius,
NeutralInnerRadius,
MaxAngleBetweenTeamMembers,
PlayerLandClumps,
PlayerLandChaos,
PlayerFlatClumps,
PlayerFlatChaos,
PlayerTreePercentage,
PlayerPercentFlat,
PlayerOuterRadius,
PlayerInnerRadius,
LandfillPercentage,
TeamGrowth,
CoastalToDeeperWaterPercentage,
RiverWidth,
WaterBorder,
LandElevationThreshold,//number..
PercentLand,
HeightMapSmoothness,
HeightMapChaos,
ElevationScale,
FlatElevation,
/// Initial integer elevation.
InitialElevation,
/// Maximum integer elevation.
MinIntElevation,
/// Minimum integer elevation.
MaxIntElevation
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment