summaryrefslogblamecommitdiffstats
path: root/crawl-ref/source/tiles.h
blob: d50482a6736854e3e631c73d3dcffbf17d8bbb75 (plain) (tree)
1
2
3
4
5
6
7
8
9
10


                                                         

   


               

               
                            
 
                 
                 
                 
 


                            
                           

  








                                             


                                                                  
                                                               
                            

                                                               


                                                             
                            

                                                    

                                                                     
                                    
 
                      


                                                                 
                                                                              
                                                                   
                                                        
                                                     



                                              

                                                           









                                           

                                                                        
                                            
                                                   
                                                     
                                                        


                                     
                                                           
 
                         
                                  


                      





                                                                              
                                                                
                         
                                            
 

                                                            


                                              


                                           









                                                      
 

                                   
                   
                        
                                 

                                         
                                                 
                                           
 

                                    
                             


                       


                                      








                                      
 
                                                





                                      

                       









                                      






                                      

              
                                     
  
 

    







                                
  
 

    

                            
                                
  
 
                         






                           
                         




                
 





                                                                        
      
      
/*
 *  File:       tiles.h
 *  Created by: ennewalker on Sat Jan 5 01:33:53 2008 UTC
 */

#ifndef TILES_H
#define TILES_H

#ifdef USE_TILE

#include "tiledef_defines.h"

#include "beam.h"
#include "enum.h"
#include "show.h"

enum tag_version
{
    TILETAG_PRE_MCACHE = 71,
    TILETAG_CURRENT    = 72
};

struct demon_data
{
    demon_data() { head = body = wings = 0; }

    int head;
    int body;
    int wings;
};

//*tile1.cc: get data from core part and drives tile drawing codes

//**convert in-game data to tile index
int tileidx_feature(dungeon_feature_type feat, int gx, int gy);
int tileidx_player(int job);
void tileidx_unseen(unsigned int &fg, unsigned int &bg, int ch,
                    const coord_def& gc);
int tileidx_item(const item_def &item);
int tileidx_item_throw(const item_def &item, int dx, int dy);
int tileidx_bolt(const bolt &bolt);
int tileidx_zap(int colour);
int tile_idx_unseen_terrain(int x, int y, int what);
int tile_unseen_flag(const coord_def& gc);
int tileidx_monster_base(const monsters *mon, bool detected = false);
int tileidx_monster(const monsters *mon, bool detected = false);
int tileidx_spell(spell_type spell);

// Player tile related
int get_gender_from_tile(int parts[]);
int tilep_species_to_base_tile(int sp = you.species,
                               int level = you.experience_level);
void tilep_draconian_init(int sp, int level, int &base, int &head, int &wing);
void tilep_race_default(int sp, int gender, int level, int *parts);
void tilep_job_default(int job, int gender, int *parts);
void tilep_calc_flags(const int parts[], int flag[]);

void tilep_part_to_str(int number, char *buf);
int  tilep_str_to_part(char *str);

void tilep_scan_parts(char *fbuf, dolls_data &doll);
void tilep_print_parts(char *fbuf, const dolls_data &doll);

int tilep_equ_weapon(const item_def &item);
int tilep_equ_shield(const item_def &item);
int tilep_equ_armour(const item_def &item);
int tilep_equ_cloak(const item_def &item);
int tilep_equ_helm(const item_def &item);
int tilep_equ_gloves(const item_def &item);
int tilep_equ_boots(const item_def &item);

// Tile display related
void tile_place_monster(int gx, int gy, int idx, bool foreground = true,
                        bool detected = false);
void tile_place_item(int x, int y, int idx);
void tile_place_item_marker(int x, int y, int idx);
void tile_place_cloud(int x, int y, cloud_struct cl);
void tile_place_ray(const coord_def& gc, bool in_range);
void tile_draw_rays(bool resetCount);
void tile_clear_buf();

void tile_finish_dngn(unsigned int *tileb, int cx, int cy);

// Tile Inventory display
void tile_draw_inv(int flag = -1);
// Multiple pickup
void tile_pick_menu();

// Set the default type of walls and floors.
void tile_init_default_flavour();
// Get the default types of walls and floors
void tile_default_flv(level_area_type lev, branch_type br, tile_flavour &flv);
// Clear the per-cell wall and floor flavors.
void tile_clear_flavour();
// Initialise per-cell types of walls and floors using defaults.
void tile_init_flavour();
void tile_init_flavour(const coord_def &gc);

void tile_floor_halo(dungeon_feature_type target, int tile);

