From 19d1b75655ce27dda87d7d58b70b2e41e910c694 Mon Sep 17 00:00:00 2001 From: ARembo Date: Sat, 23 Jul 2011 19:21:05 +0300 Subject: [PATCH] rembo --- music.c | 211 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 211 insertions(+) create mode 100644 music.c diff --git a/music.c b/music.c new file mode 100644 index 0000000..748d3ca --- /dev/null +++ b/music.c @@ -0,0 +1,211 @@ +#include "glob.h" +#include "sound.h" +#include +#include + +short mus_vol = 50; + +Mix_Music * muslo; + +int hhhhh; + +char music_random = ON; +int music_time = 3; +int music_fade = 5; + +Uint32 muscount; + +int musdisabled = 1; + +void S_initmusic(void) +{ + if (!SDL_WasInit(SDL_INIT_AUDIO)) { + if (SDL_InitSubSystem(SDL_INIT_AUDIO) < 0) { + fprintf(stderr, "\nUnable to initialize audio: %s\n", SDL_GetError()); + musdisabled=1; + return; + } + + if (Mix_OpenAudio(22050, AUDIO_S16, 1, 1000) < 0) { + fprintf(stderr, "Error initializing SDL_mixer: %s\n", Mix_GetError()); + musdisabled=1; + return; + } + } + + muslo=NULL; + + muscount=0; + + musdisabled = (mus_vol==0); + + S_volumemusic(mus_vol); +} + +void S_donemusic(void) +{ + F_freemus(); + Mix_CloseAudio(); + SDL_QuitSubSystem(SDL_INIT_AUDIO); +} + +void S_startmusic(int time) +{ + if (musdisabled) return; + Mix_PlayMusic(muslo, -1); + Mix_VolumeMusic(mus_vol); + muscount=time*60*1000/DELAY; +} + +void S_stopmusic(void) +{ + if (musdisabled) return; + Mix_HaltMusic(); + muscount = 0; +} + +void S_volumemusic(int v) +{ + if (musdisabled) return; + mus_vol = v; + if (mus_vol>128) mus_vol=128; + if (mus_vol<0) mus_vol=0; + if (mus_vol==0 && Mix_PlayingMusic()) { + S_stopmusic(); + } + else if (mus_vol>0 && !Mix_PlayingMusic()) { + S_startmusic(music_time); + } + else { + Mix_VolumeMusic(v); + } +} + +struct { + Uint8 ascii; + Uint8 asciilc; + char *ch; +} atrans[] = { + {0x80, 0xA0, "A"},//А + {0x81, 0xA1, "B"},//Б + {0x82, 0xA2, "V"},//В + {0x83, 0xA3, "G"},//Г + {0x84, 0xA4, "D"},//Д + {0x85, 0xA5, "E"},//Е + {0x86, 0xA6, "ZH"},//Ж + {0x87, 0xA7, "Z"},//З + {0x88, 0xA8, "I"},//И + {0x89, 0xA9, "J"},//Й + {0x8A, 0xAA, "K"},//К + {0x8B, 0xAB, "L"},//Л + {0x8C, 0xAC, "M"},//М + {0x8D, 0xAD, "N"},//Н + {0x8E, 0xAE, "O"},//О + {0x8F, 0xAF, "P"},//П + {0x90, 0xE0, "R"},//Р + {0x91, 0xE1, "S"},//С + {0x92, 0xE2, "T"},//Т + {0x93, 0xE3, "U"},//У + {0x94, 0xE4, "F"},//Ф + {0x95, 0xE5, "H"},//Х + {0x96, 0xE6, "C"},//Ц + {0x97, 0xE7, "CH"},//Ч + {0x98, 0xE8, "SH"},//Ш + {0x99, 0xE9, "SCH"},//Щ + {0x9A, 0xEA, "X"},//Ъ + {0x9B, 0xEB, "Y"},//Ы + {0x9C, 0xEC, "J"},//Ь + {0x9D, 0xED, "E"},//Э + {0x9E, 0xEE, "JU"},//Ю + {0x9F, 0xEF, "JA"},//Я + {0} +}; + +char *get_trans_char (Uint8 c) +{ + int i = 0; + while (atrans[i].ascii) { + + if (atrans[i].ascii == c || atrans[i].asciilc == c) { + return atrans[i].ch; + } + i++; + } + return NULL; +} + +void trans_ascii_str (char *dest, char *src) +{ + char *p = dest; + int i; + for (i=0; i0) { + if (muscount < music_fade*1100/DELAY) { + Mix_FadeOutMusic(music_fade*1000); + } + muscount--; + if (muscount==0) { + if (music_random) F_randmus(g_music); + else F_nextmus(g_music); + F_freemus(); + F_loadmus(g_music); + S_startmusic(music_time); + } + } +} -- 2.29.2