< index < 7. File parser | ===================================== 7.1 The libtcod config file format ===================================== | > 7.2 Declaring the 'structures'

10.1.1 Comments
10.1.2 Structures

### Comments

Your file can contain single line or multi-line comments :

    // This is a single line comment
    /*
       This is a
       multi-line comment
    */

Multi-line comments can be nested :

    /*
       This is a
       multi-line comment containing another
       /*
           multi-line
           comment
       */
    */

The parser is not sensible to space characters, tabulations or carriage return except inside strings.

### Structures

The libtcod config file format is basically a list of structures. A structure has a type, an optional name and contains properties. The type of the structure defines which properties are allowed / mandatory.

    item_type "blade" {            // structure's type : 'item_type'. structure's name : 'blade'
    	cost=300                   // an integer property
    	weight=3.5                 // a float property
    	deal_damage=true           // a boolean property
    	damages="3d6+2"            // a dice property
    	color="#FF0000"            // a color property, using #RRGGBB syntax
    	damaged_color="128,96,96"  // another color property, using rrr,ggg,bbb syntax
    	damage_type="slash"        // a string property
    	description="This is a long"
    	            "description." // a multi-line string property
    	abstract                   // a flag (simplified boolean property)
            intList= [ 1,2,3 ]         // a list of int values
            floatList= [ 1.0,2,3.5 ]   // a list of float values
            stringList= [ "string1","string2","string3" ]         // a list of string values
    }

A structure can also contain other structures either of the same type, or structures of another type :

    item_type "blade" {
    	item_type "one-handed blades" {
    		// the item_type "blade" contains another item_type named "one-handed blades"
    	}
    	item_type "two-handed blades" {
    		// the item_type "blade" contains another item_type named "two-handed blades"
    	}
    	feature "damage" {
    		// the item_type "blade" contains another structure, type "feature", name "damage"
    	}
    }