source: abuse/trunk/src/light.h @ 489

Last change on this file since 489 was 481, checked in by Sam Hocevar, 10 years ago

Fuck the history, I'm renaming all .hpp files to .h for my own sanity.

  • Property svn:keywords set to Id
File size: 2.5 KB
Line 
1/*
2 *  Abuse - dark 2D side-scrolling platform game
3 *  Copyright (c) 1995 Crack dot Com
4 *
5 *  This software was released into the Public Domain. As with most public
6 *  domain software, no warranty is made or implied by Crack dot Com or
7 *  Jonathan Clark.
8 */
9
10#ifndef LIGHT_HPP
11#define LIGHT_HPP
12
13#include "image.h"
14#include "palette.h"
15#include "configuration.h"
16#include "crc.h"
17
18#define TTINTS 9
19extern uint8_t *tints[TTINTS];
20extern uint8_t *white_light,*white_light_initial,*green_light,*trans_table;
21extern int16_t ambient_ramp;
22#define REVERSE_GREEN_TINT 8
23
24extern int16_t shutdown_lighting_value,shutdown_lighting;
25
26class light_source
27{
28  public :
29  int32_t type,x,xshift,y,yshift;
30  int32_t outer_radius,mul_div,inner_radius;
31
32  int32_t x1,y1,x2,y2;
33  char known;
34  light_source *next;
35
36  void calc_range();
37  light_source(char Type, int32_t X, int32_t Y, int32_t Inner_radius, int32_t Outer_radius,
38           int32_t Xshift, int32_t Yshift,
39           light_source *Next);
40  light_source *copy();
41} ;
42
43class light_patch
44{
45  public :
46  int32_t total,x1,y1,x2,y2;
47  light_source **lights;
48  light_patch *next;
49  light_patch(int32_t X1, int32_t Y1, int32_t X2, int32_t Y2, light_patch *Next)
50  {
51    x1=X1; y1=Y1; x2=X2; y2=Y2;
52    next=Next;
53    total=0;
54    lights=NULL;
55  }
56  void add_light(int32_t X1, int32_t Y1, int32_t X2, int32_t Y2, light_source *who);
57  light_patch *copy(light_patch *Next);
58  ~light_patch() { if (total) free(lights); }
59} ;
60
61void delete_all_lights();
62void delete_light(light_source *which);
63light_source *add_light_source(char type, int32_t x, int32_t y,
64                   int32_t inner, int32_t outer, int32_t xshift, int32_t yshift);
65
66void add_light_spec(spec_directory *sd, char const *level_name);
67void write_lights(bFILE *fp);
68void read_lights(spec_directory *sd, bFILE *fp, char const *level_name);
69
70
71void delete_patch_list(light_patch *first);
72light_patch *find_patch(int screenx, int screeny, light_patch *list);
73int calc_light_value(int32_t x, int32_t y, light_patch *which);           
74void light_screen(image *sc, int32_t screenx, int32_t screeny, uint8_t *light_lookup, uint16_t ambient);
75void double_light_screen(image *sc, int32_t screenx, int32_t screeny, uint8_t *light_lookup, uint16_t ambient,
76             image *out, int32_t out_x, int32_t out_y);
77
78void calc_light_table(palette *pal);
79extern light_source *first_light_source;
80extern int light_detail;
81
82extern int32_t light_to_number(light_source *l);
83extern light_source *number_to_light(int32_t x);
84
85#endif
Note: See TracBrowser for help on using the repository browser.