void tile_set_force_redraw_tiles(bool redraw);
void tile_set_force_redraw_inv(bool redraw);

tag_pref string2tag_pref(const char *opt);
const char *tag_pref2string(tag_pref pref);

/**************************************/
/* tile2.cc  image manipulation       */
/**************************************/
// init them all
void TileInit();

void TileResizeScreen(int x, int y);

// display tile cursor, returns old cursor value there
int TileDrawCursor(int x, int y, int flag);

void TileNewLevel(bool first_time);

// edit player tile
void init_player_doll();
void save_doll_file(FILE *dollf);

int item_unid_type(const item_def &item);
int tile_known_weapon_brand(const item_def item);
int tile_corpse_brand(const item_def item);

int get_clean_map_idx(int tile_idx);

// Flags for drawing routines
enum tile_flags
{
    // Foreground flags
    TILE_FLAG_S_UNDER    = 0x00000800,
    TILE_FLAG_FLYING     = 0x00001000,
    TILE_FLAG_PET        = 0x00002000,
    TILE_FLAG_GD_NEUTRAL = 0x00004000,
    TILE_FLAG_NEUTRAL    = 0x00008000,
    TILE_FLAG_STAB       = 0x00010000,
    TILE_FLAG_MAY_STAB   = 0x00020000,
    TILE_FLAG_NET        = 0x00040000,
    TILE_FLAG_POISON     = 0x00080000,
    TILE_FLAG_ANIM_WEP   = 0x00100000,
    TILE_FLAG_FLAME      = 0x00200000,
    TILE_FLAG_BERSERK    = 0x00400000,

    // MDAM has 5 possibilities, so uses 3 bits.
    TILE_FLAG_MDAM_MASK  = 0x03800000,
    TILE_FLAG_MDAM_LIGHT = 0x00800000,
    TILE_FLAG_MDAM_MOD   = 0x01000000,
    TILE_FLAG_MDAM_HEAVY = 0x01800000,
    TILE_FLAG_MDAM_SEV   = 0x02000000,
    TILE_FLAG_MDAM_ADEAD = 0x02800000,

    // Background flags
    TILE_FLAG_RAY        = 0x00000800,
    TILE_FLAG_MM_UNSEEN  = 0x00001000,
    TILE_FLAG_UNSEEN     = 0x00002000,
    TILE_FLAG_CURSOR1    = 0x00004000,
    TILE_FLAG_CURSOR2    = 0x00008000,
    TILE_FLAG_CURSOR3    = 0x0000C000,
    TILE_FLAG_CURSOR     = 0x0000C000,
    TILE_FLAG_BLOOD      = 0x00010000,
    TILE_FLAG_HALO       = 0x00020000,
    TILE_FLAG_NEW_STAIR  = 0x00040000,
    TILE_FLAG_WAS_SECRET = 0x00080000,
    TILE_FLAG_TRAV_EXCL  = 0x00100000,
    TILE_FLAG_EXCL_CTR   = 0x00200000,
    TILE_FLAG_SANCTUARY  = 0x00400000,
    TILE_FLAG_TUT_CURSOR = 0x00800000,
    TILE_FLAG_RAY_OOR    = 0x01000000,
    TILE_FLAG_OOR        = 0x02000000,

    // General
    TILE_FLAG_MASK       = 0x000007FF
};

enum
{
    TILEI_FLAG_SELECT  = 0x0100,
    TILEI_FLAG_TRIED   = 0x0200,
    TILEI_FLAG_EQUIP   = 0x0400,
    TILEI_FLAG_FLOOR   = 0x0800,
    TILEI_FLAG_CURSE   = 0x1000,
    TILEI_FLAG_CURSOR  = 0x2000,
    TILEI_FLAG_MELDED  = 0x4000,
    TILEI_FLAG_INVALID = 0x8000
};

enum
{
    TILEP_GENDER_FEMALE = 0,
    TILEP_GENDER_MALE   = 1,
    TILEP_SHOW_EQUIP    = 0x1000
};

enum tile_player_flag_cut
{
    TILEP_FLAG_HIDE,
    TILEP_FLAG_NORMAL,
    TILEP_FLAG_CUT_CENTAUR,
    TILEP_FLAG_CUT_NAGA
};

// normal tile size in px
enum
{
    TILE_X = 32,
    TILE_Y = 32
};

// Don't change this without also modifying the data save/load routines.
enum
{
    NUM_MAX_DOLLS = 10
};

#endif
#endif