diff --git a/data/data/Inventory.text b/data/data/Inventory.text index 32340c28..dcc1337d 100644 --- a/data/data/Inventory.text +++ b/data/data/Inventory.text @@ -2196,7 +2196,7 @@ Registered signs of spectator elation: 22 cases of falling off the stands, 45 ca [Final 2] "СМЕНА 83.12.99 00:01:83 Бокс №13 - Линия 17 - Стенд EE-7855/3420.bis. -Задача U/VNG-3/8. Объект 442.090. Серия KD/CHSKRN+. +Задача U/VNG-3/8-M4D. Объект 442.090. Серия KD/CHSKRN+. Системное сообщение. Событие: код X-01. Аварийное завершение задачи. Категория 'Счастливчик'.\\ Данные на мастер-консоли: нулевой уровень выходных сигналов, блокирование контуров обратной связи, Z-триггер в режиме авторезонанса, обнуление буферных модулей. @@ -2206,7 +2206,7 @@ Registered signs of spectator elation: 22 cases of falling off the stands, 45 ca Коды выявленных ошибок: 000, 001, 002, 003, 004, 023, 08338, 0293939." "SHIFT 83.12.99 00:01:83 Section N13 - Line 17 - Stand EE-7855/3420.bis. -Task U/VNG-3/8. Object 442.090. Serial KD/CHSKRN+. +Task U/VNG-3/8-M4D. Object 442.090. Serial KD/CHSKRN+. System message. Event: code X-01. Abnormal termination. Category 'Lucky Fluke.'\\ Data from master console: zero level for output signals, feedback circuit blocked, Z-trigger in auto-resonance mode, buffer modules cleared. @@ -2249,13 +2249,13 @@ Human, your vanger has begun moving independently. It has made the transition, a Инф-Реанимация Очнувшихся> Справка. Инф-Контроль Событий. Блок подглядывания за всеми явлениями. Инф-Реанимация Очнувшихся> Справка. Инф-Реанимация Очнувшихся. Блок разъяснения терминов для проскальзывающих Монад. Инф-Реанимация Очнувшихся> Справка. Монада. Присутствует. Детализация термина отложена.\\ -Инф-Стабилизатор Реальности> Статус. Вселенная Униванг-3/8 функционирует нормально. Протяженный слепок устойчив. Свободный резерв Монад в норме. Мощность выброса прошедших тестирование в зоне допустимого. Процент брака составляет запланированную величину, отклонения незначительны. +Инф-Стабилизатор Реальности> Статус. Вселенная Униванг-3/8 модификации M4D функционирует нормально. Протяженный слепок устойчив. Свободный резерв Монад в норме. Мощность выброса прошедших тестирование в зоне допустимого. Процент брака составляет запланированную величину, отклонения незначительны. Инф-Реанимация Очнувшихся> Справка. Инф-Стабилизатор Реальности. Блок осуществления малых производственных вселенных.\\ Инф-Контроль Событий> Обзор закончен. Монада была подвергнута тестированию на наличие разума второго порядка по схеме 'Человек-Вангер'. Декодирование результатов. -Инф-Реанимация Очнувшихся> Справка. Схема 'Человек-Вангер'. Цепная проверка новых Монад погружением в малую вселенную класса KxD, идентификатор U/VNG-3/8.\\ +Инф-Реанимация Очнувшихся> Справка. Схема 'Человек-Вангер'. Цепная проверка новых Монад погружением в малую вселенную класса KxD, идентификатор U/VNG-3/8-M4D.\\ Инф-Контроль Событий> Уровень восприятия обрабатываемой Монады нулевой. Перегрузка категорий не завершена. Требуется вмешательство. Инф-Реанимация Очнувшихся> Профилактика в остаточных терминах. Человек, ты не существуешь. Тестирование твоей структуры на целостность разума и прочность воли успешно закончено. Твоя Монада была полностью погружена в малую вселенную для анализа самостоятельного поведения в рамках конкретной вложенной реальности. Тип загруженной памяти: Земной Человек - протософти, предшествующий появлению Коридоров. Усложненный вариант: компьютерный игрок. Сценарий: двойное погружение в схематичное субпространство вангеров, отображающее позднюю стадию данной малой вселенной.\\ -Инф-Стабилизатор Реальности> Статус. Регулярная чистка Вселенной Униванг-3/8 завершена. Статистические данные. Уровень локальных ошибок в норме. Обнаружена устойчивая аномалия в зарезервированном слое реальности. Повторная проверка. Ошибка не найдена. +Инф-Стабилизатор Реальности> Статус. Регулярная чистка Вселенной Униванг-3/8 модификации M4D завершена. Статистические данные. Уровень локальных ошибок в норме. Обнаружена устойчивая аномалия в зарезервированном слое реальности. Повторная проверка. Ошибка не найдена. Инф-Реанимация Очнувшихся> Справка. Чистка малой реальности. Контроль протяженного слепка на внутренние нарушения. В остаточных терминах: устранение чудес и явлений, выходящих за рамки моделируемого бытия.\\ Инф-Контроль Событий> Анализ поведения выброшенной Монады завершен. Результат положительный. Волевые характеристики Монады и ее способность принимать решения удовлетворяют пропускной таблице. Инф-Реанимация Очнувшихся> Профилактика в остаточных терминах. Все Монады, будучи вангерами выполнившие требования компоненты вселенной Карман, удовлетворяют требованиям конвейера. Остальные выпавшие Монады немедленно уничтожаются как бракованные.\\ @@ -2269,13 +2269,13 @@ Human, your vanger has begun moving independently. It has made the transition, a Inf-Resuscitation of the Exposed> Info. Inf-Event Control. Block for Observing Everything. Inf-Resuscitation of the Exposed> Info. Inf-Resuscitation of the Exposed. Block for explaining the terms for the sliding-by Monads. Inf-Resuscitation of the Exposed> Info. Monad. Present. Circumstantiation of the term postponed.\\ -Inf-Reality Stabilizer> Status. Universe UniVang-3/8 online. Extended snapshot stable. Monad reserve normal. Outflow of the tested units normal. Spoilage rate within allowance, deviation insignificant. +Inf-Reality Stabilizer> Status. Universe UniVang-3/8-M4D online. Extended snapshot stable. Monad reserve normal. Outflow of the tested units normal. Spoilage rate within allowance, deviation insignificant. Inf-Resuscitation of the Exposed> Info. Inf-Reality Stabilizer. Block for implementation of small utility universes.\\ Inf-Event Control> Analysis complete. The Monad has been tested for second-order mind in accordance with 'Human Vanger.' Decoding results. -Inf-Resuscitation of the Exposed> Info. 'Human Vanger.' Serial test of incoming Monads by submerging into class KxD small universe, ID U/VNG-3/8.\\ +Inf-Resuscitation of the Exposed> Info. 'Human Vanger.' Serial test of incoming Monads by submerging into class KxD small universe, ID U/VNG-3/8-M4D.\\ Inf-Event Control> Sensory level of the Monad being processed is zero. Category overloading not complete. Interference required. Inf-Resuscitation of the Exposed> Information in residual terms. Human, you do not exist. Testing your structure for mind integrity and strength of will was completed successfully. Your Monad was submerged into a small universe for analysis of autonomous behavior in a specific nested reality. Type of loaded memory: Human of Earth - proto-Softie, from the time before Passages. Advanced features: computer gamer. Scenario: double submerging into the schematic subspace of vangers reflecting the late stage of this small universe.\\ -Inf-Reality Stabilizer> Status. Routine purge of the universe UniVang-3/8 complete. Summary: Level of local errors normal. Persistent anomaly detected in the reserved layer of reality. Secondary check-up. Error not found. +Inf-Reality Stabilizer> Status. Routine purge of the universe UniVang-3/8-M4D complete. Summary: Level of local errors normal. Persistent anomaly detected in the reserved layer of reality. Secondary check-up. Error not found. Inf-Resuscitation of the Exposed> Info. Purging the small reality. Checking consistency of extended snapshot. In residual terms: eliminating enigmas and phenomena exceeding the limitations of the simulated being.\\ Inf-Event Control> Analysis of the exposed Monad complete. Result positive. Volitional characteristics of the Monad and its decision-making capabilities satisfy the standard. Inf-Resuscitation of the Exposed> Information in residual terms. All Monads that fulfilled the requirements of the resident unit Carmane in their vanger stage satisfy the pipeline entry requirements. The rest of Monads are immediately destroyed as spoilage.\\ @@ -2306,20 +2306,20 @@ Infernal Distribution of Raw Material> Off..." Инф-Реанимация Очнувшихся> Справка. Инф-Контроль Событий. Блок подглядывания за всеми явлениями. Инф-Реанимация Очнувшихся> Справка. Инф-Реанимация Очнувшихся. Блок разъяснения терминов для проскальзывающих Монад. Инф-Реанимация Очнувшихся> Справка. Монада. Присутствует. Детализация термина отложена.\\ -Инф-Стабилизатор Реальности> Статус. Вселенная Униванг-3/8 функционирует нормально. Протяженный слепок устойчив. Свободный резерв Монад в норме. Мощность выброса прошедших тестирование в зоне допустимого. Процент брака составляет запланированную величину, отклонения незначительны. +Инф-Стабилизатор Реальности> Статус. Вселенная Униванг-3/8 модификации M4D функционирует нормально. Протяженный слепок устойчив. Свободный резерв Монад в норме. Мощность выброса прошедших тестирование в зоне допустимого. Процент брака составляет запланированную величину, отклонения незначительны. Инф-Реанимация Очнувшихся> Справка. Инф-Стабилизатор Реальности. Блок осуществления малых производственных вселенных.\\ Инф-Контроль Событий> Обзор закончен. Монада была подвергнута тестированию на наличие разума второго порядка по схеме 'Человек-Вангер'. Декодирование результатов. -Инф-Реанимация Очнувшихся> Справка. Схема 'Человек-Вангер'. Цепная проверка новых Монад погружением в малую вселенную класса KxD, идентификатор U/VNG-3/8.\\ +Инф-Реанимация Очнувшихся> Справка. Схема 'Человек-Вангер'. Цепная проверка новых Монад погружением в малую вселенную класса KxD, идентификатор U/VNG-3/8-M4D.\\ Инф-Контроль Событий> Уровень восприятия обрабатываемой Монады нулевой. Перегрузка категорий не завершена. Требуется вмешательство. Инф-Реанимация Очнувшихся> Профилактика в остаточных терминах. Человек, ты не существуешь. Тестирование твоей структуры на целостность разума и прочность воли успешно закончено. Твоя Монада была полностью погружена в малую вселенную для анализа самостоятельного поведения в рамках конкретной вложенной реальности. Тип загруженной памяти: Земной Человек - протософти, предшествующий появлению Коридоров. Усложненный вариант: компьютерный игрок. Сценарий: двойное погружение в схематичное субпространство вангеров, отображающее позднюю стадию данной малой вселенной.\\ -Инф-Стабилизатор Реальности> Статус. Регулярная чистка Вселенной Униванг-3/8 завершена. Статистические данные. Уровень локальных ошибок в норме. Обнаружена устойчивая аномалия в зарезервированном слое реальности. Повторная проверка. Ошибка не найдена. +Инф-Стабилизатор Реальности> Статус. Регулярная чистка Вселенной Униванг-3/8 модификации M4D завершена. Статистические данные. Уровень локальных ошибок в норме. Обнаружена устойчивая аномалия в зарезервированном слое реальности. Повторная проверка. Ошибка не найдена. Инф-Реанимация Очнувшихся> Справка. Чистка малой реальности. Контроль протяженного слепка на внутренние нарушения. В остаточных терминах: устранение чудес и явлений, выходящих за рамки моделируемого бытия.\\ Инф-Контроль Событий> Анализ поведения выброшенной Монады завершен. Результат положительный. Волевые характеристики Монады и ее способность принимать решения удовлетворяют пропускной таблице. Инф-Реанимация Очнувшихся> Профилактика в остаточных терминах. Все Монады, будучи вангерами выполнившие требования компоненты вселенной Карман, удовлетворяют требованиям конвейера. Остальные выпавшие Монады немедленно уничтожаются как бракованные.\\ Инф-Распределитель Материала> Протестированная на наличие разума второго порядка Монада поступает в хранилище зарезервированных автономных единиц воли. Инф-Реанимация Очнувшихся> Справка. Инф-Распределитель Результатов. Блок фильтрации Монад. Второй уровень разума позволяет Монаде функционировать на параллельных постах свободы.\\ -Инф-Стабилизатор Реальности> ВНИМАНИЕ! Экстренное прерывание. В Униванге-3/8 обнаружены нарушения высшего класса. Внеочередная чистка реальности не устранила аномалию. В стерильной ТРЛ-зоне наблюдаются устойчивые признаки гипотетической Третьей воли. Согласно инструкции о Возможности Возникновения Аналогичного Разума, слепок вселенной законсервирован.\\ +Инф-Стабилизатор Реальности> ВНИМАНИЕ! Экстренное прерывание. В Униванге-3/8 модификации M4D обнаружены нарушения высшего класса. Внеочередная чистка реальности не устранила аномалию. В стерильной ТРЛ-зоне наблюдаются устойчивые признаки гипотетической Третьей воли. Согласно инструкции о Возможности Возникновения Аналогичного Разума, слепок вселенной законсервирован.\\ Инф-Контроль Событий> Зарегистрирован сигнал категории А: 'Наблюдатели хотят говорить с вами'. Смысл сигнала выходит за рамки блока интерпретации конвейера. Тестирование Монад приостановлено. Инф-Распределитель Материала> Согласно инструкциям, все Монады, прошедшие тестирование в аномальной вселенной, направлены в Экспертизу как возможные носители Феномена.\\ Инф-Реанимация Очнувшихся> Инструкция по эксплуатации малых производственных вселенных. Существует бесконечно малая вероятность возникновения Разума во вложенных реальностях. Любые случаи обнаружения нарушений высшего класса, не поддающиеся чистке, должны вести к тщательному анализу ситуации Экспертами. Создатели конвейера Монад допускают возможность возникновения Третьей Воли...\\ @@ -2345,19 +2345,19 @@ Inf-Event Control> Activating advanced Monad. Analyzing. Inf-Resuscitation of the Exposed> Info. Inf-Event Control. Block for Observing Everything. Inf-Resuscitation of the Exposed> Info. Inf-Resuscitation of the Exposed. Block for explaining the terms for the sliding-by Monads. Inf-Resuscitation of the Exposed> Info. Monad. Present. Circumstantiation of the term postponed.\\ -Inf-Reality Stabilizer> Status. Universe UniVang-3/8 online. Extended snapshot stable. Monad reserve normal. Outflow of the tested units normal. Spoilage rate within allowance, deviation insignificant. +Inf-Reality Stabilizer> Status. Universe UniVang-3/8-M4D online. Extended snapshot stable. Monad reserve normal. Outflow of the tested units normal. Spoilage rate within allowance, deviation insignificant. Inf-Resuscitation of the Exposed> Info. Inf-Reality Stabilizer. Block for implementation of small utility universes.\\ Inf-Event Control> Analysis complete. The Monad has been tested for second-order mind in accordance with 'Human Vanger.' Decoding results. -Inf-Resuscitation of the Exposed> Info. 'Human Vanger.' Serial test of incoming Monads by submerging into class KxD small universe, ID U/VNG-3/8.\\ +Inf-Resuscitation of the Exposed> Info. 'Human Vanger.' Serial test of incoming Monads by submerging into class KxD small universe, ID U/VNG-3/8-M4D.\\ Inf-Event Control> Sensory level of the Monad being processed is zero. Category overloading not complete. Interference required. Inf-Resuscitation of the Exposed> Information in residual terms. Human, you do not exist. Testing your structure for mind integrity and strength of will completed successfully. Your Monad was submerged into a small universe for analysis of autonomous behavior in a specific nested reality. Type of loaded memory: Human of Earth - proto-Softie from the time before Passages. Advanced features: computer gamer. Scenario: double submerging into the schematic subspace of vangers reflecting the late stage of this small universe.\\ -Inf-Reality Stabilizer> Status. Routine purge of the universe UniVang-3/8 complete. Summary: Level of local errors normal. A persistent anomaly detected in the reserved layer of reality. Secondary check-up. The error not found. +Inf-Reality Stabilizer> Status. Routine purge of the universe UniVang-3/8-M4D complete. Summary: Level of local errors normal. A persistent anomaly detected in the reserved layer of reality. Secondary check-up. The error not found. Inf-Resuscitation of the Exposed> Info. Purging the small reality. Checking consistency of extended snapshot. In residual terms: eliminating enigmas and phenomena exceeding the limitations of the simulated being.\\ Inf-Event Control> Analysis of the exposed Monad complete. Result positive. Volitional characteristics of the Monad and its decision-making capabilities satisfy the standard. Inf-Resuscitation of the Exposed> Information in residual terms. All Monads that fulfilled the requirements of the resident unit Carmane in their vanger stage, satisfy the pipeline entry requirements. The rest of Monads are immediately destroyed as spoilage.\\ Inf-Distribution of Raw Material> The Monad tested for presence of the mind of second order and is forwarded to the reserve storage of autonomous volition units. Inf-Resuscitation of the Exposed> Info. Inf-Distribution of Raw Material. Monad filter. Second order of mind allows the Monad to function on parallel posts of freedom.\\ -Inf-Reality Stabilizer> CAUTION! Emergency interrupt. Disturbances of the highest class of severity detected in UniVang-3/8. Emergency purge of the reality did not eliminate the anomaly. Persistent indications of the hypothetical Third Will are observed in the sterile TRL-zone. According to the instruction 'About the Possibility of the Emergence of Analogous Reason' a snapshot of the reality has been saved.\\ +Inf-Reality Stabilizer> CAUTION! Emergency interrupt. Disturbances of the highest class of severity detected in UniVang-3/8-M4D. Emergency purge of the reality did not eliminate the anomaly. Persistent indications of the hypothetical Third Will are observed in the sterile TRL-zone. According to the instruction 'About the Possibility of the Emergence of Analogous Reason' a snapshot of the reality has been saved.\\ Inf-Event Control> Signal of category 'A' registered: 'The Spectors want to talk to you'. The semantics of the signal are beyond the scope of the parsing unit of the pipeline. Monad testing is suspended. Inf-Distribution of Raw Material> According to the instructions, all Monads tested in a universe with a discovered anomaly are forwarded to the Experts as potential carriers of the Phenomenon.\\ Inf-Resuscitation of the Exposed> Operating instructions for small utility universes. There is an infinitesimal probability of an emergence of Reason in nested realities. Any cases of anomalies of the highest class of severity being discovered that are not eliminated by an emergency purge must be subjected to detailed analysis by the Experts. The creators of the Monad pipeline assume the possibility of the emergence of the Third Will...\\ diff --git a/data/data/Threall.text b/data/data/Threall.text index 3b3c281d..5ef1f33f 100644 --- a/data/data/Threall.text +++ b/data/data/Threall.text @@ -17,7 +17,7 @@ "Мы хотим помочь. Мы помогаем всем Разумным. " "Ваш мир постигла ужасная катастрофа. Разум умирает. Мы хотим спасти твой мир. " "МЫ - Разумные добрые существа из другого мира. Мы не можем к вам прийти сами - мы Другие. " -"Но мы знаем, что нужно сделать для сохранения Разума Униванга-3/8. Ты можешь спасти свой мир. " +"Но мы знаем, что нужно сделать для сохранения Разума Униванга-3/8 модификации M4D. Ты можешь спасти свой мир. " "Мы изучаем умирающие миры и лечим их с помощью самих жителей. Каждый мир - сокровище. " "Мы изучили и твой мир. Ситуация критическая. " "Те, кто не двигается и живет под землей, скоро умрут. Их трудно спасти. Но ты можешь это сделать. " diff --git a/data/diagen.text b/data/diagen.text index 083d8071..19cbdd58 100644 Binary files a/data/diagen.text and b/data/diagen.text differ diff --git a/data/diagen_eng.text b/data/diagen_eng.text index 23f446d4..97c6f54f 100644 Binary files a/data/diagen_eng.text and b/data/diagen_eng.text differ diff --git a/data/iscreen/scripts/cr3.inc b/data/iscreen/scripts/cr3.inc index 8ba10fa0..c16d92e2 100644 --- a/data/iscreen/scripts/cr3.inc +++ b/data/iscreen/scripts/cr3.inc @@ -1,91 +1,91 @@ - -Screen "Credits5" -{ - screen_offs 0 - - block_global_obj - default_obj "Back Option" - - Object "Credits Text"{ - null_level 200 - align_x center - y 110 - space 2 - - font 0 - s_text $iSTR_CreditsPathF - } - - Object "Back Option" - { - align_x right - align_x_offs 30 - y 30 - - Element STRING { - align_x center - - terrain_num $TERRAIN2 - - font 3 - space 2 - null_level $DEFAULT_NULL - string $iSTR_BACK - } - Event { - key $VK_LBUTTON - key $VK_ESCAPE - - time { $PRESS_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } - EvComm { - low_obj "Back Option" - time $PRESS_OBJ_TIME - start_time 0 - } - EvComm { - move2screen "Credits screen" - start_time $PRESS_OBJ_TIME - time $MOVE2SCREEN_TIME - } - } - Event { - key $VK_RBUTTON - - time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } - EvComm { - smooth_obj "Back Option" 2 - start_time 0 - time $SMOOTH_OBJ_TIME - } - EvComm { - hide_obj "Back Option" - start_time $SMOOTH_OBJ_TIME - time $HIDE_OBJ_TIME - } - EvComm { - move2screen "Credits screen" - start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } - time $MOVE2SCREEN_TIME - } - } - } - #define LOGO_OBJ_ID "Logo1" - Object "Logo1" { - align_x center - y 10 - - Element BITMAP { - align_x center - align_y center - - terrain_num $TERRAIN4 - - bmp_null_level 148 - null_level 128 - - bmp_file "resource/iscreen/bitmap/community.bmp" - } - $LOGO_EV - } -} - + +Screen "Credits5" +{ + screen_offs 0 + + block_global_obj + default_obj "Back Option" + + Object "Credits Text"{ + null_level 200 + align_x center + y 110 + space 2 + + font 0 + s_text $iSTR_CreditsPathF + } + + Object "Back Option" + { + align_x right + align_x_offs 30 + y 30 + + Element STRING { + align_x center + + terrain_num $TERRAIN2 + + font 3 + space 2 + null_level $DEFAULT_NULL + string $iSTR_BACK + } + Event { + key $VK_LBUTTON + key $VK_ESCAPE + + time { $PRESS_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } + EvComm { + low_obj "Back Option" + time $PRESS_OBJ_TIME + start_time 0 + } + EvComm { + move2screen "Credits screen" + start_time $PRESS_OBJ_TIME + time $MOVE2SCREEN_TIME + } + } + Event { + key $VK_RBUTTON + + time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } + EvComm { + smooth_obj "Back Option" 2 + start_time 0 + time $SMOOTH_OBJ_TIME + } + EvComm { + hide_obj "Back Option" + start_time $SMOOTH_OBJ_TIME + time $HIDE_OBJ_TIME + } + EvComm { + move2screen "Credits screen" + start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } + time $MOVE2SCREEN_TIME + } + } + } + #define LOGO_OBJ_ID "Logo1" + Object "Logo1" { + align_x center + y 10 + + Element BITMAP { + align_x center + align_y center + + terrain_num $TERRAIN4 + + bmp_null_level 148 + null_level 128 + + bmp_file "resource/iscreen/bitmap/community.bmp" + } + $LOGO_EV + } +} + diff --git a/data/iscreen/scripts/cr4.inc b/data/iscreen/scripts/cr4.inc index 4fede1fb..da576f81 100644 --- a/data/iscreen/scripts/cr4.inc +++ b/data/iscreen/scripts/cr4.inc @@ -1,369 +1,369 @@ - -#define Credits6_More_Option_PosX 330 -#define Credits6_More_Option_PosY 280 -#define Credits6_Back_Option_PosX -330 -#define Credits6_Back_Option_PosY 280 - -Screen "Credits6" -{ - screen_offs 0 - - block_global_obj - default_obj "Back Option" - - Object "Credits Text"{ - null_level 200 - align_x center - y 20 - - space 2 - - font 0 - s_text $iSTR_CreditsPathG - } - - Object "Back Option" - { - align_x center - align_x_offs $Credits6_Back_Option_PosX - y $Credits6_Back_Option_PosY - - Element STRING { - align_x center - - terrain_num $TERRAIN2 - - font 3 - space 2 - null_level $DEFAULT_NULL - string $iSTR_BACK - } - Event { - key $VK_LBUTTON - key $VK_ESCAPE - - time { $PRESS_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } - EvComm { - low_obj "Back Option" - time $PRESS_OBJ_TIME - start_time 0 - } - EvComm { - move2screen "Credits screen" - start_time $PRESS_OBJ_TIME - time $MOVE2SCREEN_TIME - } - } - Event { - key $VK_RBUTTON - - time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } - EvComm { - smooth_obj "Back Option" 2 - start_time 0 - time $SMOOTH_OBJ_TIME - } - EvComm { - hide_obj "Back Option" - start_time $SMOOTH_OBJ_TIME - time $HIDE_OBJ_TIME - } - EvComm { - move2screen "Credits screen" - start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } - time $MOVE2SCREEN_TIME - } - } - } - Object "More Option" - { - align_x center - align_x_offs $Credits6_More_Option_PosX - y $Credits6_More_Option_PosY - - Element STRING { - align_x center - - terrain_num $TERRAIN2 - - font 3 - space 2 - null_level $DEFAULT_NULL - string $iSTR_MORE - } - Event { - key $VK_LBUTTON - - time { $PRESS_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } - EvComm { - low_obj "More Option" - time $PRESS_OBJ_TIME - start_time 0 - } - EvComm { - move2screen "Credits7" - start_time $PRESS_OBJ_TIME - time $MOVE2SCREEN_TIME - } - } - Event { - key $VK_RBUTTON - - time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } - EvComm { - smooth_obj "More Option" 2 - start_time 0 - time $SMOOTH_OBJ_TIME - } - EvComm { - hide_obj "More Option" - start_time $SMOOTH_OBJ_TIME - time $HIDE_OBJ_TIME - } - EvComm { - move2screen "Credits7" - start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } - time $MOVE2SCREEN_TIME - } - } - } -} - - -#define Credits7_More_Option_PosX 330 -#define Credits7_More_Option_PosY 280 -#define Credits7_Back_Option_PosX -330 -#define Credits7_Back_Option_PosY 280 - -Screen "Credits7" -{ - screen_offs 800 - - block_global_obj - default_obj "Back Option" - - Object "Credits Text"{ - null_level 200 - align_x center - y 20 - - space 2 - - font 0 - s_text $iSTR_CreditsPathH - } - - Object "Back Option" - { - align_x center - align_x_offs $Credits7_Back_Option_PosX - y $Credits7_Back_Option_PosY - - Element STRING { - align_x center - - terrain_num $TERRAIN2 - - font 3 - space 2 - null_level $DEFAULT_NULL - string $iSTR_BACK - } - Event { - key $VK_LBUTTON - key $VK_ESCAPE - - time { $PRESS_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } - EvComm { - low_obj "Back Option" - time $PRESS_OBJ_TIME - start_time 0 - } - EvComm { - move2screen "Credits6" - start_time $PRESS_OBJ_TIME - time $MOVE2SCREEN_TIME - } - } - Event { - key $VK_RBUTTON - - time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } - EvComm { - smooth_obj "Back Option" 2 - start_time 0 - time $SMOOTH_OBJ_TIME - } - EvComm { - hide_obj "Back Option" - start_time $SMOOTH_OBJ_TIME - time $HIDE_OBJ_TIME - } - EvComm { - move2screen "Credits6" - start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } - time $MOVE2SCREEN_TIME - } - } - } - Object "More Option" - { - align_x center - align_x_offs $Credits7_More_Option_PosX - y $Credits7_More_Option_PosY - - Element STRING { - align_x center - - terrain_num $TERRAIN2 - - font 3 - space 2 - null_level $DEFAULT_NULL - string $iSTR_MORE - } - Event { - key $VK_LBUTTON - - time { $PRESS_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } - EvComm { - low_obj "More Option" - time $PRESS_OBJ_TIME - start_time 0 - } - EvComm { - move2screen "Credits8" - start_time $PRESS_OBJ_TIME - time $MOVE2SCREEN_TIME - } - } - Event { - key $VK_RBUTTON - - time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } - EvComm { - smooth_obj "More Option" 2 - start_time 0 - time $SMOOTH_OBJ_TIME - } - EvComm { - hide_obj "More Option" - start_time $SMOOTH_OBJ_TIME - time $HIDE_OBJ_TIME - } - EvComm { - move2screen "Credits8" - start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } - time $MOVE2SCREEN_TIME - } - } - } -} - -#define Credits8_Logo0_PosY 307 -#define Credits8_Back_Option_PosX 616 -#define Credits8_Back_Option_PosY 424 - -Screen "Credits8" -{ - screen_offs 0 - - block_global_obj - default_obj "Back Option" - - Object "Credits Text A"{ - null_level 200 - align_x center - align_x_offs -200 - y 30 - space 2 - - font 0 - s_text $iSTR_CreditsPathIA - } - - Object "Credits Text B"{ - null_level 200 - align_x center - align_x_offs 200 - y 30 - space 2 - - font 0 - s_text $iSTR_CreditsPathIB - } - - Object "Back Option" - { - align_x center - align_x_offs 200 - y $Credits8_Back_Option_PosY - - Element STRING { - align_x center - - terrain_num $TERRAIN2 - - font 3 - space 2 - null_level $DEFAULT_NULL - string $iSTR_BACK - } - Event { - key $VK_LBUTTON - key $VK_ESCAPE - - time { $PRESS_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } - EvComm { - low_obj "Back Option" - time $PRESS_OBJ_TIME - start_time 0 - } - EvComm { - move2screen "Credits7" - start_time $PRESS_OBJ_TIME - time $MOVE2SCREEN_TIME - } - } - Event { - key $VK_RBUTTON - - time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } - EvComm { - smooth_obj "Back Option" 2 - start_time 0 - time $SMOOTH_OBJ_TIME - } - EvComm { - hide_obj "Back Option" - start_time $SMOOTH_OBJ_TIME - time $HIDE_OBJ_TIME - } - EvComm { - move2screen "Credits7" - start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } - time $MOVE2SCREEN_TIME - } - } - } - #define LOGO_OBJ_ID "Logo0" - Object "Logo0" { - align_x center - align_x_offs 200 - y $Credits8_Logo0_PosY - - Element BITMAP { - align_x center - align_y center - - terrain_num $TERRAIN4 - - bmp_null_level 148 - null_level 128 - - bmp_file "resource/iscreen/bitmap/kranx_logo.bmp" - } - $LOGO_EV - } -} - + +#define Credits6_More_Option_PosX 330 +#define Credits6_More_Option_PosY 280 +#define Credits6_Back_Option_PosX -330 +#define Credits6_Back_Option_PosY 280 + +Screen "Credits6" +{ + screen_offs 0 + + block_global_obj + default_obj "Back Option" + + Object "Credits Text"{ + null_level 200 + align_x center + y 20 + + space 2 + + font 0 + s_text $iSTR_CreditsPathG + } + + Object "Back Option" + { + align_x center + align_x_offs $Credits6_Back_Option_PosX + y $Credits6_Back_Option_PosY + + Element STRING { + align_x center + + terrain_num $TERRAIN2 + + font 3 + space 2 + null_level $DEFAULT_NULL + string $iSTR_BACK + } + Event { + key $VK_LBUTTON + key $VK_ESCAPE + + time { $PRESS_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } + EvComm { + low_obj "Back Option" + time $PRESS_OBJ_TIME + start_time 0 + } + EvComm { + move2screen "Credits screen" + start_time $PRESS_OBJ_TIME + time $MOVE2SCREEN_TIME + } + } + Event { + key $VK_RBUTTON + + time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } + EvComm { + smooth_obj "Back Option" 2 + start_time 0 + time $SMOOTH_OBJ_TIME + } + EvComm { + hide_obj "Back Option" + start_time $SMOOTH_OBJ_TIME + time $HIDE_OBJ_TIME + } + EvComm { + move2screen "Credits screen" + start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } + time $MOVE2SCREEN_TIME + } + } + } + Object "More Option" + { + align_x center + align_x_offs $Credits6_More_Option_PosX + y $Credits6_More_Option_PosY + + Element STRING { + align_x center + + terrain_num $TERRAIN2 + + font 3 + space 2 + null_level $DEFAULT_NULL + string $iSTR_MORE + } + Event { + key $VK_LBUTTON + + time { $PRESS_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } + EvComm { + low_obj "More Option" + time $PRESS_OBJ_TIME + start_time 0 + } + EvComm { + move2screen "Credits7" + start_time $PRESS_OBJ_TIME + time $MOVE2SCREEN_TIME + } + } + Event { + key $VK_RBUTTON + + time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } + EvComm { + smooth_obj "More Option" 2 + start_time 0 + time $SMOOTH_OBJ_TIME + } + EvComm { + hide_obj "More Option" + start_time $SMOOTH_OBJ_TIME + time $HIDE_OBJ_TIME + } + EvComm { + move2screen "Credits7" + start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } + time $MOVE2SCREEN_TIME + } + } + } +} + + +#define Credits7_More_Option_PosX 330 +#define Credits7_More_Option_PosY 280 +#define Credits7_Back_Option_PosX -330 +#define Credits7_Back_Option_PosY 280 + +Screen "Credits7" +{ + screen_offs 800 + + block_global_obj + default_obj "Back Option" + + Object "Credits Text"{ + null_level 200 + align_x center + y 20 + + space 2 + + font 0 + s_text $iSTR_CreditsPathH + } + + Object "Back Option" + { + align_x center + align_x_offs $Credits7_Back_Option_PosX + y $Credits7_Back_Option_PosY + + Element STRING { + align_x center + + terrain_num $TERRAIN2 + + font 3 + space 2 + null_level $DEFAULT_NULL + string $iSTR_BACK + } + Event { + key $VK_LBUTTON + key $VK_ESCAPE + + time { $PRESS_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } + EvComm { + low_obj "Back Option" + time $PRESS_OBJ_TIME + start_time 0 + } + EvComm { + move2screen "Credits6" + start_time $PRESS_OBJ_TIME + time $MOVE2SCREEN_TIME + } + } + Event { + key $VK_RBUTTON + + time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } + EvComm { + smooth_obj "Back Option" 2 + start_time 0 + time $SMOOTH_OBJ_TIME + } + EvComm { + hide_obj "Back Option" + start_time $SMOOTH_OBJ_TIME + time $HIDE_OBJ_TIME + } + EvComm { + move2screen "Credits6" + start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } + time $MOVE2SCREEN_TIME + } + } + } + Object "More Option" + { + align_x center + align_x_offs $Credits7_More_Option_PosX + y $Credits7_More_Option_PosY + + Element STRING { + align_x center + + terrain_num $TERRAIN2 + + font 3 + space 2 + null_level $DEFAULT_NULL + string $iSTR_MORE + } + Event { + key $VK_LBUTTON + + time { $PRESS_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } + EvComm { + low_obj "More Option" + time $PRESS_OBJ_TIME + start_time 0 + } + EvComm { + move2screen "Credits8" + start_time $PRESS_OBJ_TIME + time $MOVE2SCREEN_TIME + } + } + Event { + key $VK_RBUTTON + + time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } + EvComm { + smooth_obj "More Option" 2 + start_time 0 + time $SMOOTH_OBJ_TIME + } + EvComm { + hide_obj "More Option" + start_time $SMOOTH_OBJ_TIME + time $HIDE_OBJ_TIME + } + EvComm { + move2screen "Credits8" + start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } + time $MOVE2SCREEN_TIME + } + } + } +} + +#define Credits8_Logo0_PosY 307 +#define Credits8_Back_Option_PosX 616 +#define Credits8_Back_Option_PosY 424 + +Screen "Credits8" +{ + screen_offs 0 + + block_global_obj + default_obj "Back Option" + + Object "Credits Text A"{ + null_level 200 + align_x center + align_x_offs -200 + y 30 + space 2 + + font 0 + s_text $iSTR_CreditsPathIA + } + + Object "Credits Text B"{ + null_level 200 + align_x center + align_x_offs 200 + y 30 + space 2 + + font 0 + s_text $iSTR_CreditsPathIB + } + + Object "Back Option" + { + align_x center + align_x_offs 200 + y $Credits8_Back_Option_PosY + + Element STRING { + align_x center + + terrain_num $TERRAIN2 + + font 3 + space 2 + null_level $DEFAULT_NULL + string $iSTR_BACK + } + Event { + key $VK_LBUTTON + key $VK_ESCAPE + + time { $PRESS_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } + EvComm { + low_obj "Back Option" + time $PRESS_OBJ_TIME + start_time 0 + } + EvComm { + move2screen "Credits7" + start_time $PRESS_OBJ_TIME + time $MOVE2SCREEN_TIME + } + } + Event { + key $VK_RBUTTON + + time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } + EvComm { + smooth_obj "Back Option" 2 + start_time 0 + time $SMOOTH_OBJ_TIME + } + EvComm { + hide_obj "Back Option" + start_time $SMOOTH_OBJ_TIME + time $HIDE_OBJ_TIME + } + EvComm { + move2screen "Credits7" + start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } + time $MOVE2SCREEN_TIME + } + } + } + #define LOGO_OBJ_ID "Logo0" + Object "Logo0" { + align_x center + align_x_offs 200 + y $Credits8_Logo0_PosY + + Element BITMAP { + align_x center + align_y center + + terrain_num $TERRAIN4 + + bmp_null_level 148 + null_level 128 + + bmp_file "resource/iscreen/bitmap/kranx_logo.bmp" + } + $LOGO_EV + } +} + diff --git a/data/iscreen/scripts/mainmenu.inc b/data/iscreen/scripts/mainmenu.inc index b9236548..cd013f88 100644 --- a/data/iscreen/scripts/mainmenu.inc +++ b/data/iscreen/scripts/mainmenu.inc @@ -1,11 +1,32 @@ // MainMenu... -#define EXIT_X1 426 -#define EXIT_Y1 380 +#define EXIT_X1 520 +#define EXIT_Y1 417 + +#define DOBA_TRIG_X1 567 +#define DOBA_TRIG_X2 557 + +#define VERSION_NAZVA_X1 525 +#define VERSION_NAZVA_Y1 540 + +#define VERSION_CIFRA_X1 630 +#define VERSION_CIFRA_Y1 540 + +#define CREDITS_X1 240 +#define CREDITS_Y1 337 //426 -#define EXIT_X2 426 -#define EXIT_Y2 380 +#define EXIT_X2 530 +#define EXIT_Y2 417 + +#define VERSION_NAZVA_X2 115 +#define VERSION_NAZVA_Y2 395 + +#define VERSION_CIFRA_X2 215 +#define VERSION_CIFRA_Y2 405 + +#define CREDITS_X2 80 +#define CREDITS_Y2 337 // Graphics options... #define KEEP_STR_X1 90 @@ -156,22 +177,22 @@ #define Game_Params_0_ArtefactsStr_PosX1 240 #define Game_Params_0_BeebosNumberStr_PosX1 391 #define Game_Params_0_BeebosStr_PosX1 520 -#define Game_Params_0_CashStr_PosX1 180 +#define Game_Params_0_CashStr_PosX1 210 #define Game_Params_0_Ok_Option_PosX1 249 #define Game_Params_0_Back_Option_PosX1 367 -#define Game_Params_0_MaxKillsNumberStr_PosX1 440 -#define Game_Params_0_MaxKillsStr_PosX1 280 +#define Game_Params_0_MaxKillsNumberStr_PosX1 409 +#define Game_Params_0_MaxKillsStr_PosX1 270 #define Game_Params_0_MaxTimeNumberStr_PosX1 380 -#define Game_Params_0_MaxTimeMinStr_PosX1 470 -#define Game_Params_0_MaxTimeStr_PosX1 270 +#define Game_Params_0_MaxTimeMinStr_PosX1 445 +#define Game_Params_0_MaxTimeStr_PosX1 285 // ------------ Screen: "Game Params 0" LOC ------------ -#define Game_Params_0_MaxKillsNumberStr_PosX2 509 -#define Game_Params_0_MaxKillsStr_PosX2 246 +#define Game_Params_0_MaxKillsNumberStr_PosX2 539 +#define Game_Params_0_MaxKillsStr_PosX2 226 #define Game_Params_0_MaxTimeNumberStr_PosX2 391 -#define Game_Params_0_MaxTimeMinStr_PosX2 480 -#define Game_Params_0_MaxTimeStr_PosX2 272 +#define Game_Params_0_MaxTimeMinStr_PosX2 456 +#define Game_Params_0_MaxTimeStr_PosX2 267 #define Game_Params_0_AccessTrig_PosX2 400 #define Game_Params_0_AccessStr_PosX2 263 #define Game_Params_0_TeamTrig_PosX2 499 @@ -179,9 +200,9 @@ #define Game_Params_0_EscaveTrig_PosX2 418 #define Game_Params_0_BirthTrig_PosX2 418 #define Game_Params_0_BirthStr_PosX2 235 -#define Game_Params_0_EscaveMinStr_PosX2 571 -#define Game_Params_0_EscaveTimeStr_PosX2 188 -#define Game_Params_0_TimeTrig_PosX2 535 +#define Game_Params_0_EscaveMinStr_PosX2 561 +#define Game_Params_0_EscaveTimeStr_PosX2 181 +#define Game_Params_0_TimeTrig_PosX2 520 #define Game_Params_0_ArtefactsTrig_PosX2 591 #define Game_Params_0_ArtefactsStr_PosX2 168 #define Game_Params_0_BeebosNumberStr_PosX2 481 @@ -192,8 +213,8 @@ // ------------ Screen: "Game Params 1" ENG ------------ -#define Game_Params_1_OneTimeNum_PosX1 510 -#define Game_Params_1_OneTimeStr_PosX1 220 +#define Game_Params_1_OneTimeNum_PosX1 470 +#define Game_Params_1_OneTimeStr_PosX1 245 #define Game_Params_1_ItemsNumber2_PosX1 550 #define Game_Params_1_ItemsNumber1_PosX1 350 #define Game_Params_1_ItemStrTrig2_PosX1 410 @@ -205,8 +226,8 @@ // ------------ Screen: "Game Params 1" LOC ------------ -#define Game_Params_1_OneTimeNum_PosX2 552 -#define Game_Params_1_OneTimeStr_PosX2 227 +#define Game_Params_1_OneTimeNum_PosX2 562 +#define Game_Params_1_OneTimeStr_PosX2 192 #define Game_Params_1_ItemsNumber2_PosX2 560 #define Game_Params_1_ItemsNumber1_PosX2 360 #define Game_Params_1_ItemStrTrig2_PosX2 420 @@ -248,9 +269,10 @@ #define INet_Host_screen_ProxyServerStr_PosX1 160 #define INet_Host_screen_ProxyTrg_PosX1 470 #define INet_Host_screen_ProxyStr_PosX1 242 -#define INet_Host_screen_Ok_Option_PosX1 294 +#define INet_Host_screen_Ok_Option_PosX1 244 +#define INet_Host_screen_Port_iOption_PosX1 419 #define INet_Host_screen_Back_Option_PosX1 400 -#define INet_Host_screen_IP_Str_PosX1 270 +#define INet_Host_screen_IP_Str_PosX1 280 #define INet_Host_screen_IP_Addr_PosX1 420 // ------------ Screen: "INet Host screen" LOC ------------ @@ -261,8 +283,9 @@ #define INet_Host_screen_ProxyServerStr_PosX2 160 #define INet_Host_screen_ProxyTrg_PosX2 490 #define INet_Host_screen_ProxyStr_PosX2 241 -#define INet_Host_screen_Ok_Option_PosX2 234 -#define INet_Host_screen_Back_Option_PosX2 420 +#define INet_Host_screen_Ok_Option_PosX2 244 +#define INet_Host_screen_Port_iOption_PosX2 414 +#define INet_Host_screen_Back_Option_PosX2 400 #define INet_Host_screen_IP_Str_PosX2 270 #define INet_Host_screen_IP_Addr_PosX2 420 diff --git a/data/iscreen/scripts/mainmenu.scr b/data/iscreen/scripts/mainmenu.scr index 7d14a7e2..44e93e0f 100644 --- a/data/iscreen/scripts/mainmenu.scr +++ b/data/iscreen/scripts/mainmenu.scr @@ -63,15 +63,15 @@ #define MECHOS_TRG_X 430 // PASSEMBLOSS --- Checkpoints Number -#define NUM_CHECKS_STR_X 220 -#define NUM_CHECKS_IN_STR_X 570 +#define NUM_CHECKS_STR_X 265 +#define NUM_CHECKS_IN_STR_X 480 // PASSEMBLOSS --- Escave #define ESCAVE_BIRTH_STR_X 240 // MECHOSOMA --- One at a time -#define ONE_AT_A_TIME_STR_X 250 -#define ONE_AT_A_TIME_TRG_X 470 +#define ONE_AT_A_TIME_STR_X 280 +#define ONE_AT_A_TIME_TRG_X 330 // MECHOSOMA --- Items (Nymbos/Phlegma, etc.) #define ITEM_START_X 210 @@ -123,16 +123,13 @@ #define NEW_GAME_Y 20 #define LOAD_GAME_X 60 -#define LOAD_GAME_Y 90 +#define LOAD_GAME_Y 177 #define OPTIONS_X 160 -#define OPTIONS_Y 160 - -#define CREDITS_X 80 -#define CREDITS_Y 310 +#define OPTIONS_Y 257 #define MULTIPLAYER_X 230 -#define MULTIPLAYER_Y 240 +#define MULTIPLAYER_Y 97 #define MAIN_FNT 1 @@ -159,8 +156,8 @@ /* ------------------------ Graphics Screen Defines ------------------------- */ -#define GRAPHICS_SCR_START_Y 100 -#define GRAPHICS_SCR_DELTA_Y 50 +#define GRAPHICS_SCR_START_Y 80 +#define GRAPHICS_SCR_DELTA_Y 45 #define TUTORIAL_STR_X 220 #define TUTORIAL_TRG_X 500 @@ -168,8 +165,8 @@ #define DETAIL_STR_X 200 #define DETAIL_TRG_X 400 -#define RESOLUTION_STR_X 90 -#define RESOLUTION_TRG_X 600 +#define RESOLUTION_STR_X 200 +#define RESOLUTION_TRG_X 470 #define DESTR_STR_X 90 @@ -389,7 +386,7 @@ Screen "Main Screen" } #define OBJ1 "Load Game Option" - #define OBJ2 "New Game Option" + #define OBJ2 "Multiplayer Option" Event { if_selected key $VK_UP @@ -426,7 +423,7 @@ Object "Multiplayer Option" start_time 0 } EvComm { - move2screen "Multiplayer screen" + move2screen "INet Host screen" start_time $PRESS_OBJ_TIME time $MOVE2SCREEN_TIME } @@ -465,7 +462,7 @@ Object "Multiplayer Option" time $PRESS_OBJ_TIME } EvComm { - move2screen "Multiplayer screen" + move2screen "INet Host screen" start_time { $SMOOTH_OBJ_TIME + $PRESS_OBJ_TIME + $HIDE_OBJ_TIME } time $MOVE2SCREEN_TIME } @@ -490,7 +487,7 @@ Object "Multiplayer Option" time $HIDE_OBJ_TIME } EvComm { - move2screen "Multiplayer screen" + move2screen "INet Host screen" start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } time $MOVE2SCREEN_TIME } @@ -510,7 +507,7 @@ Object "Multiplayer Option" } #define OBJ1 "Multiplayer Option" - #define OBJ2 "Credits Option" + #define OBJ2 "Load Game Option" Event { if_selected key $VK_DOWN @@ -520,7 +517,7 @@ Object "Multiplayer Option" } #define OBJ1 "Multiplayer Option" - #define OBJ2 "Options Option" + #define OBJ2 "New Game Option" Event { if_selected key $VK_UP @@ -655,7 +652,7 @@ Object "Multiplayer Option" } #define OBJ1 "New Game Option" - #define OBJ2 "Load Game Option" + #define OBJ2 "Multiplayer Option" Event { if_selected key $VK_DOWN @@ -778,7 +775,7 @@ Object "Multiplayer Option" } #define OBJ1 "Options Option" - #define OBJ2 "Multiplayer Option" + #define OBJ2 "Credits Option" Event { if_selected key $VK_DOWN @@ -911,7 +908,7 @@ Object "Multiplayer Option" } #define OBJ1 "Credits Option" - #define OBJ2 "Multiplayer Option" + #define OBJ2 "Options Option" Event { if_selected key $VK_UP @@ -1035,297 +1032,513 @@ Object "Multiplayer Option" $EV_CHANGE_OBJ } } -} - - -Screen "Options screen II" -{ - screen_offs 800 - default_obj "Graphics Option" - Event { - key $VK_ESCAPE - time 11 - EvComm { - move2screen "Main Screen" - start_time 0 - time 10 - } - } - - Object "TitleStr" + + Object "Mname" { - align_x center - y $TITLE_STR_Y + x $VERSION_NAZVA_X + y $VERSION_NAZVA_Y Element STRING { - align_x center + align_x center terrain_num $TERRAIN4 font 0 null_level $DEFAULT_NULL - string $iSTR_Options - } - } - - Object "Graphics Option" - { - align_x center - y $OPTIONS_START_Y - - selectable_obj - Element STRING { - align_x center - - terrain_num $TERRAIN2 - - font $MAIN_FNT - null_level $DEFAULT_NULL - string $iSTR_GRAPHICS + string "M4D" } - Event { - if_selected - key $VK_SPACE - key $VK_RETURN key $VK_LBUTTON time { $PRESS_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } EvComm { - low_obj "Graphics Option" + low_obj "Mname" time $PRESS_OBJ_TIME start_time 0 } EvComm { - ext_event $iEXT_INIT_KEEP_OPTIONS 0 - start_time { $PRESS_OBJ_TIME - 1 } + low_obj "Mversion" + time $PRESS_OBJ_TIME + start_time 0 } EvComm { - move2screen "Graphics screen" + move2screen "Avtors screen" start_time $PRESS_OBJ_TIME time $MOVE2SCREEN_TIME } } Event { - if_not_selected key $VK_RBUTTON - time { $SMOOTH_OBJ_TIME + $PRESS_OBJ_TIME + $HIDE_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } + time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } EvComm { - jump_obj "Graphics Option" - start_time $PRESS_OBJ_TIME + smooth_obj "Mname" 2 + start_time 0 + time $SMOOTH_OBJ_TIME } EvComm { - smooth_obj "Graphics Option" 4 - start_time $PRESS_OBJ_TIME + hide_obj "Mname" + start_time $SMOOTH_OBJ_TIME + time $HIDE_OBJ_TIME + } + EvComm { + smooth_obj "Mversion" 2 + start_time 0 time $SMOOTH_OBJ_TIME } EvComm { - hide_obj "Graphics Option" - start_time { $SMOOTH_OBJ_TIME + $PRESS_OBJ_TIME } + hide_obj "Mversion" + start_time $SMOOTH_OBJ_TIME time $HIDE_OBJ_TIME } EvComm { - low_obj "SELECTED_OBJ" - start_time 0 - time $PRESS_OBJ_TIME + move2screen "Avtors screen" + start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } + time $MOVE2SCREEN_TIME } + } + } + + Object "Mversion" + { + x $VERSION_CIFRA_X + y $VERSION_CIFRA_Y + + Element STRING { + align_x center + + terrain_num $TERRAIN4 + + font 0 + null_level $DEFAULT_NULL + string "1.05" + } + Event { + key $VK_LBUTTON + + time { $PRESS_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } EvComm { - rise_obj "Graphics Option" - start_time 0 + low_obj "Mname" time $PRESS_OBJ_TIME + start_time 0 } EvComm { - ext_event $iEXT_INIT_KEEP_OPTIONS 0 - start_time { $PRESS_OBJ_TIME - 1 } + low_obj "Mversion" + time $PRESS_OBJ_TIME + start_time 0 } EvComm { - move2screen "Graphics screen" - start_time { $SMOOTH_OBJ_TIME + $PRESS_OBJ_TIME + $HIDE_OBJ_TIME } + move2screen "Avtors screen" + start_time $PRESS_OBJ_TIME time $MOVE2SCREEN_TIME } } Event { - if_selected key $VK_RBUTTON time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } EvComm { - smooth_obj "Graphics Option" 4 + smooth_obj "Mname" 2 start_time 0 time $SMOOTH_OBJ_TIME } EvComm { - hide_obj "Graphics Option" + hide_obj "Mname" start_time $SMOOTH_OBJ_TIME time $HIDE_OBJ_TIME } EvComm { - ext_event $iEXT_INIT_KEEP_OPTIONS 0 + smooth_obj "Mversion" 2 start_time 0 + time $SMOOTH_OBJ_TIME } EvComm { - move2screen "Graphics screen" + hide_obj "Mversion" + start_time $SMOOTH_OBJ_TIME + time $HIDE_OBJ_TIME + } + EvComm { + move2screen "Avtors screen" start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } time $MOVE2SCREEN_TIME } } + } +} - #define OBJ1 "SELECTED_OBJ" - #define OBJ2 "Graphics Option" - Event { - if_not_selected - key $VK_LBUTTON - key $VK_MOVE +Screen "Avtors screen" +{ + screen_offs 800 + default_obj "avtors" + Event { + key $VK_ESCAPE + time 11 + EvComm { + move2screen "Main Screen" + start_time 0 + time 10 + } + } + + Object "avtors" + { + align_x center + y 50 + + Element STRING { + align_x center - $EV_CHANGE_OBJ + terrain_num $TERRAIN4 + + font 1 + null_level $DEFAULT_NULL + string $iSTR_TITLE_AVTORS } + } + + Object "avtors1" + { + align_x center + y 120 + + Element STRING { + align_x center - #define OBJ1 "Graphics Option" - #define OBJ2 "Sound Option" - Event { - if_selected - key $VK_DOWN - key $VK_TAB + terrain_num $TERRAIN3 - $EV_CHANGE_OBJ + font 3 + null_level $DEFAULT_NULL + string $iSTR_1_AVTORS } + } + + Object "avtors1b" + { + align_x center + y 160 + + Element STRING { + align_x center - #define OBJ1 "Graphics Option" - #define OBJ2 "Controls Option" - Event { - if_selected - key $VK_UP + terrain_num $TERRAIN2 - $EV_CHANGE_OBJ + font 3 + null_level $DEFAULT_NULL + string $iSTR_1b_AVTORS } } + + Object "avtors2" + { + align_x center + y 210 + + Element STRING { + align_x center - Object "Sound Option" + terrain_num $TERRAIN3 + + font 3 + null_level $DEFAULT_NULL + string $iSTR_2_AVTORS + } + } + + Object "avtors2b" { align_x center - y { $OPTIONS_START_Y + $OPTIONS_DELTA_Y } + y 250 + + Element STRING { + align_x center - selectable_obj - Element STRING { + terrain_num $TERRAIN2 + + font 3 + null_level $DEFAULT_NULL + string $iSTR_2b_AVTORS + } + } + + Object "avtors3" + { + align_x center + y 300 + + Element STRING { + align_x center + + terrain_num $TERRAIN3 + + font 3 + null_level $DEFAULT_NULL + string $iSTR_3_AVTORS + } + } + + Object "avtors3b" + { + align_x center + y 340 + + Element STRING { align_x center terrain_num $TERRAIN2 - font $MAIN_FNT + font 3 null_level $DEFAULT_NULL - string $iSTR_SOUND + string $iSTR_3b_AVTORS } + } + + Object "promod" + { + align_x center + y 405 + + Element STRING { + align_x center + + terrain_num $TERRAIN2 + font 0 + null_level $DEFAULT_NULL + string $iSTR_MOREA + } Event { - if_selected key $VK_SPACE key $VK_RETURN key $VK_LBUTTON time { $PRESS_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } EvComm { - low_obj "Sound Option" + low_obj "promod" time $PRESS_OBJ_TIME start_time 0 } EvComm { - move2screen "Sound screen" + move2screen "Avtors2 screen" start_time $PRESS_OBJ_TIME time $MOVE2SCREEN_TIME } } Event { - if_not_selected key $VK_RBUTTON - - time { $PRESS_OBJ_TIME + $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } - EvComm { - jump_obj "Sound Option" - start_time $PRESS_OBJ_TIME - } + + time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } EvComm { - smooth_obj "Sound Option" 4 - start_time $PRESS_OBJ_TIME + smooth_obj "promod" 2 + start_time 0 time $SMOOTH_OBJ_TIME } EvComm { - hide_obj "Sound Option" - start_time { $PRESS_OBJ_TIME + $SMOOTH_OBJ_TIME } + hide_obj "promod" + start_time $SMOOTH_OBJ_TIME time $HIDE_OBJ_TIME } EvComm { - low_obj "SELECTED_OBJ" - start_time 0 - time $PRESS_OBJ_TIME - } - EvComm { - rise_obj "Sound Option" - start_time 0 - time $PRESS_OBJ_TIME - } - EvComm { - move2screen "Sound screen" - start_time { $PRESS_OBJ_TIME + $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } + move2screen "Avtors2 screen" + start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } time $MOVE2SCREEN_TIME } } - Event { - if_selected - key $VK_RBUTTON + } + + Object "vihod" + { + align_x center + y 460 + + Element STRING { + align_x center + + terrain_num $TERRAIN2 + + font 0 + null_level $DEFAULT_NULL + string $iSTR_BACK + } + Event { + key $VK_LBUTTON + key $VK_ESCAPE + + time { $PRESS_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } + EvComm { + low_obj "vihod" + time $PRESS_OBJ_TIME + start_time 0 + } + EvComm { + move2screen "Main Screen" + start_time $PRESS_OBJ_TIME + time $MOVE2SCREEN_TIME + } + } + Event { + key $VK_RBUTTON time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } EvComm { - smooth_obj "Sound Option" 4 + smooth_obj "vihod" 2 start_time 0 time $SMOOTH_OBJ_TIME } EvComm { - hide_obj "Sound Option" + hide_obj "vihod" start_time $SMOOTH_OBJ_TIME time $HIDE_OBJ_TIME } EvComm { - move2screen "Sound screen" + move2screen "Main Screen" start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } time $MOVE2SCREEN_TIME } } + } +} - #define OBJ1 "SELECTED_OBJ" - #define OBJ2 "Sound Option" +Screen "Avtors2 screen" +{ + screen_offs 0 + default_obj "nazvamoda" + Event { + key $VK_ESCAPE + time 11 + EvComm { + move2screen "Avtors screen" + start_time 0 + time 10 + } + } + + Object "nazvamoda" + { + align_x center + y 50 + + Element STRING { + align_x center + + terrain_num $TERRAIN4 + + font 1 + null_level $DEFAULT_NULL + string "MORE FOR DEATH" + } + } + + Object "avtorsText1"{ + null_level 200 + align_x center + + y 110 + + space 1 + + font 0 + s_text $iSTR_PROMOD0 + } + + Object "avtorsText2"{ + null_level 200 + align_x center + + y 290 + + space 1 + + font 0 + s_text $iSTR_PROMOD1 + } + + Object "vihod" + { + align_x center + y 400 + + Element STRING { + align_x center + + terrain_num $TERRAIN2 + + font 0 + null_level $DEFAULT_NULL + string $iSTR_BACK + } Event { - if_not_selected key $VK_LBUTTON - key $VK_MOVE + key $VK_ESCAPE - $EV_CHANGE_OBJ + time { $PRESS_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } + EvComm { + low_obj "vihod" + time $PRESS_OBJ_TIME + start_time 0 + } + EvComm { + move2screen "Avtors screen" + start_time $PRESS_OBJ_TIME + time $MOVE2SCREEN_TIME + } } - - #define OBJ1 "Sound Option" - #define OBJ2 "Controls Option" Event { - if_selected - key $VK_DOWN - key $VK_TAB + key $VK_RBUTTON - $EV_CHANGE_OBJ + time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } + EvComm { + smooth_obj "vihod" 2 + start_time 0 + time $SMOOTH_OBJ_TIME + } + EvComm { + hide_obj "vihod" + start_time $SMOOTH_OBJ_TIME + time $HIDE_OBJ_TIME + } + EvComm { + move2screen "Avtors screen" + start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } + time $MOVE2SCREEN_TIME + } } + } +} - #define OBJ1 "Sound Option" - #define OBJ2 "Graphics Option" - Event { - if_selected - key $VK_UP +Screen "Options screen II" +{ + screen_offs 800 + default_obj "Graphics Option" + Event { + key $VK_ESCAPE + time 11 + EvComm { + move2screen "Main Screen" + start_time 0 + time 10 + } + } - $EV_CHANGE_OBJ + Object "TitleStr" + { + align_x center + y $TITLE_STR_Y + + Element STRING { + align_x center + + terrain_num $TERRAIN4 + + font 0 + null_level $DEFAULT_NULL + string $iSTR_Options } } - Object "Controls Option" + Object "Graphics Option" { align_x center - y { $OPTIONS_START_Y + $OPTIONS_DELTA_Y * 2 } + y $OPTIONS_START_Y selectable_obj Element STRING { @@ -1335,7 +1548,7 @@ Screen "Options screen II" font $MAIN_FNT null_level $DEFAULT_NULL - string $iSTR_CONTROLS + string $iSTR_GRAPHICS } Event { @@ -1346,16 +1559,16 @@ Screen "Options screen II" time { $PRESS_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } EvComm { - low_obj "Controls Option" + low_obj "Graphics Option" time $PRESS_OBJ_TIME start_time 0 } EvComm { - ext_event $iEXT_INIT_JOYSTICK_OBJ 0 - start_time 1 + ext_event $iEXT_INIT_KEEP_OPTIONS 0 + start_time { $PRESS_OBJ_TIME - 1 } } EvComm { - move2screen "Controls screen2" + move2screen "Graphics screen" start_time $PRESS_OBJ_TIME time $MOVE2SCREEN_TIME } @@ -1364,19 +1577,19 @@ Screen "Options screen II" if_not_selected key $VK_RBUTTON - time { $PRESS_OBJ_TIME + $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } + time { $SMOOTH_OBJ_TIME + $PRESS_OBJ_TIME + $HIDE_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } EvComm { - jump_obj "Controls Option" + jump_obj "Graphics Option" start_time $PRESS_OBJ_TIME } EvComm { - smooth_obj "Controls Option" 4 + smooth_obj "Graphics Option" 4 start_time $PRESS_OBJ_TIME time $SMOOTH_OBJ_TIME } EvComm { - hide_obj "Controls Option" - start_time { $PRESS_OBJ_TIME + $SMOOTH_OBJ_TIME } + hide_obj "Graphics Option" + start_time { $SMOOTH_OBJ_TIME + $PRESS_OBJ_TIME } time $HIDE_OBJ_TIME } EvComm { @@ -1385,17 +1598,17 @@ Screen "Options screen II" time $PRESS_OBJ_TIME } EvComm { - rise_obj "Controls Option" + rise_obj "Graphics Option" start_time 0 time $PRESS_OBJ_TIME } EvComm { - ext_event $iEXT_INIT_JOYSTICK_OBJ 0 - start_time 1 + ext_event $iEXT_INIT_KEEP_OPTIONS 0 + start_time { $PRESS_OBJ_TIME - 1 } } EvComm { - move2screen "Controls screen2" - start_time { $PRESS_OBJ_TIME + $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } + move2screen "Graphics screen" + start_time { $SMOOTH_OBJ_TIME + $PRESS_OBJ_TIME + $HIDE_OBJ_TIME } time $MOVE2SCREEN_TIME } } @@ -1405,28 +1618,28 @@ Screen "Options screen II" time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } EvComm { - smooth_obj "Controls Option" 4 + smooth_obj "Graphics Option" 4 start_time 0 time $SMOOTH_OBJ_TIME } EvComm { - hide_obj "Controls Option" + hide_obj "Graphics Option" start_time $SMOOTH_OBJ_TIME time $HIDE_OBJ_TIME } EvComm { - ext_event $iEXT_INIT_JOYSTICK_OBJ 0 - start_time 1 + ext_event $iEXT_INIT_KEEP_OPTIONS 0 + start_time 0 } EvComm { - move2screen "Controls screen2" + move2screen "Graphics screen" start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } time $MOVE2SCREEN_TIME } } #define OBJ1 "SELECTED_OBJ" - #define OBJ2 "Controls Option" + #define OBJ2 "Graphics Option" Event { if_not_selected key $VK_LBUTTON @@ -1435,8 +1648,8 @@ Screen "Options screen II" $EV_CHANGE_OBJ } - #define OBJ1 "Controls Option" - #define OBJ2 "Graphics Option" + #define OBJ1 "Graphics Option" + #define OBJ2 "Sound Option" Event { if_selected key $VK_DOWN @@ -1445,8 +1658,8 @@ Screen "Options screen II" $EV_CHANGE_OBJ } - #define OBJ1 "Controls Option" - #define OBJ2 "Sound Option" + #define OBJ1 "Graphics Option" + #define OBJ2 "Controls Option" Event { if_selected key $VK_UP @@ -1455,65 +1668,319 @@ Screen "Options screen II" } } - Object "Main Menu Option" + Object "Sound Option" { align_x center - y 400 + y { $OPTIONS_START_Y + $OPTIONS_DELTA_Y } + selectable_obj Element STRING { align_x center terrain_num $TERRAIN2 - font 0 + font $MAIN_FNT null_level $DEFAULT_NULL - string $iSTR_MAIN_MENU + string $iSTR_SOUND } Event { - key $VK_ESCAPE + if_selected + key $VK_SPACE + key $VK_RETURN key $VK_LBUTTON time { $PRESS_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } EvComm { - low_obj "Main Menu Option" + low_obj "Sound Option" time $PRESS_OBJ_TIME start_time 0 } EvComm { - move2screen "Main Screen" + move2screen "Sound screen" start_time $PRESS_OBJ_TIME time $MOVE2SCREEN_TIME } } Event { + if_not_selected key $VK_RBUTTON - time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } + time { $PRESS_OBJ_TIME + $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } EvComm { - smooth_obj "Main Menu Option" 2 - start_time 0 + jump_obj "Sound Option" + start_time $PRESS_OBJ_TIME + } + EvComm { + smooth_obj "Sound Option" 4 + start_time $PRESS_OBJ_TIME time $SMOOTH_OBJ_TIME } EvComm { - hide_obj "Main Menu Option" - start_time $SMOOTH_OBJ_TIME + hide_obj "Sound Option" + start_time { $PRESS_OBJ_TIME + $SMOOTH_OBJ_TIME } time $HIDE_OBJ_TIME } EvComm { - move2screen "Main Screen" - start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } + low_obj "SELECTED_OBJ" + start_time 0 + time $PRESS_OBJ_TIME + } + EvComm { + rise_obj "Sound Option" + start_time 0 + time $PRESS_OBJ_TIME + } + EvComm { + move2screen "Sound screen" + start_time { $PRESS_OBJ_TIME + $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } time $MOVE2SCREEN_TIME } } - } -} - -Screen "Graphics screen" -{ - screen_offs 0 - - default_obj "Back Option" + Event { + if_selected + key $VK_RBUTTON + + time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } + EvComm { + smooth_obj "Sound Option" 4 + start_time 0 + time $SMOOTH_OBJ_TIME + } + EvComm { + hide_obj "Sound Option" + start_time $SMOOTH_OBJ_TIME + time $HIDE_OBJ_TIME + } + EvComm { + move2screen "Sound screen" + start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } + time $MOVE2SCREEN_TIME + } + } + + #define OBJ1 "SELECTED_OBJ" + #define OBJ2 "Sound Option" + Event { + if_not_selected + key $VK_LBUTTON + key $VK_MOVE + + $EV_CHANGE_OBJ + } + + #define OBJ1 "Sound Option" + #define OBJ2 "Controls Option" + Event { + if_selected + key $VK_DOWN + key $VK_TAB + + $EV_CHANGE_OBJ + } + + #define OBJ1 "Sound Option" + #define OBJ2 "Graphics Option" + Event { + if_selected + key $VK_UP + + $EV_CHANGE_OBJ + } + } + + Object "Controls Option" + { + align_x center + y { $OPTIONS_START_Y + $OPTIONS_DELTA_Y * 2 } + + selectable_obj + Element STRING { + align_x center + + terrain_num $TERRAIN2 + + font $MAIN_FNT + null_level $DEFAULT_NULL + string $iSTR_CONTROLS + } + + Event { + if_selected + key $VK_SPACE + key $VK_RETURN + key $VK_LBUTTON + + time { $PRESS_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } + EvComm { + low_obj "Controls Option" + time $PRESS_OBJ_TIME + start_time 0 + } + EvComm { + ext_event $iEXT_INIT_JOYSTICK_OBJ 0 + start_time 1 + } + EvComm { + move2screen "Controls screen2" + start_time $PRESS_OBJ_TIME + time $MOVE2SCREEN_TIME + } + } + Event { + if_not_selected + key $VK_RBUTTON + + time { $PRESS_OBJ_TIME + $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } + EvComm { + jump_obj "Controls Option" + start_time $PRESS_OBJ_TIME + } + EvComm { + smooth_obj "Controls Option" 4 + start_time $PRESS_OBJ_TIME + time $SMOOTH_OBJ_TIME + } + EvComm { + hide_obj "Controls Option" + start_time { $PRESS_OBJ_TIME + $SMOOTH_OBJ_TIME } + time $HIDE_OBJ_TIME + } + EvComm { + low_obj "SELECTED_OBJ" + start_time 0 + time $PRESS_OBJ_TIME + } + EvComm { + rise_obj "Controls Option" + start_time 0 + time $PRESS_OBJ_TIME + } + EvComm { + ext_event $iEXT_INIT_JOYSTICK_OBJ 0 + start_time 1 + } + EvComm { + move2screen "Controls screen2" + start_time { $PRESS_OBJ_TIME + $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } + time $MOVE2SCREEN_TIME + } + } + Event { + if_selected + key $VK_RBUTTON + + time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } + EvComm { + smooth_obj "Controls Option" 4 + start_time 0 + time $SMOOTH_OBJ_TIME + } + EvComm { + hide_obj "Controls Option" + start_time $SMOOTH_OBJ_TIME + time $HIDE_OBJ_TIME + } + EvComm { + ext_event $iEXT_INIT_JOYSTICK_OBJ 0 + start_time 1 + } + EvComm { + move2screen "Controls screen2" + start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } + time $MOVE2SCREEN_TIME + } + } + + #define OBJ1 "SELECTED_OBJ" + #define OBJ2 "Controls Option" + Event { + if_not_selected + key $VK_LBUTTON + key $VK_MOVE + + $EV_CHANGE_OBJ + } + + #define OBJ1 "Controls Option" + #define OBJ2 "Graphics Option" + Event { + if_selected + key $VK_DOWN + key $VK_TAB + + $EV_CHANGE_OBJ + } + + #define OBJ1 "Controls Option" + #define OBJ2 "Sound Option" + Event { + if_selected + key $VK_UP + + $EV_CHANGE_OBJ + } + } + + Object "Main Menu Option" + { + align_x center + y 400 + + Element STRING { + align_x center + + terrain_num $TERRAIN2 + + font 0 + null_level $DEFAULT_NULL + string $iSTR_MAIN_MENU + } + + Event { + key $VK_ESCAPE + key $VK_LBUTTON + + time { $PRESS_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } + EvComm { + low_obj "Main Menu Option" + time $PRESS_OBJ_TIME + start_time 0 + } + EvComm { + move2screen "Main Screen" + start_time $PRESS_OBJ_TIME + time $MOVE2SCREEN_TIME + } + } + Event { + key $VK_RBUTTON + + time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } + EvComm { + smooth_obj "Main Menu Option" 2 + start_time 0 + time $SMOOTH_OBJ_TIME + } + EvComm { + hide_obj "Main Menu Option" + start_time $SMOOTH_OBJ_TIME + time $HIDE_OBJ_TIME + } + EvComm { + move2screen "Main Screen" + start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } + time $MOVE2SCREEN_TIME + } + } + } +} + +Screen "Graphics screen" +{ + screen_offs 0 + + default_obj "Back Option" Object "TitleStr" { @@ -1940,30 +2407,113 @@ Screen "Graphics screen" } } } - Object "InUseObj" - { - x $Graphics_screen_InUseObj_PosX - y { $GRAPHICS_SCR_START_Y + $GRAPHICS_SCR_DELTA_Y * 5 } + Object "CycleDobaObj" { + x $KEEP_STR_X + y { $GRAPHICS_SCR_START_Y + $GRAPHICS_SCR_DELTA_Y * 6 } Element STRING { - id "InUseStr" - space $OPTION_SPACE - align_x center + align_x center terrain_num $TERRAIN2 font $GRAPHICS_FONT null_level $DEFAULT_NULL - string $iSTR_DISK_SPACE_IN_USE + string $iSTR_CYCLE_DOBA } } - Object "CleanUpObj" - { - x $Graphics_screen_CleanUpObj_PosX - y { $GRAPHICS_SCR_START_Y + $GRAPHICS_SCR_DELTA_Y * 5 } + Trigger "CycleDobaTrig" { + x $DOBA_TRIG_X + y { $GRAPHICS_SCR_START_Y + $GRAPHICS_SCR_DELTA_Y * 6 } - not_unlock + num_state 4 + + null_level $DEFAULT_NULL + + State 3 "STRING"{ + align_x center + align_y center + + font $GRAPHICS_FONT + space $OPTION_SPACE + terrain_num $TERRAIN4 + + string $iSTR_OFF + null_level $DEFAULT_NULL + } + + State 2 "STRING"{ + align_x center + align_y center + + font $GRAPHICS_FONT + space $OPTION_SPACE + terrain_num $TERRAIN4 + + string $iSTR_CYCLE_DOBA_OLD + null_level $DEFAULT_NULL + } + State 1 "STRING"{ + align_x center + align_y center + + font $GRAPHICS_FONT + space $OPTION_SPACE + terrain_num $TERRAIN4 + + string $iSTR_CYCLE_DOBA_CLASSIC + null_level $DEFAULT_NULL + } + State 0 "STRING"{ + align_x center + align_y center + + font $GRAPHICS_FONT + space $OPTION_SPACE + terrain_num $TERRAIN4 + + string $iSTR_CYCLE_DOBA_NEW + null_level $DEFAULT_NULL + } + Event { + key $VK_LBUTTON + key $VK_RBUTTON + + time { $TRIGGER_TIME + 1 } + EvComm { + change_trigger "CycleDobaTrig" + time $TRIGGER_TIME + } + EvComm { + ext_event $iEXT_INIT_KEEP_OPTIONS 0 + start_time { $TRIGGER_TIME / 4 } + } + } + } + Object "InUseObj" + { + x $Graphics_screen_InUseObj_PosX + y { $GRAPHICS_SCR_START_Y + $GRAPHICS_SCR_DELTA_Y * 5 } + + Element STRING { + id "InUseStr" + + space $OPTION_SPACE + align_x center + + terrain_num $TERRAIN2 + + font $GRAPHICS_FONT + null_level $DEFAULT_NULL + string $iSTR_DISK_SPACE_IN_USE + } + } + Object "CleanUpObj" + { + x $Graphics_screen_CleanUpObj_PosX + y { $GRAPHICS_SCR_START_Y + $GRAPHICS_SCR_DELTA_Y * 5 } + + not_unlock Element STRING { id "CleanUpStr" @@ -3020,1547 +3570,90 @@ Screen "Loading screen" align_x_offs $SLOT_OFFS not_unlock - shadow_size 20 - - Element STRING { - id "SlotStrTime7" - align_x center - - terrain_num $SLOT_TERRAIN - - space $SLOT_SPACE - font $SLOT_FONT - null_level $DEFAULT_NULL - - string "XXXXXXXXXXXXXXX" - } - } - Object "_Slot08" - { - align_x center - y { $SLOT_START_Y + $SLOT_DELTA_Y * 8 } - - space 0 - align_x_offs $SLOT_OFFS - not_unlock - - shadow_size 20 - - Element STRING { - id "SlotStrTime8" - align_x center - - terrain_num $SLOT_TERRAIN - - space $SLOT_SPACE - font $SLOT_FONT - null_level $DEFAULT_NULL - - string "XXXXXXXXXXXXXXX" - } - } - - - Object "TitleStr" - { - align_x center - y $TITLE_STR_Y - - Element STRING { - align_x center - - terrain_num $TERRAIN4 - - space $SLOT_SPACE - font $SLOT_FONT - null_level $DEFAULT_NULL - string $iSTR_LOAD_GAME - } - } -} - -Screen "Multiplayer screen" -{ - screen_offs 800 - - default_obj "Join Option" - - Object "TitleStr" - { - align_x center - y $TITLE_STR_Y - - Element STRING { - align_x center - - terrain_num $TERRAIN4 - - font 0 - null_level $DEFAULT_NULL - string $iSTR_Multiplayer - } - } - - Object "Main Menu Option" - { -// x $RETURN2_X - align_x center - y $RETURN2_Y - - Element STRING { - align_x center - - terrain_num $TERRAIN2 - - font 0 - null_level $DEFAULT_NULL - string $iSTR_MAIN_MENU - } - - Event { - key $VK_LBUTTON - key $VK_ESCAPE - - time { $PRESS_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } - EvComm { - low_obj "Main Menu Option" - time $PRESS_OBJ_TIME - start_time 0 - } - EvComm { - move2screen "Main Screen" - start_time $PRESS_OBJ_TIME - time $MOVE2SCREEN_TIME - } - } - Event { - key $VK_RBUTTON - - time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } - EvComm { - smooth_obj "Main Menu Option" 2 - start_time 0 - time $SMOOTH_OBJ_TIME - } - EvComm { - hide_obj "Main Menu Option" - start_time $SMOOTH_OBJ_TIME - time $HIDE_OBJ_TIME - } - EvComm { - move2screen "Main Screen" - start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } - time $MOVE2SCREEN_TIME - } - } - } - Object "Join Option" - { - align_x center - y { $MULTI_START_Y + $MULTI_DELTA_Y * 0 } - - selectable_obj - Element STRING { - align_x center - - terrain_num $TERRAIN2 - - font $MAIN_FNT - null_level $DEFAULT_NULL - string $iSTR_JOIN_SERVER - } - - Event { - if_selected - key $VK_SPACE - key $VK_RETURN - key $VK_LBUTTON - - time { $PRESS_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } - EvComm { - low_obj "Join Option" - time $PRESS_OBJ_TIME - start_time 0 - } - EvComm { - move2screen "Server screen" - start_time $PRESS_OBJ_TIME - time $MOVE2SCREEN_TIME - } - } - Event { - if_not_selected - key $VK_RBUTTON - - time { $PRESS_OBJ_TIME + $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } - EvComm { - jump_obj "Join Option" - start_time $PRESS_OBJ_TIME - } - EvComm { - smooth_obj "Join Option" 4 - start_time $PRESS_OBJ_TIME - time $SMOOTH_OBJ_TIME - } - EvComm { - hide_obj "Join Option" - start_time { $PRESS_OBJ_TIME + $SMOOTH_OBJ_TIME } - time $HIDE_OBJ_TIME - } - EvComm { - low_obj "SELECTED_OBJ" - start_time 0 - time $PRESS_OBJ_TIME - } - EvComm { - rise_obj "Join Option" - start_time 0 - time $PRESS_OBJ_TIME - } - EvComm { - move2screen "Server screen" - start_time { $PRESS_OBJ_TIME + $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } - time $MOVE2SCREEN_TIME - } - } - Event { - if_selected - key $VK_RBUTTON - - time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } - EvComm { - smooth_obj "Join Option" 4 - start_time 0 - time $SMOOTH_OBJ_TIME - } - EvComm { - hide_obj "Join Option" - start_time $SMOOTH_OBJ_TIME - time $HIDE_OBJ_TIME - } - EvComm { - move2screen "Server screen" - start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } - time $MOVE2SCREEN_TIME - } - } - - #define OBJ1 "SELECTED_OBJ" - #define OBJ2 "Join Option" - Event { - if_not_selected - key $VK_LBUTTON - key $VK_MOVE - - $EV_CHANGE_OBJ - } - - #define OBJ1 "Join Option" - #define OBJ2 "Create Option" -// #define OBJ2 "Port Option" - Event { - if_selected - key $VK_DOWN - key $VK_TAB - - $EV_CHANGE_OBJ - } - #define OBJ1 "Join Option" - #define OBJ2 "Port Option" - Event { - if_selected - key $VK_UP - - $EV_CHANGE_OBJ - } - } - Object "Create Option" - { - align_x center - y { $MULTI_START_Y + $MULTI_DELTA_Y * 1 } - - selectable_obj - Element STRING { - align_x center - - terrain_num $TERRAIN2 - - font $MAIN_FNT - null_level $DEFAULT_NULL - string $iSTR_CREATE_SERVER - } - Event { - if_selected - key $VK_SPACE - key $VK_RETURN - key $VK_LBUTTON - - multi_event - - time { $PRESS_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } - EvComm { - low_obj "Create Option" - time $PRESS_OBJ_TIME - start_time 0 - } - EvComm { - ext_event $iEXT_CREATE_SERVER 0 - start_time { $PRESS_OBJ_TIME - 1 } - } - EvComm { - move2screen "Identification screen2" - start_time $PRESS_OBJ_TIME - time $MOVE2SCREEN_TIME - - event_line 2 - } - EvComm { - move2screen "Create server screen" - start_time $PRESS_OBJ_TIME - time $MOVE2SCREEN_TIME - - event_line 1 - } - } - Event { - if_not_selected - key $VK_RBUTTON - - multi_event - - time { $PRESS_OBJ_TIME + $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } - EvComm { - jump_obj "Create Option" - start_time $PRESS_OBJ_TIME - } - EvComm { - smooth_obj "Create Option" 4 - start_time $PRESS_OBJ_TIME - time $SMOOTH_OBJ_TIME - } - EvComm { - hide_obj "Create Option" - start_time { $PRESS_OBJ_TIME + $SMOOTH_OBJ_TIME } - time $HIDE_OBJ_TIME - } - EvComm { - ext_event $iEXT_CREATE_SERVER 0 - start_time { $PRESS_OBJ_TIME + $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME - 1 } - } - EvComm { - low_obj "SELECTED_OBJ" - start_time 0 - time $PRESS_OBJ_TIME - } - EvComm { - rise_obj "Create Option" - start_time 0 - time $PRESS_OBJ_TIME - } - EvComm { - move2screen "Identification screen2" - start_time { $PRESS_OBJ_TIME + $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } - time $MOVE2SCREEN_TIME - - event_line 2 - } - EvComm { - move2screen "Create server screen" - start_time { $PRESS_OBJ_TIME + $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } - time $MOVE2SCREEN_TIME - - event_line 1 - } - } - Event { - if_selected - key $VK_RBUTTON - - multi_event - - time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } - EvComm { - smooth_obj "Create Option" 4 - start_time 0 - time $SMOOTH_OBJ_TIME - } - EvComm { - hide_obj "Create Option" - start_time $SMOOTH_OBJ_TIME - time $HIDE_OBJ_TIME - } - EvComm { - ext_event $iEXT_CREATE_SERVER 0 - start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME - 1 } - } - EvComm { - move2screen "Create server screen" - start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } - time $MOVE2SCREEN_TIME - - event_line 1 - } - EvComm { - move2screen "Identification screen2" - start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } - time $MOVE2SCREEN_TIME - - event_line 2 - } - } - #define OBJ1 "SELECTED_OBJ" - #define OBJ2 "Create Option" - Event { - if_not_selected - key $VK_LBUTTON - key $VK_MOVE - - $EV_CHANGE_OBJ - } - - #define OBJ1 "Create Option" - #define OBJ2 "Port Option" - Event { - if_selected - key $VK_DOWN - key $VK_TAB - - $EV_CHANGE_OBJ - } - #define OBJ1 "Create Option" - #define OBJ2 "Join Option" - Event { - if_selected - key $VK_UP - - $EV_CHANGE_OBJ - } - } -/* - Object "Player Option" - { - align_x center - y { $MULTI_START_Y + $MULTI_DELTA_Y * 2 } - - selectable_obj - Element STRING { - align_x center - - terrain_num $TERRAIN2 - - font $MAIN_FNT - null_level $DEFAULT_NULL - string $iSTR_PLAYER_SETUP - } - - Event { - if_selected - key $VK_SPACE - key $VK_RETURN - key $VK_LBUTTON - - time { $PRESS_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } - EvComm { - low_obj "Player Option" - time $PRESS_OBJ_TIME - start_time 0 - } - EvComm { - move2screen "Configuration screen" - start_time $PRESS_OBJ_TIME - time $MOVE2SCREEN_TIME - } - } - Event { - if_not_selected - key $VK_RBUTTON - - time { $PRESS_OBJ_TIME + $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } - EvComm { - jump_obj "Player Option" - start_time $PRESS_OBJ_TIME - } - EvComm { - smooth_obj "Player Option" 4 - start_time $PRESS_OBJ_TIME - time $SMOOTH_OBJ_TIME - } - EvComm { - hide_obj "Player Option" - start_time { $PRESS_OBJ_TIME + $SMOOTH_OBJ_TIME } - time $HIDE_OBJ_TIME - } - EvComm { - low_obj "SELECTED_OBJ" - start_time 0 - time $PRESS_OBJ_TIME - } - EvComm { - rise_obj "Player Option" - start_time 0 - time $PRESS_OBJ_TIME - } - EvComm { - move2screen "Configuration screen" - start_time { $PRESS_OBJ_TIME + $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } - time $MOVE2SCREEN_TIME - } - } - Event { - if_selected - key $VK_RBUTTON - - time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } - EvComm { - smooth_obj "Player Option" 4 - start_time 0 - time $SMOOTH_OBJ_TIME - } - EvComm { - hide_obj "Player Option" - start_time $SMOOTH_OBJ_TIME - time $HIDE_OBJ_TIME - } - EvComm { - move2screen "Configuration screen" - start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } - time $MOVE2SCREEN_TIME - } - } - - #define OBJ1 "SELECTED_OBJ" - #define OBJ2 "Player Option" - Event { - if_not_selected - key $VK_LBUTTON - key $VK_MOVE - - $EV_CHANGE_OBJ - } - - #define OBJ1 "Player Option" - #define OBJ2 "Port Option" - Event { - if_selected - key $VK_DOWN - key $VK_TAB - - $EV_CHANGE_OBJ - } - #define OBJ1 "Player Option" - #define OBJ2 "Create Option" - Event { - if_selected - key $VK_UP - - $EV_CHANGE_OBJ - } - } -*/ - Object "Port Option" - { - align_x center - y { $MULTI_START_Y + $MULTI_DELTA_Y * 2 } - - selectable_obj - Element STRING { - align_x center - - terrain_num $TERRAIN2 - - font $MAIN_FNT - null_level $DEFAULT_NULL - string $iSTR_SERVER_PORT - } - - Event { - if_selected - key $VK_SPACE - key $VK_RETURN - key $VK_LBUTTON - - time { $PRESS_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } - EvComm { - low_obj "Port Option" - time $PRESS_OBJ_TIME - start_time 0 - } - EvComm { - move2screen "Port screen" - start_time $PRESS_OBJ_TIME - time $MOVE2SCREEN_TIME - } - } - Event { - if_not_selected - key $VK_RBUTTON - - time { $PRESS_OBJ_TIME + $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } - EvComm { - jump_obj "Port Option" - start_time $PRESS_OBJ_TIME - } - EvComm { - smooth_obj "Port Option" 4 - start_time $PRESS_OBJ_TIME - time $SMOOTH_OBJ_TIME - } - EvComm { - hide_obj "Port Option" - start_time { $PRESS_OBJ_TIME + $SMOOTH_OBJ_TIME } - time $HIDE_OBJ_TIME - } - EvComm { - low_obj "SELECTED_OBJ" - start_time 0 - time $PRESS_OBJ_TIME - } - EvComm { - rise_obj "Port Option" - start_time 0 - time $PRESS_OBJ_TIME - } - EvComm { - move2screen "Port screen" - start_time { $PRESS_OBJ_TIME + $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } - time $MOVE2SCREEN_TIME - } - } - Event { - if_selected - key $VK_RBUTTON - - time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } - EvComm { - smooth_obj "Port Option" 4 - start_time 0 - time $SMOOTH_OBJ_TIME - } - EvComm { - hide_obj "Port Option" - start_time $SMOOTH_OBJ_TIME - time $HIDE_OBJ_TIME - } - EvComm { - move2screen "Port screen" - start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } - time $MOVE2SCREEN_TIME - } - } - - #define OBJ1 "SELECTED_OBJ" - #define OBJ2 "Port Option" - Event { - if_not_selected - key $VK_LBUTTON - key $VK_MOVE - - $EV_CHANGE_OBJ - } - - #define OBJ1 "Port Option" - #define OBJ2 "Join Option" - Event { - if_selected - key $VK_DOWN - key $VK_TAB - - $EV_CHANGE_OBJ - } - #define OBJ1 "Port Option" - #define OBJ2 "Create Option" -// #define OBJ2 "Join Option" - Event { - if_selected - key $VK_UP - - $EV_CHANGE_OBJ - } - } -} - -Screen "Server screen" -{ - screen_offs 0 - - default_obj "LAN Option" - - Object "TitleStr" - { - align_x center - y $TITLE_STR2_Y - - Element STRING { - align_x center - - terrain_num $TERRAIN4 - - font 0 - null_level $DEFAULT_NULL - string $iSTR_Join_Server - } - } - - Object "Back Option" - { - x $Server_screen_Back_Option_PosX - y $Server_screen_Back_Option_PosY - - Element STRING { - align_x center - - terrain_num $TERRAIN2 - - font 0 - null_level $DEFAULT_NULL - string $iSTR_BACK - } - Event { - key $VK_LBUTTON - key $VK_ESCAPE - - time { $PRESS_OBJ_TIME + $MOVE2SCREEN_TIME } - - EvComm { - low_obj "Back Option" - time $PRESS_OBJ_TIME - start_time 0 - } - EvComm { - move2screen "Multiplayer screen" - start_time $PRESS_OBJ_TIME - time $MOVE2SCREEN_TIME - } - } - Event { - key $VK_RBUTTON - - time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } - EvComm { - smooth_obj "Back Option" 2 - start_time 0 - time $SMOOTH_OBJ_TIME - } - EvComm { - hide_obj "Back Option" - start_time $SMOOTH_OBJ_TIME - time $HIDE_OBJ_TIME - } - EvComm { - move2screen "Multiplayer screen" - start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } - time $MOVE2SCREEN_TIME - } - } - } - Object "LAN Option" - { - align_x center - y { $SERVER_START_Y + $SERVER_DELTA_Y * 0 } - - selectable_obj - Element STRING { - align_x center - - terrain_num $TERRAIN2 - - font $MAIN_FNT - null_level $DEFAULT_NULL - string $iSTR_LAN - } - - Event { - if_selected - key $VK_SPACE - key $VK_RETURN - key $VK_LBUTTON - - time { $PRESS_OBJ_TIME + $MOVE2SCREEN_TIME + 3 } - - multi_event - - EvComm { - low_obj "LAN Option" - time $PRESS_OBJ_TIME - start_time 0 - } - EvComm { - ext_event $iEXT_INIT_SERVERS_LIST 0 - start_time 1 - } - EvComm { - ext_event $iEXT_FIRST_SEARCH 0 - start_time { $PRESS_OBJ_TIME - 1 } - } - EvComm { - move2screen "Search server screen" - start_time $PRESS_OBJ_TIME - time $MOVE2SCREEN_TIME - - event_line 2 - } - EvComm { - end_event - start_time { $PRESS_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } - - event_line 2 - } - EvComm { - ext_event $iEXT_UPDATE_SERVERS_LIST 0 - start_time { $PRESS_OBJ_TIME + 1 } - - event_line 1 - } - EvComm { - move2screen "Search server screen" - start_time { $PRESS_OBJ_TIME + 2 } - time $MOVE2SCREEN_TIME - - event_line 1 - } - } - Event { - if_not_selected - key $VK_RBUTTON - - multi_event - - time { $PRESS_OBJ_TIME + $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + $MOVE2SCREEN_TIME + 3 } - EvComm { - jump_obj "LAN Option" - start_time $PRESS_OBJ_TIME - } - EvComm { - smooth_obj "LAN Option" 4 - start_time $PRESS_OBJ_TIME - time $SMOOTH_OBJ_TIME - } - EvComm { - hide_obj "LAN Option" - start_time { $PRESS_OBJ_TIME + $SMOOTH_OBJ_TIME } - time $HIDE_OBJ_TIME - } - EvComm { - low_obj "SELECTED_OBJ" - start_time 0 - time $PRESS_OBJ_TIME - } - EvComm { - rise_obj "LAN Option" - start_time 0 - time $PRESS_OBJ_TIME - } - EvComm { - ext_event $iEXT_INIT_SERVERS_LIST 0 - start_time 1 - } - EvComm { - ext_event $iEXT_FIRST_SEARCH 0 - start_time { $PRESS_OBJ_TIME + $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } - } - EvComm { - move2screen "Search server screen" - start_time { $PRESS_OBJ_TIME + $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + 1 } - time $MOVE2SCREEN_TIME - - event_line 2 - } - EvComm { - end_event - start_time { $PRESS_OBJ_TIME + $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + $MOVE2SCREEN_TIME + 2 } - - event_line 2 - } - EvComm { - ext_event $iEXT_UPDATE_SERVERS_LIST 0 - start_time { $PRESS_OBJ_TIME + $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + 2 } - - event_line 1 - } - EvComm { - move2screen "Search server screen" - start_time { $PRESS_OBJ_TIME + $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + 3 } - time $MOVE2SCREEN_TIME - - event_line 1 - } - } - Event { - if_selected - key $VK_RBUTTON - - multi_event - - time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + $MOVE2SCREEN_TIME + 3 } - EvComm { - smooth_obj "LAN Option" 4 - start_time 0 - time $SMOOTH_OBJ_TIME - } - EvComm { - hide_obj "LAN Option" - start_time $SMOOTH_OBJ_TIME - time $HIDE_OBJ_TIME - } - EvComm { - ext_event $iEXT_INIT_SERVERS_LIST 0 - start_time 1 - } - EvComm { - ext_event $iEXT_FIRST_SEARCH 0 - start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } - } - EvComm { - move2screen "Search server screen" - start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + 1 } - time $MOVE2SCREEN_TIME - - event_line 2 - } - EvComm { - end_event - start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + $MOVE2SCREEN_TIME + 2 } - - event_line 2 - } - EvComm { - ext_event $iEXT_UPDATE_SERVERS_LIST 0 - start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + 1 } - - event_line 1 - } - EvComm { - move2screen "Search server screen" - start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + 2 } - time $MOVE2SCREEN_TIME - - event_line 1 - } - } - - #define OBJ1 "SELECTED_OBJ" - #define OBJ2 "LAN Option" - Event { - if_not_selected - key $VK_LBUTTON - key $VK_MOVE - - $EV_CHANGE_OBJ - } - - #define OBJ1 "LAN Option" - #define OBJ2 "Inet Option" - Event { - if_selected - key $VK_DOWN - key $VK_TAB - key $VK_UP - - $EV_CHANGE_OBJ - } - } - - Object "Inet Option" - { - align_x center - y { $SERVER_START_Y + $SERVER_DELTA_Y * 1 } - - selectable_obj - Element STRING { - align_x center - - terrain_num $TERRAIN2 - - font $MAIN_FNT - null_level $DEFAULT_NULL - string $iSTR_INTERNET - } - - Event { - if_selected - key $VK_SPACE - key $VK_RETURN - key $VK_LBUTTON - - time { $PRESS_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } - EvComm { - low_obj "Inet Option" - time $PRESS_OBJ_TIME - start_time 0 - } - EvComm { - move2screen "INet Host screen" - start_time $PRESS_OBJ_TIME - time $MOVE2SCREEN_TIME - } - } - Event { - if_not_selected - key $VK_RBUTTON - - time { $SMOOTH_OBJ_TIME + $PRESS_OBJ_TIME + $HIDE_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } - EvComm { - jump_obj "Inet Option" - start_time $PRESS_OBJ_TIME - } - EvComm { - smooth_obj "Inet Option" 4 - start_time $PRESS_OBJ_TIME - time $SMOOTH_OBJ_TIME - } - EvComm { - hide_obj "Inet Option" - start_time { $SMOOTH_OBJ_TIME + $PRESS_OBJ_TIME } - time $HIDE_OBJ_TIME - } - EvComm { - low_obj "SELECTED_OBJ" - start_time 0 - time $PRESS_OBJ_TIME - } - EvComm { - rise_obj "Inet Option" - start_time 0 - time $PRESS_OBJ_TIME - } - EvComm { - move2screen "INet Host screen" - start_time { $SMOOTH_OBJ_TIME + $PRESS_OBJ_TIME + $HIDE_OBJ_TIME } - time $MOVE2SCREEN_TIME - } - } - Event { - if_selected - key $VK_RBUTTON - - time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } - EvComm { - smooth_obj "Inet Option" 4 - start_time 0 - time $SMOOTH_OBJ_TIME - } - EvComm { - hide_obj "Inet Option" - start_time $SMOOTH_OBJ_TIME - time $HIDE_OBJ_TIME - } - EvComm { - move2screen "INet Host screen" - start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } - time $MOVE2SCREEN_TIME - } - } - - #define OBJ1 "SELECTED_OBJ" - #define OBJ2 "Inet Option" - Event { - if_not_selected - key $VK_LBUTTON - key $VK_MOVE - - $EV_CHANGE_OBJ - } - - #define OBJ1 "Inet Option" - #define OBJ2 "LAN Option" - Event { - if_selected - key $VK_DOWN - key $VK_TAB - key $VK_UP - - $EV_CHANGE_OBJ - } - } -} - -Screen "Create server screen" -{ - screen_offs 0 - - default_obj "Back Option" - - Object "TitleStr" - { - align_x center - align_y center - align_y_offs -100 -// y $TITLE_STR_Y - - Element STRING { - align_x center - - terrain_num $TERRAIN4 - - font 0 - null_level $DEFAULT_NULL - string $iSTR_CANT_CREATE - } - } - - Object "Back Option" - { - x $BACK_X - y $BACK_Y - - Element STRING { - align_x center - - terrain_num $TERRAIN2 - - font 0 - null_level $DEFAULT_NULL - string $iSTR_BACK - } - Event { - key $VK_LBUTTON - key $VK_ESCAPE - - time { $PRESS_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } - EvComm { - low_obj "Back Option" - time $PRESS_OBJ_TIME - start_time 0 - } - EvComm { - move2screen "Multiplayer screen" - start_time $PRESS_OBJ_TIME - time $MOVE2SCREEN_TIME - } - } - Event { - key $VK_RBUTTON - - time { $PRESS_OBJ_TIME + $SMOOTH_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } - EvComm { - smooth_obj "Back Option" 2 - start_time 0 - time $PRESS_OBJ_TIME - } - EvComm { - hide_obj "Back Option" - start_time $PRESS_OBJ_TIME - time $HIDE_OBJ_TIME - } - EvComm { - move2screen "Multiplayer screen" - start_time { $PRESS_OBJ_TIME + $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } - time $MOVE2SCREEN_TIME - } - } - } -} - - -#define SERVER_LIST_ITEM_EVENTS Event { \ - key $VK_LBUTTON \ - key $VK_RBUTTON \ - \ - multi_event \ - \ - time { $PRESS_OBJ_TIME + $MOVE2SCREEN_TIME + 3 } \ - EvComm { \ - low_obj $SERVER_LIST_ITEM \ - time $PRESS_OBJ_TIME \ - start_time 0 \ - } \ - EvComm { \ - ext_event $iEXT_CHOOSE_SERVER $SERVER_NUM \ - start_time 1 \ - } \ - EvComm { \ - move2screen "Identification screen" \ - start_time { $PRESS_OBJ_TIME + 1 } \ - time $MOVE2SCREEN_TIME \ - } \ - } - -Screen "Search server screen" -{ - screen_offs 800 - - default_obj "Back Option" - Object "TitleStr" - { - align_x center - y $TITLE_STR_Y - - Element STRING { - align_x center - - terrain_num $TERRAIN4 - - font 0 - null_level $DEFAULT_NULL - string $iSTR_LAN_Servers - } - } - - Object "Back Option" - { - x $SLIST_BACK_X - y $SLIST_BACK_Y - - Element STRING { - align_x center - - terrain_num $TERRAIN2 - - font 0 - null_level $DEFAULT_NULL - string $iSTR_BACK - } - Event { - key $VK_LBUTTON - key $VK_ESCAPE - - time { $PRESS_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } - EvComm { - low_obj "Back Option" - time $PRESS_OBJ_TIME - start_time 0 - } - EvComm { - move2screen "Server screen" - start_time $PRESS_OBJ_TIME - time $MOVE2SCREEN_TIME - } - } - Event { - key $VK_RBUTTON - - time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } - EvComm { - smooth_obj "Back Option" 2 - start_time 0 - time $SMOOTH_OBJ_TIME - } - EvComm { - hide_obj "Back Option" - start_time $SMOOTH_OBJ_TIME - time $HIDE_OBJ_TIME - } - EvComm { - move2screen "Server screen" - start_time { $HIDE_OBJ_TIME + $SMOOTH_OBJ_TIME } - time $MOVE2SCREEN_TIME - } - } - } - #define SERVER_LIST_ITEM "List00" - #define SERVER_NUM 0 - Object "List00" - { - align_x center - y { $SLIST_START_Y + $SLIST_DELTA_Y * 0 } - - Element STRING { - id "ServerStr0" - align_x center - - terrain_num $TERRAIN2 - - space 1 - font 3 - null_level $DEFAULT_NULL - string "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" - } - $SERVER_LIST_ITEM_EVENTS - } - #define SERVER_LIST_ITEM "List01" - #define SERVER_NUM 1 - Object "List01" - { - align_x center - y { $SLIST_START_Y + $SLIST_DELTA_Y * 1 } - - Element STRING { - id "ServerStr1" - align_x center - - terrain_num $TERRAIN2 - - space 1 - font 3 - null_level $DEFAULT_NULL - string "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" - } - $SERVER_LIST_ITEM_EVENTS - } - #define SERVER_LIST_ITEM "List02" - #define SERVER_NUM 2 - Object "List02" - { - align_x center - y { $SLIST_START_Y + $SLIST_DELTA_Y * 2 } - - Element STRING { - id "ServerStr2" - align_x center - - terrain_num $TERRAIN2 - - space 1 - font 3 - null_level $DEFAULT_NULL - string "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" - } - $SERVER_LIST_ITEM_EVENTS - } - #define SERVER_LIST_ITEM "List03" - #define SERVER_NUM 3 - Object "List03" - { - align_x center - y { $SLIST_START_Y + $SLIST_DELTA_Y * 3 } - - Element STRING { - id "ServerStr3" - align_x center - - terrain_num $TERRAIN2 - - space 1 - font 3 - null_level $DEFAULT_NULL - string "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" - } - $SERVER_LIST_ITEM_EVENTS - } - #define SERVER_LIST_ITEM "List04" - #define SERVER_NUM 4 - Object "List04" - { - align_x center - y { $SLIST_START_Y + $SLIST_DELTA_Y * 4 } - - Element STRING { - id "ServerStr4" - align_x center - - terrain_num $TERRAIN2 - - space 1 - font 3 - null_level $DEFAULT_NULL - string "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" - } - $SERVER_LIST_ITEM_EVENTS - } - - Object "Up Option" - { - x $Search_server_screen_Up_Option_PosX - y $Search_server_screen_Up_Option_PosY - - Element STRING { - align_x center - - terrain_num $TERRAIN4 - - font 0 - null_level $DEFAULT_NULL - string $iSTR_UP - } - Event { - key $VK_LBUTTON - - time { $SCALE_TIME * 2 + 1 } - EvComm { - low_obj "Up Option" - time $SCALE_TIME - start_time 0 - } - EvComm { - ext_event $iEXT_UP_SERVERS_LIST 0 - start_time $SCALE_TIME - } - EvComm { - rise_obj "Up Option" - time $SCALE_TIME - start_time $SCALE_TIME - } - } - Event { - key $VK_RBUTTON - - time { $SCALE_TIME * 2 + $SMOOTH_TIME * 2 + 1 } - EvComm { - smooth_obj "Up Option" 2 - start_time 0 - time $SMOOTH_TIME - } - EvComm { - scale_obj "Up Option" 128 - start_time $SMOOTH_TIME - time $SCALE_TIME - } - EvComm { - ext_event $iEXT_UP_SERVERS_LIST 0 - start_time { $SCALE_TIME + $SMOOTH_TIME } - } - EvComm { - smooth_obj "Up Option" 0 - start_time { $SCALE_TIME * 2 + $SMOOTH_TIME } - time $SMOOTH_TIME - } - EvComm { - rise_obj "Up Option" - start_time { $SCALE_TIME + $SMOOTH_TIME } - time $SCALE_TIME - } + shadow_size 20 + + Element STRING { + id "SlotStrTime7" + align_x center + + terrain_num $SLOT_TERRAIN + + space $SLOT_SPACE + font $SLOT_FONT + null_level $DEFAULT_NULL + + string "XXXXXXXXXXXXXXX" } } - Object "Down Option" + Object "_Slot08" { - x $Search_server_screen_Down_Option_PosX - y $Search_server_screen_Down_Option_PosY + align_x center + y { $SLOT_START_Y + $SLOT_DELTA_Y * 8 } + + space 0 + align_x_offs $SLOT_OFFS + not_unlock + + shadow_size 20 Element STRING { + id "SlotStrTime8" align_x center - terrain_num $TERRAIN4 + terrain_num $SLOT_TERRAIN - font 0 + space $SLOT_SPACE + font $SLOT_FONT null_level $DEFAULT_NULL - string $iSTR_DOWN - } - Event { - key $VK_LBUTTON - - time { $SCALE_TIME * 2 + 1 } - EvComm { - low_obj "Down Option" - time $SCALE_TIME - start_time 0 - } - EvComm { - ext_event $iEXT_DN_SERVERS_LIST 0 - start_time $SCALE_TIME - } - EvComm { - rise_obj "Down Option" - time $SCALE_TIME - start_time $SCALE_TIME - } - } - Event { - key $VK_RBUTTON - time { $SCALE_TIME * 2 + $SMOOTH_TIME * 2 + 1 } - EvComm { - smooth_obj "Down Option" 2 - start_time 0 - time $SMOOTH_TIME - } - EvComm { - scale_obj "Down Option" 128 - start_time $SMOOTH_TIME - time $SCALE_TIME - } - EvComm { - smooth_obj "Down Option" 0 - start_time { $SCALE_TIME * 2 + $SMOOTH_TIME } - time $SMOOTH_TIME - } - EvComm { - ext_event $iEXT_DN_SERVERS_LIST 0 - start_time { $SCALE_TIME + $SMOOTH_TIME } - } - EvComm { - rise_obj "Down Option" - start_time { $SCALE_TIME + $SMOOTH_TIME } - time $SCALE_TIME - } + string "XXXXXXXXXXXXXXX" } } - Object "Update Option" + + + Object "TitleStr" { -// x $UPDATE_LIST_X align_x center - y $UPDATE_LIST_Y + y $TITLE_STR_Y Element STRING { align_x center terrain_num $TERRAIN4 - font 0 + space $SLOT_SPACE + font $SLOT_FONT null_level $DEFAULT_NULL - string $iSTR_Update_List - } - Event { - key $VK_LBUTTON - - time { $SCALE_TIME * 2 + 23 } - EvComm { - low_obj "Update Option" - time $SCALE_TIME - start_time 0 - } - EvComm { - rise_obj "Update Option" - time $SCALE_TIME - start_time $SCALE_TIME - } - EvComm { - move2screen "Searching screen" - start_time { $SCALE_TIME * 2 } - time 10 - } - EvComm { - ext_event $iEXT_UPDATE_SERVERS_LIST 0 - start_time { $SCALE_TIME * 2 + 11 } - } - EvComm { - move2screen "Search server screen" - start_time { $SCALE_TIME * 2 + 12 } - time 10 - } - } - Event { - key $VK_RBUTTON - - time { $SCALE_TIME * 2 + $SMOOTH_TIME * 2 + 1 + 22 } - EvComm { - smooth_obj "Update Option" 2 - start_time 0 - time $SMOOTH_TIME - } - EvComm { - scale_obj "Update Option" 128 - start_time $SMOOTH_TIME - time $SCALE_TIME - } - EvComm { - smooth_obj "Update Option" 0 - start_time { $SCALE_TIME * 2 + $SMOOTH_TIME } - time $SMOOTH_TIME - } - EvComm { - rise_obj "Update Option" - start_time { $SCALE_TIME + $SMOOTH_TIME } - time $SCALE_TIME - } - EvComm { - move2screen "Searching screen" - start_time { $SCALE_TIME * 2 + $SMOOTH_TIME * 2 } - time 10 - } - EvComm { - ext_event $iEXT_UPDATE_SERVERS_LIST 0 - start_time { $SCALE_TIME * 2 + $SMOOTH_TIME * 2 + 10 } - } - EvComm { - move2screen "Search server screen" - start_time { $SCALE_TIME * 2 + $SMOOTH_TIME * 2 + 11 } - time 10 - } + string $iSTR_LOAD_GAME } } } +#define SERVER_LIST_ITEM_EVENTS Event { \ + key $VK_LBUTTON \ + key $VK_RBUTTON \ + \ + multi_event \ + \ + time { $PRESS_OBJ_TIME + $MOVE2SCREEN_TIME + 3 } \ + EvComm { \ + low_obj $SERVER_LIST_ITEM \ + time $PRESS_OBJ_TIME \ + start_time 0 \ + } \ + EvComm { \ + ext_event $iEXT_CHOOSE_SERVER $SERVER_NUM \ + start_time 1 \ + } \ + EvComm { \ + move2screen "Identification screen" \ + start_time { $PRESS_OBJ_TIME + 1 } \ + time $MOVE2SCREEN_TIME \ + } \ + } + + Screen "Searching screen" { screen_offs 0 @@ -4592,7 +3685,7 @@ Screen "Searching screen" terrain_num $TERRAIN2 - font 0 + font 3 null_level $DEFAULT_NULL string $iSTR_Please_wait } @@ -4630,7 +3723,7 @@ Screen "Configuration screen" start_time 0 } EvComm { - move2screen "Multiplayer screen" + move2screen "INet Host screen" start_time $PRESS_OBJ_TIME time $MOVE2SCREEN_TIME } @@ -4650,7 +3743,7 @@ Screen "Configuration screen" time $HIDE_OBJ_TIME } EvComm { - move2screen "Multiplayer screen" + move2screen "INet Host screen" start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } time $MOVE2SCREEN_TIME } @@ -4844,6 +3937,7 @@ Screen "Configuration screen" start_time { $TRIGGER_TIME + 1 } } } + } } @@ -4894,7 +3988,7 @@ Screen "Failed screen" start_time 0 } EvComm { - move2screen "Search server screen" + move2screen "INet Host screen" start_time $PRESS_OBJ_TIME time $MOVE2SCREEN_TIME } @@ -4914,7 +4008,7 @@ Screen "Failed screen" time $HIDE_OBJ_TIME } EvComm { - move2screen "Search server screen" + move2screen "INet Host screen" start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } time $MOVE2SCREEN_TIME } @@ -6954,7 +6048,7 @@ Screen "Game Params 0" // VAN-WAR space $PARAMS_SPACE font $PARAM_FNT null_level $DEFAULT_NULL - string "100" + string "90" } Event { key $VK_LBUTTON @@ -7266,7 +6360,7 @@ Screen "Game Params 1" // MECHOSOMA space $PARAMS_SPACE font $PARAM_FNT null_level $DEFAULT_NULL - string "10" + string "11" } Event { key $VK_LBUTTON @@ -7297,7 +6391,7 @@ Screen "Game Params 1" // MECHOSOMA space $PARAMS_SPACE font $PARAM_FNT null_level $DEFAULT_NULL - string "10" + string "11" } Event { key $VK_LBUTTON @@ -7344,7 +6438,7 @@ Screen "Game Params 1" // MECHOSOMA space $PARAMS_SPACE font $PARAM_FNT null_level $DEFAULT_NULL - string "10" + string "6" } Event { key $VK_LBUTTON @@ -7395,7 +6489,7 @@ Screen "Game Params 2" // PASSEMBLOSS space $PARAMS_SPACE font $PARAM_FNT null_level $DEFAULT_NULL - string "10" + string "7" } Event { key $VK_LBUTTON @@ -7403,7 +6497,7 @@ Screen "Game Params 2" // PASSEMBLOSS time 2 EvComm { - input_string "ChecksInputStrID" 3 + input_string "ChecksInputStrID" 4 time 2 } } @@ -8163,7 +7257,7 @@ Screen "Server Config screen" start_time 0 } EvComm { - move2screen "Multiplayer screen" + move2screen "INet Host screen" start_time $PRESS_OBJ_TIME time $MOVE2SCREEN_TIME } @@ -8187,7 +7281,7 @@ Screen "Server Config screen" time $HIDE_OBJ_TIME } EvComm { - move2screen "Multiplayer screen" + move2screen "INet Host screen" start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } time $MOVE2SCREEN_TIME } @@ -8554,7 +7648,7 @@ Screen "Server Info screen" start_time 0 } EvComm { - move2screen "Multiplayer screen" + move2screen "INet Host screen" start_time $PRESS_OBJ_TIME time $MOVE2SCREEN_TIME } @@ -8578,7 +7672,7 @@ Screen "Server Info screen" time $HIDE_OBJ_TIME } EvComm { - move2screen "Multiplayer screen" + move2screen "INet Host screen" start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } time $MOVE2SCREEN_TIME } @@ -9074,8 +8168,6 @@ Screen "Server Info screen" Screen "Chat screen" { screen_offs 0 - - block_global_obj default_obj "Server Option" Object "TitleStr" @@ -9901,7 +8993,7 @@ Screen "MultiGame Results screen" ext_event $iEXT_CHECK_END_FLAG 0 } EvComm { - move2screen "Multiplayer screen" + move2screen "INet Host screen" start_time $PRESS_OBJ_TIME time $MOVE2SCREEN_TIME @@ -9930,7 +9022,7 @@ Screen "MultiGame Results screen" time $HIDE_OBJ_TIME } EvComm { - move2screen "Multiplayer screen" + move2screen "INet Host screen" start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } time $MOVE2SCREEN_TIME } @@ -11232,14 +10324,14 @@ Screen "Joystick screen" Screen "INet Host screen" { - screen_offs 0 + screen_offs 800 default_obj "Back Option" Object "Back Option" { x $INet_Host_screen_Back_Option_PosX - y { $HOST_START_Y + $HOST_DELTA_Y * 6 } + y { $HOST_START_Y + $HOST_DELTA_Y * 7 - 18 } Element STRING { align_x center @@ -11261,7 +10353,7 @@ Screen "INet Host screen" start_time 0 } EvComm { - move2screen "Multiplayer screen" + move2screen "Main Screen" start_time $PRESS_OBJ_TIME time $MOVE2SCREEN_TIME } @@ -11281,7 +10373,7 @@ Screen "INet Host screen" time $HIDE_OBJ_TIME } EvComm { - move2screen "Multiplayer screen" + move2screen "Main Screen" start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } time $MOVE2SCREEN_TIME } @@ -11290,7 +10382,7 @@ Screen "INet Host screen" Object "Ok Option" { x $INet_Host_screen_Ok_Option_PosX - y { $HOST_START_Y + $HOST_DELTA_Y * 6 } + y { $HOST_START_Y + $HOST_DELTA_Y * 7 - 18 } Element STRING { align_x center @@ -11332,7 +10424,6 @@ Screen "INet Host screen" time $MOVE2SCREEN_TIME } } - Event { key $VK_RBUTTON @@ -11367,7 +10458,7 @@ Screen "INet Host screen" } } } - Object "TitleStr" + Object "TitleStr2" { align_x center y $TITLE_STR_Y @@ -11385,7 +10476,7 @@ Screen "INet Host screen" Object "IP_Str" { x $INet_Host_screen_IP_Str_PosX - y { $HOST_START_Y + $HOST_DELTA_Y * 2 } + y { $HOST_START_Y + $HOST_DELTA_Y * 3 } Element STRING { align_x center @@ -11401,7 +10492,7 @@ Screen "INet Host screen" Object "IP_Addr" { x $INet_Host_screen_IP_Addr_PosX - y { $HOST_START_Y + $HOST_DELTA_Y * 2 } + y { $HOST_START_Y + $HOST_DELTA_Y * 3 } Element STRING { id "IP_AddrID" @@ -11461,7 +10552,7 @@ Screen "INet Host screen" Object "ProxyStr" { x $INet_Host_screen_ProxyStr_PosX - y { $HOST_START_Y + $HOST_DELTA_Y * 3 } + y { $HOST_START_Y + $HOST_DELTA_Y * 4 } Element STRING { align_x center @@ -11477,7 +10568,7 @@ Screen "INet Host screen" Trigger "ProxyTrg" { x $INet_Host_screen_ProxyTrg_PosX - y { $HOST_START_Y + $HOST_DELTA_Y * 3 } + y { $HOST_START_Y + $HOST_DELTA_Y * 4 } num_state 2 State 0 STRING { @@ -11504,7 +10595,7 @@ Screen "INet Host screen" key $VK_LBUTTON key $VK_RBUTTON - time $TRIGGER_TIME + 2 } + time { $TRIGGER_TIME + 2 } EvComm { change_trigger "ProxyTrg" time $TRIGGER_TIME @@ -11518,7 +10609,7 @@ Screen "INet Host screen" Object "ProxyServerStr" { x $INet_Host_screen_ProxyServerStr_PosX - y { $HOST_START_Y + $HOST_DELTA_Y * 4 } + y { $HOST_START_Y + $HOST_DELTA_Y * 5 - 10 } not_unlock @@ -11537,7 +10628,7 @@ Screen "INet Host screen" Object "ProxyServerNameStr" { x $INet_Host_screen_ProxyServerNameStr_PosX - y { $HOST_START_Y + $HOST_DELTA_Y * 4 } + y { $HOST_START_Y + $HOST_DELTA_Y * 5 - 10 } not_unlock @@ -11550,14 +10641,66 @@ Screen "INet Host screen" space 1 font 3 null_level $DEFAULT_NULL - string "XXXXXXXXXXXXXXXXXXXX" + string "XXXXXXXXXXXXXXXXXXXX" + } + Event { + key $VK_LBUTTON + time 6 + + EvComm { + input_string "ProxyServerName" 21 + time 2 + } + EvComm { + ext_event $iEXT_INIT_PROXY 0 + start_time 5 + } + } + } + Object "ProxyPortStr" + { + x $INet_Host_screen_ProxyPortStr_PosX + y { $HOST_START_Y + $HOST_DELTA_Y * 6 - 15 } + + not_unlock + + Element STRING { + id "ProxyPortStrID" + align_x center + + terrain_num $TERRAIN2 + + space 1 + font 3 + null_level $DEFAULT_NULL + string $iSTR_SOCKS5_ProxyPort + } + } + Object "ProxyPortNumStr" + { + x $INet_Host_screen_ProxyPortNumStr_PosX + y { $HOST_START_Y + $HOST_DELTA_Y * 6 - 15 } + + not_unlock + + Element STRING { + id "ProxyPortNum" + align_x center + + number_text + terrain_num $TERRAIN4 + + space 1 + font 3 + null_level $DEFAULT_NULL + string "XXXXXXXXXX" } Event { key $VK_LBUTTON time 6 EvComm { - input_string "ProxyServerName" 21 + input_string "ProxyPortNum" 11 time 2 } EvComm { @@ -11566,58 +10709,117 @@ Screen "INet Host screen" } } } - Object "ProxyPortStr" + Object "TitleStr" { - x $INet_Host_screen_ProxyPortStr_PosX - y { $HOST_START_Y + $HOST_DELTA_Y * 5 } - - not_unlock + x { $INet_Host_screen_IP_Str_PosX - 85 } + y { $HOST_START_Y + $HOST_DELTA_Y * 2 + 5 } Element STRING { - id "ProxyPortStrID" align_x center terrain_num $TERRAIN2 - space 1 font 3 null_level $DEFAULT_NULL - string $iSTR_SOCKS5_ProxyPort + string $iSTR_SERVER_PORT } } - Object "ProxyPortNumStr" + Object "PortStr" { - x $INet_Host_screen_ProxyPortNumStr_PosX - y { $HOST_START_Y + $HOST_DELTA_Y * 5 } - - not_unlock + x { $INet_Host_screen_IP_Str_PosX + 45 } + y { $HOST_START_Y + $HOST_DELTA_Y * 2 + 5 } Element STRING { - id "ProxyPortNum" - align_x center + id "PortStrID" + + space 1 + align_x center + terrain_num $TERRAIN3 number_text - terrain_num $TERRAIN4 - space 1 font 3 null_level $DEFAULT_NULL - string "XXXXXXXXXX" + string "1292" } Event { key $VK_LBUTTON time 6 EvComm { - input_string "ProxyPortNum" 11 + input_string "PortStrID" 7 time 2 } EvComm { - ext_event $iEXT_INIT_PROXY 0 + ext_event $iEXT_INIT_PORT 0 start_time 5 } } } + Object "Default Option" + { + x { $INet_Host_screen_Port_iOption_PosX + 50 } + y { $HOST_START_Y + $HOST_DELTA_Y * 2 + 5 } + + Element STRING { + space 1 + align_x center + + terrain_num $TERRAIN2 + + font 3 + null_level $DEFAULT_NULL + string $iSTR_Default + } + Event { + key $VK_LBUTTON + + time { $PRESS_OBJ_TIME * 2 + 1 } + EvComm { + low_obj "Default Option" + time $PRESS_OBJ_TIME + start_time 0 + } + EvComm { + ext_event $iEXT_RESTORE_PORT 0 + start_time $PRESS_OBJ_TIME + } + EvComm { + rise_obj "Default Option" + time $PRESS_OBJ_TIME + start_time $PRESS_OBJ_TIME + } + } + Event { + key $VK_RBUTTON + + time { ( $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME ) * 2 + 1 } + EvComm { + smooth_obj "Default Option" 2 + start_time 0 + time $SMOOTH_OBJ_TIME + } + EvComm { + hide_obj "Default Option" + start_time $SMOOTH_OBJ_TIME + time $HIDE_OBJ_TIME + } + EvComm { + smooth_obj "Default Option" 0 + start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME * 2 } + time $SMOOTH_OBJ_TIME + } + EvComm { + ext_event $iEXT_RESTORE_PORT 0 + start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } + } + EvComm { + rise_obj "Default Option" + start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } + time $HIDE_OBJ_TIME + } + } + } } #define GAME_OBJECT align_x center \ @@ -12068,178 +11270,6 @@ Screen "HallOfFame screen" } } -Screen "Port screen" -{ - screen_offs 0 - - default_obj "Back Option" - - Object "TitleStr" - { - x $Port_screen_TitleStr_PosX - y $Port_screen_TitleStr_PosY - - Element STRING { - align_x center - - terrain_num $TERRAIN2 - - font 0 - null_level $DEFAULT_NULL - string $iSTR_Server_Port - } - } - - Object "Back Option" - { - x $Port_screen_Back_Option_PosX - y $Port_screen_Back_Option_PosY - - Element STRING { - align_x center - - terrain_num $TERRAIN2 - - font 0 - null_level $DEFAULT_NULL - string $iSTR_BACK - } - Event { - key $VK_LBUTTON - key $VK_ESCAPE - - time { $PRESS_OBJ_TIME + $MOVE2SCREEN_TIME } - - EvComm { - low_obj "Back Option" - time $PRESS_OBJ_TIME - start_time 0 - } - EvComm { - move2screen "Multiplayer screen" - start_time $PRESS_OBJ_TIME - time $MOVE2SCREEN_TIME - } - } - Event { - key $VK_RBUTTON - - time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME + $MOVE2SCREEN_TIME + 1 } - EvComm { - smooth_obj "Back Option" 2 - start_time 0 - time $SMOOTH_OBJ_TIME - } - EvComm { - hide_obj "Back Option" - start_time $SMOOTH_OBJ_TIME - time $HIDE_OBJ_TIME - } - EvComm { - move2screen "Multiplayer screen" - start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } - time $MOVE2SCREEN_TIME - } - } - } - Object "PortStr" - { - x $Port_screen_PortStr_PosX - y $Port_screen_TitleStr_PosY - - Element STRING { - id "PortStrID" - - space 1 - align_x center - - terrain_num $TERRAIN4 - number_text - - font 0 - null_level $DEFAULT_NULL - string "1292" - } - Event { - key $VK_LBUTTON - time 6 - - EvComm { - input_string "PortStrID" 7 - time 2 - } - EvComm { - ext_event $iEXT_INIT_PORT 0 - start_time 5 - } - } - } - Object "Default Option" - { - x $Port_screen_Default_Option_PosX - y $Port_screen_Default_Option_PosY - - Element STRING { - space 1 - align_x center - - terrain_num $TERRAIN2 - - font 0 - null_level $DEFAULT_NULL - string $iSTR_Default - } - Event { - key $VK_LBUTTON - - time { $PRESS_OBJ_TIME * 2 + 1 } - EvComm { - low_obj "Default Option" - time $PRESS_OBJ_TIME - start_time 0 - } - EvComm { - ext_event $iEXT_RESTORE_PORT 0 - start_time $PRESS_OBJ_TIME - } - EvComm { - rise_obj "Default Option" - time $PRESS_OBJ_TIME - start_time $PRESS_OBJ_TIME - } - } - Event { - key $VK_RBUTTON - - time { ( $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME ) * 2 + 1 } - EvComm { - smooth_obj "Default Option" 2 - start_time 0 - time $SMOOTH_OBJ_TIME - } - EvComm { - hide_obj "Default Option" - start_time $SMOOTH_OBJ_TIME - time $HIDE_OBJ_TIME - } - EvComm { - smooth_obj "Default Option" 0 - start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME * 2 } - time $SMOOTH_OBJ_TIME - } - EvComm { - ext_event $iEXT_RESTORE_PORT 0 - start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } - } - EvComm { - rise_obj "Default Option" - start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } - time $HIDE_OBJ_TIME - } - } - } -} - Screen "Identification screen2" { screen_offs 0 @@ -12272,7 +11302,7 @@ Screen "Identification screen2" start_time 0 } EvComm { - move2screen "Multiplayer screen" + move2screen "INet Host screen" start_time $PRESS_OBJ_TIME time $MOVE2SCREEN_TIME } @@ -12292,7 +11322,7 @@ Screen "Identification screen2" time $HIDE_OBJ_TIME } EvComm { - move2screen "Multiplayer screen" + move2screen "INet Host screen" start_time { $SMOOTH_OBJ_TIME + $HIDE_OBJ_TIME } time $MOVE2SCREEN_TIME } diff --git a/data/iscreen/scripts/mmenu1.inc b/data/iscreen/scripts/mmenu1.inc index 4b5c4a0a..794df4b2 100644 --- a/data/iscreen/scripts/mmenu1.inc +++ b/data/iscreen/scripts/mmenu1.inc @@ -5,9 +5,23 @@ #define Graphics_screen_CleanUpObj_PosX $Graphics_screen_CleanUpObj_PosX1 #define Graphics_screen_InUseObj_PosX $Graphics_screen_InUseObj_PosX1 +#define DOBA_TRIG_X $DOBA_TRIG_X1 + #define EXIT_X $EXIT_X1 #define EXIT_Y $EXIT_Y1 +#define CREDITS_X $CREDITS_X1 +#define CREDITS_Y $CREDITS_Y1 + +#define VERSION_NAZVA_X $VERSION_NAZVA_X1 +#define VERSION_NAZVA_Y $VERSION_NAZVA_Y1 + +#define VERSION_CIFRA_X $VERSION_CIFRA_X1 +#define VERSION_CIFRA_Y $VERSION_CIFRA_Y1 + +#define INet_Host_screen_Port_iOption_PosX $INet_Host_screen_Port_iOption_PosX1 + + #define DESTR_TRG_X $DESTR_TRG_X1 #define UP_LIST_X $UP_LIST_X1 diff --git a/data/iscreen/scripts/mmenu2.inc b/data/iscreen/scripts/mmenu2.inc index deab8afd..c8ca47df 100644 --- a/data/iscreen/scripts/mmenu2.inc +++ b/data/iscreen/scripts/mmenu2.inc @@ -5,9 +5,23 @@ #define Graphics_screen_CleanUpObj_PosX $Graphics_screen_CleanUpObj_PosX2 #define Graphics_screen_InUseObj_PosX $Graphics_screen_InUseObj_PosX2 +#define DOBA_TRIG_X $DOBA_TRIG_X2 + #define EXIT_X $EXIT_X2 #define EXIT_Y $EXIT_Y2 +#define CREDITS_X $CREDITS_X2 +#define CREDITS_Y $CREDITS_Y2 + +#define VERSION_NAZVA_X $VERSION_NAZVA_X2 +#define VERSION_NAZVA_Y $VERSION_NAZVA_Y2 + +#define VERSION_CIFRA_X $VERSION_CIFRA_X2 +#define VERSION_CIFRA_Y $VERSION_CIFRA_Y2 + +#define INet_Host_screen_Port_iOption_PosX $INet_Host_screen_Port_iOption_PosX2 + + #define DESTR_TRG_X $DESTR_TRG_X2 #define UP_LIST_X $UP_LIST_X2 diff --git a/data/iscreen/scripts/strings.inc b/data/iscreen/scripts/strings.inc index 281bf0d8..434a7b0a 100644 --- a/data/iscreen/scripts/strings.inc +++ b/data/iscreen/scripts/strings.inc @@ -23,7 +23,7 @@ #define iSTR_OPTIONS2 "ЌЂ‘’ђЋ‰Љ€" #define iSTR_CREDITS1 "CREDITS" -#define iSTR_CREDITS2 "Ђ‚’Ћђ›" +#define iSTR_CREDITS2 "Ћ ‘Ћ‡„Ђ’…‹џ•" #define iSTR_EXIT1 "EXIT" #define iSTR_EXIT2 "‚›•Ћ„" @@ -120,6 +120,19 @@ #define iSTR_CLEAN_UP2 "Ћ‘‚ЋЃЋ„€’њ!" +#define iSTR_CYCLE_DOBA1 "DOBA CYCLES:" +#define iSTR_CYCLE_DOBA2 "–€Љ‹› „ЋЃ›:" + +#define iSTR_CYCLE_DOBA_NEW1 "NEW" +#define iSTR_CYCLE_DOBA_NEW2 "ЌЋ‚›…" + +#define iSTR_CYCLE_DOBA_OLD1 "OLD" +#define iSTR_CYCLE_DOBA_OLD2 "‘’Ђђ›…" + +#define iSTR_CYCLE_DOBA_CLASSIC1 "VANILLA" +#define iSTR_CYCLE_DOBA_CLASSIC2 "‚ЂЌ€‹њЌ›…" + + #define iSTR_Sound_Options1 "Sound Options" #define iSTR_Sound_Options2 "Ќ бва®©Є  §ўгЄ " @@ -160,7 +173,7 @@ #define iSTR_Camera2 "Љ ¬Ґа " #define iSTR_MultiplayerAndMisc1 "Multiplayer and misc." -#define iSTR_MultiplayerAndMisc2 "‘ҐвҐў п ЁЈа  Ё ¤агЈ®Ґ" +#define iSTR_MultiplayerAndMisc2 "‘ҐвҐў п ЁЈа  Ё €­®Ґ" #define iSTR_TO_MENU1 "TO MENU" #define iSTR_TO_MENU2 "‚ Њ…Ќћ" @@ -172,16 +185,16 @@ #define iSTR_JOIN_SERVER2 "ЌЂ‰’€ ‘…ђ‚…ђ" #define iSTR_CREATE_SERVER1 "CREATE SERVER" -#define iSTR_CREATE_SERVER2 "‘Ћ‡„Ђ’њ ‘…ђ‚…ђ" +#define iSTR_CREATE_SERVER2 "•Ћ‘’" #define iSTR_PLAYER_SETUP1 "PLAYER SETUP" #define iSTR_PLAYER_SETUP2 "ЌЂ‘’ђЋ€’њ €ѓђЋЉЂ" -#define iSTR_SERVER_PORT1 "SET SERVER PORT" -#define iSTR_SERVER_PORT2 "ЏЋђ’ ‘…ђ‚…ђЂ" +#define iSTR_SERVER_PORT1 "PORT:" +#define iSTR_SERVER_PORT2 "ЏЋђ’:" #define iSTR_Default1 "RESTORE" -#define iSTR_Default2 "‚Ћ‘’ЂЌЋ‚€’њ" +#define iSTR_Default2 "‚…ђЌ“’њ" #define iSTR_Server_Port1 "Server Port:" #define iSTR_Server_Port2 "Џ®ав бҐаўҐа :" @@ -193,11 +206,11 @@ #define iSTR_LAN1 "LAN" #define iSTR_LAN2 "‹ЋЉЂ‹њЌЂџ ‘…’њ" -#define iSTR_INTERNET1 "INTERNET" -#define iSTR_INTERNET2 "€Ќ’…ђЌ…’" +#define iSTR_INTERNET1 "Search" +#define iSTR_INTERNET2 "Џ®ЁбЄ бҐаўҐа®ў" #define iSTR_CANT_CREATE1 "Can't create server..." -#define iSTR_CANT_CREATE2 "ЌҐў®§¬®¦­® б®§¤ вм бҐаўҐа..." +#define iSTR_CANT_CREATE2 "ЋиЁЎЄ , б«ҐЇ®Є Ї®ўаҐ¦¤с­..." #define iSTR_LAN_Servers1 "LAN Servers" @@ -210,13 +223,13 @@ #define iSTR_DOWN2 "‚Ќ€‡" #define iSTR_Update_List1 "Update List" -#define iSTR_Update_List2 "ЋЎ­®ўЁвм ‘ЇЁб®Є" +#define iSTR_Update_List2 "ЋЎ­®ўЁвм бЇЁб®Є" #define iSTR_Searching_Servers1 "Searching Servers" -#define iSTR_Searching_Servers2 "Џ®ЁбЄ ‘ҐаўҐа®ў" +#define iSTR_Searching_Servers2 "ЏЋ€‘Љ ‘…ђ‚…ђЋ‚ —…ђ…‡ ‹€Ќ‡“" #define iSTR_Please_wait1 "Please wait" -#define iSTR_Please_wait2 "†¤ЁвҐ" +#define iSTR_Please_wait2 "†¤ЁвҐ ᮥ¤Ё­Ґ­Ёп" #define iSTR_Player_Settings1 "Player Settings" @@ -238,7 +251,7 @@ #define iSTR_BLUE2 "‘€Ќ€‰" #define iSTR_GREEN1 "GREEN" -#define iSTR_GREEN2 "‡…‹…Ќ›‰" +#define iSTR_GREEN2 "‡…‹рЌ›‰" #define iSTR_RED1 "RED" #define iSTR_RED2 "ЉђЂ‘Ќ›‰" @@ -256,11 +269,11 @@ #define iSTR_CAMOUFLAGE2 "ЉЂЊ“”‹џ†" #define iSTR_PATROL1 "PATROL" -#define iSTR_PATROL2 "ЏЂ’ђ“‹њЌ›‰" +#define iSTR_PATROL2 "ЏЂ’ђ“‹њ" #define iSTR_Connection_failed1 "Connection failed" -#define iSTR_Connection_failed2 "‘Ў®© Ї®¤Є«о祭Ёп" +#define iSTR_Connection_failed2 "‘Ў®© ᮥ¤Ё­Ґ­Ёп" #define iSTR_OK1 "OK" #define iSTR_OK2 "ЋЉ" @@ -278,8 +291,8 @@ #define iSTR_RESTORE_ALL2 "‘ЃђЋ‘€’њ ‚‘р" -#define iSTR_SELECT_GAME1 "SELECT GAME" -#define iSTR_SELECT_GAME2 "‘ЇЁб®Є „®бвгЇ­ле €Ја" +#define iSTR_SELECT_GAME1 "SELECT MODE" +#define iSTR_SELECT_GAME2 "‘ЇЁб®Є „®бвгЇ­ле ђҐ¦Ё¬®ў" #define iSTR_Nascency1 "Nascency:" #define iSTR_Nascency2 "ђ®¦¤Ґ­ЁҐ:" // whats that? An artificial word - @@ -313,28 +326,28 @@ #define iSTR_World1 "World:" #define iSTR_World2 "ЊЁа:" -#define iSTR_Nymbos1 "Nymbos" -#define iSTR_Nymbos2 "ЌЁ¬Ў®б" +#define iSTR_Nymbos1 "Nymbos:" +#define iSTR_Nymbos2 "ЌЁ¬Ў®б:" -#define iSTR_Heroin1 "Heroin" -#define iSTR_Heroin2 "ѓҐа®Ё­" +#define iSTR_Heroin1 "Heroin:" +#define iSTR_Heroin2 "ѓҐа®Ё­:" -#define iSTR_Toxick1 "Toxick" -#define iSTR_Toxick2 "’®ЄбЁЄ" +#define iSTR_Toxick1 "Toxick:" +#define iSTR_Toxick2 "’®ЄбЁЄ:" #define iSTR_Phlegma1 "Phlegma" -#define iSTR_Phlegma2 "”«ҐЈ¬ " +#define iSTR_Phlegma2 "”«ҐЈ¬ :" -#define iSTR_Shrub1 "Shrub" -#define iSTR_Shrub2 "Љгбв" +#define iSTR_Shrub1 "Shrub:" +#define iSTR_Shrub2 "Љгбв:" -#define iSTR_Poponka1 "Poponka" -#define iSTR_Poponka2 "Џ®Ї®­Є " +#define iSTR_Poponka1 "Poponka:" +#define iSTR_Poponka2 "Џ®Ї®­Є :" #define iSTR_One_at_a_time1 "One at a time:" -#define iSTR_One_at_a_time2 "‘Є®«мЄ® ивгЄ §  а §:" +#define iSTR_One_at_a_time2 "Њ ЄбЁ¬г¬ в®ў а  §  а §:" -#define iSTR_Checkpoints_Number1 "Checkpoints Number:" +#define iSTR_Checkpoints_Number1 "Checkpoints:" #define iSTR_Checkpoints_Number2 "—Ёб«® нв Ї®ў:" #define iSTR_Unique_Mechos1 "Unique Mechos:" @@ -357,7 +370,7 @@ #define iSTR_IDENTIFICATION1 "IDENTIFICATION" -#define iSTR_IDENTIFICATION2 "€Ќ„…Ќ’€”€ЉЂ–€џ" +#define iSTR_IDENTIFICATION2 "€„…Ќ’€”€ЉЂ–€џ" #define iSTR_PASSWORD1 "PASSWORD" #define iSTR_PASSWORD2 "ЏЂђЋ‹њ" @@ -372,7 +385,7 @@ #define iSTR_NAME22 "€Њџ:" #define iSTR_GAME1 "GAME:" -#define iSTR_GAME2 "€ѓђЂ:" +#define iSTR_GAME2 "ђ…†€Њ:" #define iSTR_THE_SERVER_HAS_ALREADY1 "THE SERVER HAS ALREADY" @@ -382,7 +395,7 @@ #define iSTR_BEEN_CONFIGURED_BY2 "“†… ‘ЉЋЌ”€ѓ“ђ€ђЋ‚ЂЌ" #define iSTR_ANOTHER_PLAYER1 "ANOTHER PLAYER!" -#define iSTR_ANOTHER_PLAYER2 "„ђ“ѓ€Њ €ѓђЋЉЋЊ!" +#define iSTR_ANOTHER_PLAYER2 "„ђ“ѓ€Њ ЉЋ‹…‘Ќ€ЉЋЊ!" #define iSTR_Server_Info1 "Server Info" #define iSTR_Server_Info2 "’ҐЄгй п €Ја " @@ -397,15 +410,15 @@ #define iSTR_Chat_Room1 "Chat Room" #define iSTR_Chat_Room2 "— в" -#define iSTR_SERVER_INFO1 "SERVER INFO" -#define iSTR_SERVER_INFO2 "’…Љ“™Ђџ €ѓђЂ" +#define iSTR_SERVER_INFO1 "BACK" +#define iSTR_SERVER_INFO2 "ЌЂ‡Ђ„" -#define iSTR_HOST_NAME1 "HOST NAME:" -#define iSTR_HOST_NAME2 "€Њџ ‘…ђ‚…ђЂ:" +#define iSTR_HOST_NAME1 "SERVER NAME:" +#define iSTR_HOST_NAME2 "Ђ„ђ…‘ ‘…ђ‚…ђЂ:" -#define iSTR_Internet_Servers1 "Internet Servers" -#define iSTR_Internet_Servers2 "‘ҐаўҐал €­вҐа­Ґв" +#define iSTR_Internet_Servers1 "List Available Games" +#define iSTR_Internet_Servers2 "‘ЇЁб®Є „®бвгЇ­ле €Ја" #define iSTR_Game_Results1 "Game Results" @@ -440,7 +453,7 @@ #define iSTR_ACHTUNG2 "‚Ќ€ЊЂЌ€…" #define iSTR_VANGERS_APPROACHING1 "VANGERS APPROACHING" -#define iSTR_VANGERS_APPROACHING2 "‘Ћ…„€Ќџ…Њ ‘ ‚Ђ�€Њ ‚ЂЌѓ…ђЋЊ" +#define iSTR_VANGERS_APPROACHING2 "‘®Ґ¤Ґ­пҐ¬ б ‚ иЁ¬ ‚ ­ЈҐа®¬" #define iSTR_Genesis1 "Genesis" @@ -514,7 +527,7 @@ #define iSTR_Fire_weapon_42 "‡ ЇгбЄ вҐа¬Ё­ в®а " #define iSTR_Full_screen1 "Toggle UI" -#define iSTR_Full_screen2 "ЋвЄ«./ўЄ«. Ё­вҐа䥩б" +#define iSTR_Full_screen2 "Џ®Є § Ё­вҐа䥩б " #define iSTR_Reduce_view1 "Reduce View" #define iSTR_Reduce_view2 "“¬Ґ­миЁвм ®Ў§®а" @@ -565,7 +578,7 @@ #define iSTR_MECHOSOMA2 "Њ…•Ћ‘ЋЊЂ" #define iSTR_PASSEMBLOSS1 "PASSEMBLOSS" -#define iSTR_PASSEMBLOSS2 "ЏЂ‘‘…ЊЃ‹Ћ‘" +#define iSTR_PASSEMBLOSS2 "ЏЂ‘‘…ЊЃ‹Ћ‘‘" #define iSTR_HUNTAGE1 "HUNTAGE" #define iSTR_HUNTAGE2 "•ЂЌ’ќ‰„†" @@ -641,7 +654,7 @@ #define iSTR_MaxTime2 "‚६п:" #define iSTR_MaxKills1 "Max Kills:" -#define iSTR_MaxKills2 "Њ ЄбЁ¬г¬ Ї®ЎҐ¤:" +#define iSTR_MaxKills2 "“ЎЁ©бвў ¤«п Ї®ЎҐ¤л:" #define iSTR_GameInfo1 "CURRENT GAME" #define iSTR_GameInfo2 "’…Љ“™Ђџ €ѓђЂ" @@ -679,6 +692,7 @@ #define iSTR_CreditsPathG1 "resource/iscreen/text/eng/credits7.txt" #define iSTR_CreditsPathG2 "resource/iscreen/text/rus/credits7.txt" + #define iSTR_CreditsPathH1 "resource/iscreen/text/eng/credits8.txt" #define iSTR_CreditsPathH2 "resource/iscreen/text/rus/credits8.txt" @@ -688,3 +702,33 @@ #define iSTR_CreditsPathIB1 "resource/iscreen/text/eng/credits92.txt" #define iSTR_CreditsPathIB2 "resource/iscreen/text/rus/credits92.txt" +#define iSTR_TITLE_AVTORS1 "MOD AUTHORS" +#define iSTR_TITLE_AVTORS2 "Ђ‚’Ћђ› ‘‹…ЏЉЂ" + +#define iSTR_1_AVTORS1 "Tstis[kiv]" +#define iSTR_1_AVTORS2 "Tstis[kiv]" + +#define iSTR_2_AVTORS1 "xiada[kiv]" +#define iSTR_2_AVTORS2 "xiada[kiv]" + +#define iSTR_3_AVTORS1 "Haedes[kiv]" +#define iSTR_3_AVTORS2 "ЂЁ¤[kiv]" + + +#define iSTR_1b_AVTORS1 "Creator" +#define iSTR_1b_AVTORS2 "€­д-‘®§¤ вҐ«м" + +#define iSTR_2b_AVTORS1 "Junior author" +#define iSTR_2b_AVTORS2 "€­д-‘® ўв®а" + +#define iSTR_3b_AVTORS1 "Just a Haedes" +#define iSTR_3b_AVTORS2 "Џа®бв® €­д-ЂЁ¤" + +#define iSTR_PROMOD01 "resource/iscreen/text/eng/promod0.txt" +#define iSTR_PROMOD02 "resource/iscreen/text/rus/promod0.txt" + +#define iSTR_PROMOD11 "resource/iscreen/text/eng/promod1.txt" +#define iSTR_PROMOD12 "resource/iscreen/text/rus/promod1.txt" + +#define iSTR_MOREA1 "MORE" +#define iSTR_MOREA2 "ЏЋ„ђЋЃЌ……" diff --git a/data/iscreen/scripts/strings1.inc b/data/iscreen/scripts/strings1.inc index b2de4ef2..3a5357d2 100644 --- a/data/iscreen/scripts/strings1.inc +++ b/data/iscreen/scripts/strings1.inc @@ -14,6 +14,18 @@ #define iSTR_MAIN_MENU $iSTR_MAIN_MENU1 #define iSTR_HALL_OF_FAME $iSTR_HALL_OF_FAME1 +#define iSTR_TITLE_AVTORS $iSTR_TITLE_AVTORS1 +#define iSTR_1_AVTORS $iSTR_1_AVTORS1 +#define iSTR_2_AVTORS $iSTR_2_AVTORS1 +#define iSTR_3_AVTORS $iSTR_3_AVTORS1 +#define iSTR_1b_AVTORS $iSTR_1b_AVTORS1 +#define iSTR_2b_AVTORS $iSTR_2b_AVTORS1 +#define iSTR_3b_AVTORS $iSTR_3b_AVTORS1 + +#define iSTR_PROMOD0 $iSTR_PROMOD01 +#define iSTR_PROMOD1 $iSTR_PROMOD11 +#define iSTR_MOREA $iSTR_MOREA1 + #define iSTR_Options $iSTR_Options1 #define iSTR_GRAPHICS $iSTR_GRAPHICS1 #define iSTR_SOUND $iSTR_SOUND1 @@ -39,6 +51,11 @@ #define iSTR_DISK_SPACE_IN_USE $iSTR_DISK_SPACE_IN_USE1 #define iSTR_CLEAN_UP $iSTR_CLEAN_UP1 +#define iSTR_CYCLE_DOBA $iSTR_CYCLE_DOBA1 +#define iSTR_CYCLE_DOBA_NEW $iSTR_CYCLE_DOBA_NEW1 +#define iSTR_CYCLE_DOBA_OLD $iSTR_CYCLE_DOBA_OLD1 +#define iSTR_CYCLE_DOBA_CLASSIC $iSTR_CYCLE_DOBA_CLASSIC1 + #define iSTR_Sound_Options $iSTR_Sound_Options1 #define iSTR_SOUND_EFFECTS $iSTR_SOUND_EFFECTS1 #define iSTR_MUSIC $iSTR_MUSIC1 @@ -240,6 +257,20 @@ #define iSTR_JoystickGamePad $iSTR_JoystickGamePad1 #define iSTR_JoystickJoystick $iSTR_JoystickJoystick1 #define iSTR_JoystickSteeringWheel $iSTR_JoystickSteeringWheel1 +#define iSTR_CreditsPathA $iSTR_CreditsPathA1 +#define iSTR_CreditsPathB $iSTR_CreditsPathB1 +#define iSTR_CreditsPathCA $iSTR_CreditsPathCA1 +#define iSTR_CreditsPathCB $iSTR_CreditsPathCB1 +#define iSTR_CreditsPathDA $iSTR_CreditsPathDA1 +#define iSTR_CreditsPathDB $iSTR_CreditsPathDB1 +#define iSTR_CreditsPathEA $iSTR_CreditsPathEA1 +#define iSTR_CreditsPathEB $iSTR_CreditsPathEB1 +#define iSTR_CreditsPathF $iSTR_CreditsPathF1 +#define iSTR_CreditsPathG $iSTR_CreditsPathG1 +#define iSTR_CreditsPathH $iSTR_CreditsPathH1 +#define iSTR_CreditsPathIA $iSTR_CreditsPathIA1 +#define iSTR_CreditsPathIB $iSTR_CreditsPathIB1 + #define iSTR_JoystickAlternFnc $iSTR_JoystickAlternFnc1 #define iSTR_JoystickBUTTON1 $iSTR_JoystickBUTTON11 #define iSTR_JoystickBUTTON2 $iSTR_JoystickBUTTON21 diff --git a/data/iscreen/scripts/strings2.inc b/data/iscreen/scripts/strings2.inc index d66354a6..3446699b 100644 --- a/data/iscreen/scripts/strings2.inc +++ b/data/iscreen/scripts/strings2.inc @@ -14,6 +14,18 @@ #define iSTR_MAIN_MENU $iSTR_MAIN_MENU2 #define iSTR_HALL_OF_FAME $iSTR_HALL_OF_FAME2 +#define iSTR_TITLE_AVTORS $iSTR_TITLE_AVTORS2 +#define iSTR_1_AVTORS $iSTR_1_AVTORS2 +#define iSTR_2_AVTORS $iSTR_2_AVTORS2 +#define iSTR_3_AVTORS $iSTR_3_AVTORS2 +#define iSTR_1b_AVTORS $iSTR_1b_AVTORS2 +#define iSTR_2b_AVTORS $iSTR_2b_AVTORS2 +#define iSTR_3b_AVTORS $iSTR_3b_AVTORS2 + +#define iSTR_PROMOD0 $iSTR_PROMOD02 +#define iSTR_PROMOD1 $iSTR_PROMOD12 +#define iSTR_MOREA $iSTR_MOREA2 + #define iSTR_Options $iSTR_Options2 #define iSTR_GRAPHICS $iSTR_GRAPHICS2 #define iSTR_SOUND $iSTR_SOUND2 @@ -39,6 +51,11 @@ #define iSTR_DISK_SPACE_IN_USE $iSTR_DISK_SPACE_IN_USE2 #define iSTR_CLEAN_UP $iSTR_CLEAN_UP2 +#define iSTR_CYCLE_DOBA $iSTR_CYCLE_DOBA2 +#define iSTR_CYCLE_DOBA_NEW $iSTR_CYCLE_DOBA_NEW2 +#define iSTR_CYCLE_DOBA_OLD $iSTR_CYCLE_DOBA_OLD2 +#define iSTR_CYCLE_DOBA_CLASSIC $iSTR_CYCLE_DOBA_CLASSIC2 + #define iSTR_Sound_Options $iSTR_Sound_Options2 #define iSTR_SOUND_EFFECTS $iSTR_SOUND_EFFECTS2 #define iSTR_MUSIC $iSTR_MUSIC2 @@ -242,6 +259,19 @@ #define iSTR_JoystickSteeringWheel $iSTR_JoystickSteeringWheel2 #define iSTR_JoystickAlternFnc $iSTR_JoystickAlternFnc2 #define iSTR_JoystickBUTTON1 $iSTR_JoystickBUTTON12 +#define iSTR_CreditsPathA $iSTR_CreditsPathA2 +#define iSTR_CreditsPathB $iSTR_CreditsPathB2 +#define iSTR_CreditsPathCA $iSTR_CreditsPathCA2 +#define iSTR_CreditsPathCB $iSTR_CreditsPathCB2 +#define iSTR_CreditsPathDA $iSTR_CreditsPathDA2 +#define iSTR_CreditsPathDB $iSTR_CreditsPathDB2 +#define iSTR_CreditsPathEA $iSTR_CreditsPathEA2 +#define iSTR_CreditsPathEB $iSTR_CreditsPathEB2 +#define iSTR_CreditsPathF $iSTR_CreditsPathF2 +#define iSTR_CreditsPathG $iSTR_CreditsPathG2 +#define iSTR_CreditsPathH $iSTR_CreditsPathH2 +#define iSTR_CreditsPathIA $iSTR_CreditsPathIA2 +#define iSTR_CreditsPathIB $iSTR_CreditsPathIB2 #define iSTR_JoystickBUTTON2 $iSTR_JoystickBUTTON22 #define iSTR_JoystickBUTTON3 $iSTR_JoystickBUTTON32 #define iSTR_JoystickBUTTON4 $iSTR_JoystickBUTTON42 diff --git a/data/iscreen/scripts/tutorial.inc b/data/iscreen/scripts/tutorial.inc index 4330aef8..8003a1d9 100644 Binary files a/data/iscreen/scripts/tutorial.inc and b/data/iscreen/scripts/tutorial.inc differ diff --git a/data/iscreen/temp.scr b/data/iscreen/temp.scr deleted file mode 100644 index c081ed38..00000000 --- a/data/iscreen/temp.scr +++ /dev/null @@ -1,3497 +0,0 @@ - - -// Defines... -#define ACS_NUM_SLOTS 8 - -// Frame IDs... -#define ACS_MAX_FRAME -1 - -// IDs... -#define ACS_PAUSE_SCREEN1 1 -#define ACS_PAUSE_SCREEN2 2 -#define ACS_SAVE_SCREEN0 3 -#define ACS_SAVE_SCREEN1 4 -#define ACS_SAVE_SCREEN2 5 - -#define ACS_RESUME_GAME 6 -#define ACS_ABORT_GAME 7 -#define ACS_TUTORIAL_MODE 8 -#define ACS_MUSIC_MODE 9 -#define ACS_SOUND_MODE 10 -#define ACS_MUSIC_VOLUME 11 -#define ACS_SOUND_VOLUME 12 - -#define ACS_VOLUME_SCROLLER 13 -#define ACS_PAUSE_BACK0 14 - -#define ACS_SAVE_BACK 15 -#define ACS_SAVE_SLOT0 16 -#define ACS_SAVE_SLOT1 17 -#define ACS_SAVE_SLOT2 18 -#define ACS_SAVE_SLOT3 19 -#define ACS_SAVE_SLOT4 20 -#define ACS_SAVE_SLOT5 21 -#define ACS_SAVE_SLOT6 22 -#define ACS_SAVE_SLOT7 23 -#define ACS_SAVE_OK 24 -#define ACS_SAVE_CANCEL 25 - -#define ACS_PAUSE_BACK1 26 - -#define ACS_AUTORUN_MODE 27 - -#define ACS_PAUSE_TEXT 28 -#define ACS_SOUND_TEXT 29 -#define ACS_MUSIC_TEXT 30 -#define ACS_TUTORIAL_TEXT 31 -#define ACS_AUTORUN_TEXT 32 -#define ACS_SVOLUME_TEXT 33 -#define ACS_MVOLUME_TEXT 34 - -#define ACS_VOLUME_S_RES 35 - -#define ACS_SAVE_STRING 36 - - -// Some special keys... -#define ACS_STARTUP_KEY 0x1001 - -// aciScreenEventCommand::code values... -#define ACS_SET_RESOURCE 0 -#define ACS_EXEC_SEQUENCE 1 -#define ACS_EXT_EVENT 2 -#define ACS_EXIT 3 -#define ACS_CHANGE_SCROLLER 4 -#define ACS_INPUT_STRING 5 -#define ACS_CHANGE_STR_STATE 6 - -// External events... -#define ACS_GLOBAL_EXIT 0 - -#define ACS_SET_SOUND_MODE 1 -#define ACS_SET_MUSIC_MODE 2 -#define ACS_SET_SOUND_VOLUME 3 -#define ACS_SET_MUSIC_VOLUME 4 -#define ACS_SET_TUTORIAL_MODE 5 - -#define ACS_INIT_SOUND_MODE 6 -#define ACS_INIT_MUSIC_MODE 7 -#define ACS_INIT_SOUND_VOLUME 8 -#define ACS_INIT_MUSIC_VOLUME 9 -#define ACS_INIT_TUTORIAL_MODE 10 - -#define ACS_CHANGE_SOUND_MODE 11 -#define ACS_CHANGE_MUSIC_MODE 12 -#define ACS_CHANGE_TUTORIAL_MODE 13 - -#define ACS_INIT_SLOT_NAME 14 -#define ACS_INIT_SLOT_NAME_INPUT 15 -#define ACS_SAVE_GAME 16 - -#define ACS_SET_AUTORUN_MODE 17 -#define ACS_INIT_AUTORUN_MODE 18 -#define ACS_CHANGE_AUTORUN_MODE 19 - - -#define ACI_NUM_SERVERS 5 -#define ACI_SERVER_NAME_LEN 36 - -#define ACI_LOAD_CODE 1000 -#define ACI_GLOBAL_EXIT_CODE 1001 - -#define NUM_COL_SCHEMES 2 -#define COL_SCHEME_LEN 60 - -// Button IDs... -#define ACI_WPN_PICKUP_BUTTON 2001 -#define ACI_ITM_PICKUP_BUTTON 2002 - -// Prompt IDs... -#define ACI_ITEM_PROMPT 1001 -#define ACI_NO_CASH_PROMPT 1002 -#define ACI_NO_CASH_PROMPT2 1003 -#define ACI_BT15_PROMPT 1004 -#define ACI_PICKUP_ITM_ON 1005 -#define ACI_PICKUP_ITM_OFF 1006 -#define ACI_PICKUP_WPN_ON 1007 -#define ACI_PICKUP_WPN_OFF 1008 -#define ACI_AVI_PROMPT1 1009 -#define ACI_AVI_PROMPT2 1010 - -// Color scheme IDs... -#define SCH_DEFAULT 0 -#define SCH_ISCREEN 1 - -// Color index... -#define ACI_BACK_COL 0 - -#define FM_UNSELECT_COL 1 -#define FM_SELECT_COL 2 - -#define IND_NRG_COL1 3 -#define IND_NRG_COL2 4 - -#define IND_N0_COL 5 - -#define INV_CELL_COL_ITM 6 -#define INV_BCELL_COL_ITM 7 -#define INV_FLOOR_COL_ITM 8 -#define INV_BFLOOR_COL_ITM 9 - -#define INV_CELL_COL_WPN 10 -#define INV_BCELL_COL_WPN 11 -#define INV_CELL_FLOOR_WPN 12 -#define INV_BCELL_FLOOR_WPN 13 - -#define INV_CELL_COL_TWPN 14 -#define INV_BCELL_COL_TWPN 15 -#define INV_CELL_FLOOR_TWPN 16 -#define INV_BCELL_FLOOR_TWPN 17 - -#define INV_CELL_COL_DVC 18 -#define INV_BCELL_COL_DVC 19 -#define INV_CELL_FLOOR_DVC 20 -#define INV_BCELL_FLOOR_DVC 21 - -#define IND_BACK_COL 22 - -#define INV_CELL_SELECT_COL 23 - -#define INV_NUM_ITM_COL 24 -#define INV_NUM_WPN_COL 25 -#define INV_NUM_TWPN_COL 26 -#define INV_NUM_DVC_COL 27 - -#define COUNTER_COL 28 - -// Links... -#define WORLD_LINK_COL 29 -#define WORLD_ACC_LINK_COL 30 - -// Floors... -#define WORLD_VISIBLE_COL 31 -#define WORLD_CURRENT_COL 32 -#define WORLD_SPECIAL_COL 33 -#define WORLD_EXPLORED_COL 34 -#define WORLD_ACCESSIBLE_COL 35 - -// Borders... -#define WORLD_BORDER_VIS_COL 36 -#define WORLD_BORDER_CUR_COL 37 -#define WORLD_BORDER_SPC_COL 38 -#define WORLD_BORDER_EXP_COL 39 -#define WORLD_BORDER_ACC_COL 40 - -#define FM_SELECT_BORDER_COL 41 -#define FM_UNSELECT_BORDER_COL 42 - -#define COUNTER_BORDER_COL 43 - -#define IND_LOAD_COL 44 -#define IND_WPN_COL 45 -#define IND_DVC_COL 46 - -#define JUMP_BORDER_COL 47 -#define JUMP_EMPTY_COL 48 -#define JUMP_FILLED_COL 49 - -#define FM_UNSELECT_START 50 -#define FM_SELECT_START 51 - -#define FM_UNSELECT_SIZE 52 -#define FM_SELECT_SIZE 53 - -#define FM_SELECT_START2 54 -#define FM_SELECT_SIZE2 55 - -#define ACI_SHUTTER_LEFT -1001 -#define ACI_SHUTTER_RIGHT -1002 -#define ACI_SHUTTER_CENTER -1003 - -/* ---------------------------- LOCATION SECTION ---------------------------- */ - -// Location numIndex... -#define ACI_LOCATION_INDEX_SIZE 2 - -#define ACI_BUTTON_ON_TYPE 0 -#define ACI_BUTTON_OFF_TYPE 1 - -// Location objects IDs... -#define ACI_NUM_OBJECTS 20 - -#define ACI_SHOP_SCREEN_ID 0 -#define ACI_PRICE_PANEL_ID 1 -#define ACI_MATRIX_BORDER_ID 2 -#define ACI_SMATRIX_BORDER_ID 3 -#define ACI_MECHOS_ID_OBJ 4 -#define ACI_MECHOS_ID_STR 5 -#define ACI_MECHOS_AVI_ID 6 -#define ACI_TRIGGER_ID 7 -#define ACI_INFO_PANEL_ID 8 -#define ACI_CREDITS_PANEL_ID 9 -#define ACI_FADE1_ID 10 -#define ACI_FADE2_ID 11 - -#define ACI_ITEMS_MENU_ID 12 -#define ACI_AVI_OBJ_ID 13 - -#define ACI_WEAPONS_BUTTON_ID 14 -#define ACI_MECHOS_BUTTON_ID 15 -#define ACI_ITEMS_BUTTON_ID 16 -#define ACI_MENU_BUTTON_ID 17 - -#define ACI_NUM_S_OBJECTS 3 - -#define ACI_QUEST_PANEL_ID 0 -#define ACI_ANSWER_PANEL_ID 1 -#define ACI_TIME_PANEL_ID 2 - -// Location info panel IDs... -#define ACI_INFO_PANEL 0 -#define ACI_QUEST_PANEL 1 -#define ACI_ANSWER_PANEL 2 -#define ACI_PRICE_PANEL 3 -#define ACI_SHOP_TIME_PANEL 4 - -// Location info menus... -#define ACI_QUEST_MENU 2 - -// Location counter panels.. -#define ACI_CREDITS_PANEL 1 - -// AVI Indexes... -#define ACI_PICTURE_AVI_ENG 0 -#define ACI_TEXT_AVI_ENG 1 -#define ACI_TEXT_AVI_RUS 2 -#define ACI_PICTURE_AVI_ENG2 3 -#define ACI_PICTURE_AVI_ENG3 4 - -#define ACI_NUM_AVI_ID 5 - -/* ------------------------ END OF LOCATION SECTION ------------------------- */ - -// actInt info panel types... -#define INT_PANEL 1 -#define INV_PANEL 2 -#define INF_PANEL 3 - -// actInt info panel IDs... -#define ACI_TIME_PANEL 4 -#define ACI_PARAMS_PANEL 5 - -/* -------------------------- WORLD SCHEME SECTION -------------------------- */ - -// aciWorldInfo IDs... -#define GLORX_ID 0 -#define FOSTRAL_ID 1 -#define NECROSS_ID 2 -#define XPLO_ID 3 -#define B_ID 4 -#define C_ID 5 -#define K_ID 6 -#define T_ID 7 -#define H_ID 8 -#define E_ID 9 -#define F_ID 10 -#define W_ID 11 -#define A_ID 12 - -#define AS_MAX_WORLD 13 - -#define GLORX_LETTER 71 -#define FOSTRAL_LETTER 70 -#define NECROSS_LETTER 78 -#define XPLO_LETTER 88 -#define B_LETTER 66 -#define C_LETTER 67 -#define K_LETTER 75 -#define T_LETTER 84 -#define H_LETTER 72 -#define E_LETTER 69 -#define F_LETTER 70 -#define W_LETTER 87 -#define A_LETTER 65 - -// aciWorldInfo flags... -#define AS_VISIBLE_WORLD 1 -#define AS_EXPLORED_WORLD 2 -#define AS_ACCESSIBLE_WORLD 4 -#define AS_CURRENT_WORLD 8 -#define AS_SECRET_WORLD 16 -#define AS_UNLINKED_WORLD 32 -#define AS_SPECIAL_WORLD 64 - -// aciWorldInfo shapes... -#define AS_NUM_WORLD_SHAPES 3 - -#define AS_TRIANGLE 0 -#define AS_SQUARE 1 -#define AS_CIRCLE 2 - -// Counters... -#define CREDITS_COUNTER 1 -#define TIME_COUNTER 2 - -#define SHOP_ITEMS_MENU_ID 1 - -// Shop buy/sell modes... -#define MECHOS_MODE 3 -#define ITEMS_MODE 2 -#define WEAPONS_MODE 1 -#define EMPTY_MODE 4 - -#define MECHOS_LIST_MODE 7 -#define ITEMS_LIST_MODE 6 -#define WEAPONS_LIST_MODE 5 - -#define CHANGE_2_MECHOS_MODE 8 -#define CHANGE_2_ITEMS_MODE 9 -#define CHANGE_2_WEAPONS_MODE 10 - -// Jump counter... -#define JUMP_SIZE_X 500 -#define JUMP_SIZE_Y 30 - -#define JUMP_Y 175 - -/* -------------------------------------------------------------------------- */ - -// fncMenu functions... -#define FMENU_OFF 0 -#define FMENU_MAP 1 -#define FMENU_WMAP 2 -#define FMENU_TARGETS 3 -#define FMENU_CAMERAS 4 -#define FMENU_TELEPORT 5 -#define FMENU_PARAMETERS 6 - -// fncMenu IDs... -#define FMENU_TARGETS_MENU 10 -#define FMENU_WORLDS_MENU 11 -#define FMENU_PROTRACTOR_MENU 12 -#define FMENU_MECH_MESSIAH_MENU 13 -#define FMENU_TELEPORT_MENU 14 - -// fncMenu fonts... -#define FMENU_TARGETS_FONT 1 -#define FMENU_TARGETS_SPACE 1 - -// Bitmap Menu IDs... -#define BMENU_CAMERAS_MENU 1 - -// Panel fonts... -#define ACI_PHRASE_FONT 0 - -#define BMENU_ITEM_ROT 1 -#define BMENU_ITEM_ZOOM 2 -#define BMENU_ITEM_PERSP 3 - -// iScreen Text IDs... -#define iTEXT_ENG1_ID 1 -#define iTEXT_ENG2_ID 2 -#define iTEXT_ENG3_ID 3 - -#define iTEXT_RUS1_ID 4 -#define iTEXT_RUS2_ID 5 -#define iTEXT_RUS3_ID 6 - -#define iTEXT_ENG_MAX 3 -#define iTEXT_RUS_MAX 6 - -// iScreen Text iEvLineID values... -#define iTEXT_NORMAL 1 -#define iTEXT_CHANGE 2 -#define iTEXT_END 3 - -// iScreen Text Event codes -#define iTEXT_PREV_EVENT_CODE0 1000 -#define iTEXT_PREV_EVENT_CODE1 1001 - -#define iTEXT_NEXT_EVENT_CODE0 1002 -#define iTEXT_NEXT_EVENT_CODE1 1003 - -#define iTEXT_END_EVENT_CODE0 1004 -#define iTEXT_END_EVENT_CODE1 1005 - -// Mouse scancodes... -#define iMOUSE_LEFT_PRESS_CODE -1 -#define iMOUSE_RIGHT_PRESS_CODE -2 -#define iMOUSE_MOVE_CODE -3 -#define iMOUSE_LEFT_MOVE -4 -#define iMOUSE_RIGHT_MOVE -5 - -/* --------------------------------- SOUNDS --------------------------------- */ - -#define ACI_NOISE_SOUND 0 -#define ACI_WND_SOUND 1 -#define ACI_SPEECH0_SOUND 2 -#define ACI_SPEECH1_SOUND 3 -#define ACI_SPEECH2_SOUND 4 -#define ACI_SPEECH3_SOUND 5 - -#define ACI_GATE_SOUND 6 - -// Podish... -#define ACI_L0_OUTIN_SOUND 7 -#define ACI_L0_SWARM_SOUND 8 -#define ACI_L0_ANGRY_SOUND 9 - -#define ACI_L0_BUTTON0_SOUND 10 -#define ACI_L0_BUTTON1_SOUND 11 -#define ACI_L0_BUTTON2_SOUND 12 -#define ACI_L0_BUTTON3_SOUND 13 -#define ACI_L0_BUTTON4_SOUND 14 - -// Incubator... -#define ACI_L1_SWARM_SOUND 15 -#define ACI_L1_STEP0_SOUND 16 -#define ACI_L1_ANGRY_SOUND 17 - -#define ACI_L1_BUTTON0_SOUND 18 -#define ACI_L1_BUTTON1_SOUND 19 -#define ACI_L1_BUTTON2_SOUND 20 - -// VigBoo... -#define ACI_L2_STEP_SOUND 21 -#define ACI_L2_OUTIN_SOUND 22 - -#define ACI_L2_BUTTON0_SOUND 23 -#define ACI_L2_BUTTON1_SOUND 24 - -#define ACI_L2_GETOUT_SOUND 25 - -// Lampasso... -#define ACI_L3_STEP_SOUND 26 -#define ACI_L3_GETOUT_SOUND 27 - -// Ogorod... -#define ACI_L4_STEP_SOUND 28 -#define ACI_L4_HAND_SOUND 29 -#define ACI_L4_PUT_SOUND 30 - -#define ACI_L4_BUTTON0_SOUND 31 -#define ACI_L4_BUTTON1_SOUND 32 - -#define ACI_L4_GETOUT_SOUND 33 - -// ZeePa... -#define ACI_L5_SCRATCH_SOUND 34 -#define ACI_L5_CLAP_SOUND 35 -#define ACI_L5_GETOUT_SOUND 36 -#define ACI_L5_ANGRY_SOUND 37 - -#define ACI_L5_BUTTON0_SOUND 38 -#define ACI_L5_BUTTON1_SOUND 39 - -// B-Zone... -#define ACI_L6_SCRATCH_SOUND 40 -#define ACI_L6_CLAP_SOUND 41 -#define ACI_L6_GETOUT_SOUND 42 - -/* ------------------------------- PARAMETERS ------------------------------- */ - -// Mechos... -#define ACI_MECHOS_ENERGY_SHIELD 0 -#define ACI_MECHOS_RESTORING_SPEED 1 -#define ACI_MECHOS_MECHANIC_ARMOR 2 -#define ACI_MECHOS_VELOCITY 3 -#define ACI_MECHOS_SPIRAL_CAPACITY 4 -#define ACI_MECHOS_AIR_RESERVE 5 - -// Weapon... -#define ACI_WEAPON_DAMAGE 0 -#define ACI_WEAPON_LOAD 1 -#define ACI_WEAPON_SHOTS_SEC 2 -#define ACI_WEAPON_RANGE 3 - -// Ammo.. -#define ACI_AMMO_DAMAGE 0 -#define ACI_AMMO_IN_PACK 1 - -// Device... -#define ACI_DEVICE_WORKING_TIME 0 - -/* ----------------------- END OF PARAMETERS SECTION ------------------------ */ - -// Cheat codes... -#define ACI_ADD_BEEBOS 2 -#define ACI_ADD_LUCK 3 -#define ACI_ADD_DOMINANCE 4 -#define ACI_ADD_KEYS 5 - -#define ACI_COMPLETE_TABUTASK 6 - -#define ACI_ADD_TABUTASK01 7 -#define ACI_ADD_TABUTASK02 8 -#define ACI_ADD_TABUTASK03 9 -#define ACI_ADD_TABUTASK04 10 -#define ACI_ADD_TABUTASK05 11 -#define ACI_ADD_TABUTASK06 12 -#define ACI_ADD_TABUTASK07 13 -#define ACI_ADD_TABUTASK08 14 -#define ACI_ADD_TABUTASK09 15 -#define ACI_ADD_TABUTASK10 16 -#define ACI_ADD_TABUTASK11 17 -#define ACI_ADD_TABUTASK12 18 -#define ACI_ADD_TABUTASK13 19 -#define ACI_ADD_TABUTASK14 20 -#define ACI_ADD_TABUTASK15 21 -#define ACI_ADD_TABUTASK16 22 -#define ACI_ADD_TABUTASK17 23 -#define ACI_ADD_TABUTASK18 24 -#define ACI_ADD_TABUTASK19 25 -#define ACI_ADD_TABUTASK20 26 - -#define ACI_TELEPORT_G 27 -#define ACI_TELEPORT_F 28 -#define ACI_TELEPORT_N 29 -#define ACI_TELEPORT_X 30 -#define ACI_TELEPORT_B 31 -#define ACI_TELEPORT_K 32 -#define ACI_TELEPORT_T 33 -#define ACI_TELEPORT_H 34 -#define ACI_TELEPORT_W 35 -#define ACI_TELEPORT_A 36 - -#define ACI_END_GAME0 37 -#define ACI_END_GAME1 38 -#define ACI_END_GAME2 39 -#define ACI_END_GAME3 40 - -#define ACI_CHANGE_CYCLE 41 -#define ACI_REPAIR 42 - -// Save header flags... -#define ACI_SAVE_COMPRESSED 1 - -/* - * Virtual Keys, Standard Set - */ -#define VK_LBUTTON -1 -#define VK_RBUTTON -2 -#define VK_MOVE -3 - -#define VK_ESCAPE 0x29 -#define VK_SPACE 0x2C -#define VK_RETURN 0x28 -#define VK_TAB 0x2B - -#define VK_LEFT 0x50 -#define VK_UP 0x52 -#define VK_RIGHT 0x4F -#define VK_DOWN 0x51 - -#define VK_1 0x1E -#define VK_2 0x1F -#define VK_3 0x20 - -#define VK_F1 0x3A -#define VK_F2 0x3B -#define VK_F3 0x3C - -#define VK_PRIOR 0x9D -#define VK_NEXT 0x22 - -/* not need */ -#define VK_CANCEL 0x03 -#define VK_MBUTTON 0x04 /* NOT contiguous with L & RBUTTON */ - -#define VK_BACK 0x08 - - -#define VK_CLEAR 0x0C - - -#define VK_SHIFT 0x130 -#define VK_CONTROL 0x11 -#define VK_MENU 0x12 -#define VK_PAUSE 0x13 -#define VK_CAPITAL 0x14 - - - - - - -#define VK_END 0x23 -#define VK_HOME 0x24 - - - -#define VK_SELECT 0x29 -#define VK_PRINT 0x2A -#define VK_EXECUTE 0x2B -#define VK_SNAPSHOT 0x2C -#define VK_INSERT 0x2D -#define VK_DELETE 0x7F -#define VK_HELP 0x2F - -/* VK_0 thru VK_9 are the same as ASCII '0' thru '9' (0x30 - 0x39) */ -#define VK_0 0x30 - - - -#define VK_4 0x34 -#define VK_5 0x35 -#define VK_6 0x36 -#define VK_7 0x37 -#define VK_8 0x38 -#define VK_9 0x39 - -/* VK_A thru VK_Z are the same as ASCII 'A' thru 'Z' (0x41 - 0x5A) */ - -#define VK_LWIN 0x5B -#define VK_RWIN 0x5C -#define VK_APPS 0x5D - -#define VK_NUMPAD0 0x60 -#define VK_NUMPAD1 0x61 -#define VK_NUMPAD2 0x62 -#define VK_NUMPAD3 0x63 -#define VK_NUMPAD4 0x64 -#define VK_NUMPAD5 0x65 -#define VK_NUMPAD6 0x66 -#define VK_NUMPAD7 0x67 -#define VK_NUMPAD8 0x68 -#define VK_NUMPAD9 0x69 -#define VK_MULTIPLY 0x6A -#define VK_ADD 0x6B -#define VK_SEPARATOR 0x6C -#define VK_SUBTRACT 0x6D -#define VK_DECIMAL 0x6E -#define VK_DIVIDE 0x6F - -#define VK_F4 0x73 -#define VK_F5 0x74 -#define VK_F6 0x75 -#define VK_F7 0x76 -#define VK_F8 0x77 -#define VK_F9 0x78 -#define VK_F10 0x79 -#define VK_F11 0x7A -#define VK_F12 0x7B -#define VK_F13 0x7C -#define VK_F14 0x7D -#define VK_F15 0x7E -#define VK_F16 0x7F -#define VK_F17 0x80 -#define VK_F18 0x81 -#define VK_F19 0x82 -#define VK_F20 0x83 -#define VK_F21 0x84 -#define VK_F22 0x85 -#define VK_F23 0x86 -#define VK_F24 0x87 - -#define VK_NUMLOCK 0x90 -#define VK_SCROLL 0x91 - -/* - * VK_L* & VK_R* - left and right Alt, Ctrl and Shift virtual keys. - * Used only as parameters to GetAsyncKeyState() and GetKeyState(). - * No other API or message will distinguish left and right keys in this way. - */ -#define VK_LSHIFT 0x130 -#define VK_RSHIFT 0x12F -#define VK_LCONTROL 0x132 -#define VK_RCONTROL 0x131 -#define VK_LMENU 0xA4 -#define VK_RMENU 0xA5 - -#define VK_ATTN 0xF6 -#define VK_CRSEL 0xF7 -#define VK_EXSEL 0xF8 -#define VK_EREOF 0xF9 -#define VK_PLAY 0xFA -#define VK_ZOOM 0xFB -#define VK_NONAME 0xFC -#define VK_PA1 0xFD -#define VK_OEM_CLEAR 0xFE - -// Some additional virtual keycodes... -#define VK_OEM_COMMA 0xBC -#define VK_OEM_PERIOD 0xBE -#define VK_OEM_SCROLL 0x91 -#define VK_OEM_MINUS 0xBD -#define VK_OEM_5 0xDC -#define VK_OEM_PLUS 0xBB -#define VK_OEM_ALT 0xF2 - -#define VK_SLASH 0x2F -#define VK_BKSLASH 0x5C -#define VK_TILDE 0x60 -#define VK_LBR 0x5B -#define VK_RBR 0x5D - -#define VK_A 0x61 -#define VK_B 0x62 -#define VK_C 0x63 -#define VK_D 0x64 -#define VK_E 0x65 -#define VK_F 0x66 -#define VK_G 0x67 -#define VK_H 0x68 -#define VK_I 0x69 -#define VK_J 0x6A -#define VK_K 0x6B -#define VK_L 0x6C -#define VK_M 0x6D -#define VK_N 0x6E -#define VK_O 0x6F -#define VK_P 0x70 -#define VK_Q 0x71 -#define VK_R 0x72 -#define VK_S 0x73 -#define VK_T 0x74 -#define VK_U 0x75 -#define VK_V 0x76 -#define VK_W 0x77 -#define VK_X 0x78 -#define VK_Y 0x79 -#define VK_Z 0x7A - - - -#define acsSTR_GAME_PAUSED1 "GAME PAUSED" -#define acsSTR_GAME_PAUSED2 "ЏЂ“‡Ђ" - -#define acsSTR_SOUND1 "SOUND" -#define acsSTR_SOUND2 "‡‚“Љ" - -#define acsSTR_MUSIC1 "MUSIC" -#define acsSTR_MUSIC2 "Њ“‡›ЉЂ" - -#define acsSTR_TIPS1 "TIPS" -#define acsSTR_TIPS2 "ЏЋ„‘ЉЂ‡Љ€" - -#define acsSTR_AUTORUN1 "AUTO ACC." -#define acsSTR_AUTORUN2 "Ђ‚’Ћ“‘ЉЋђ…Ќ€…" - -#define acsSTR_RESUME_GAME1 "RESUME GAME" -#define acsSTR_RESUME_GAME2 "ЏђЋ„Ћ‹†€’њ €ѓђ“" - -#define acsSTR_ABORT_GAME1 "ABORT GAME" -#define acsSTR_ABORT_GAME2 "Џђ…ђ‚Ђ’њ €ѓђ“" - -#define acsSTR_SAVE_GAME1 "SAVE GAME" -#define acsSTR_SAVE_GAME2 "‘Ћ•ђЂЌ€’њ €ѓђ“" - - -#define STR_SX 250 -#define STR_SY 32 - -#define STR_DX 10 -#define STR_DY 35 -#define VOLUME_DX 0 - -#define STR_X 220 - -#define STR_SX_TXT 200 -#define STR_SX2 120 - -#define STR_SOUND_X 150 -#define STR_SOUND_SX 100 -#define STR_SOUND_SX2 80 - -#define STR_MUSIC_X 140 -#define STR_MUSIC_SX 110 -#define STR_MUSIC_SX2 80 - -#define STR_TUTORIAL_X 200 -#define STR_TUTORIAL_SX 155 -#define STR_TUTORIAL_SX2 80 - -#define STR_AUTORUN_X 150 -#define STR_AUTORUN_SX 215 -#define STR_AUTORUN_SX2 80 - -#define acsSTR_GAME_PAUSED $acsSTR_GAME_PAUSED2 -#define acsSTR_SOUND $acsSTR_SOUND2 -#define acsSTR_MUSIC $acsSTR_MUSIC2 -#define acsSTR_TIPS $acsSTR_TIPS2 -#define acsSTR_AUTORUN $acsSTR_AUTORUN2 -#define acsSTR_RESUME_GAME $acsSTR_RESUME_GAME2 -#define acsSTR_ABORT_GAME $acsSTR_ABORT_GAME2 -#define acsSTR_SAVE_GAME $acsSTR_SAVE_GAME2 - - - -#define ACS_SLOT_LEN 15 -#define SAVE_SLOT_DELTA_Y 48 - -#define ACS_NONE 0 -#define ACS_BMP 1 -#define ACS_BML 2 -#define ACS_BMO 3 -#define ACS_XBM 4 - -// aciScreenObject:type values... -#define ACS_BASE_OBJ 1 -#define ACS_INPUT_FIELD_OBJ 2 -#define ACS_SCROLLER_OBJ 3 - -#define COLOR0 { 88 + 1 * 256 } -#define COLOR0s { 160 + 1 * 256 } -#define COLOR1 { 128 + 1 * 256 } -#define COLOR2 { 0 + 0 * 256 } - -#define PAUSE_RES_X 640 -#define STR_DELTA_X 25 -#define STR_START_Y 120 - -screen { - id $ACS_PAUSE_SCREEN1 - background $ACS_PAUSE_BACK0 - - resource $ACS_BMP { - id $ACS_VOLUME_SCROLLER - name "resource/actint/640x480/pause/scr.bmp" - } - resource $ACS_BMP { - id $ACS_VOLUME_S_RES - name "resource/actint/640x480/pause/volume.bmp" - } - resource $ACS_BMO { - id $ACS_PAUSE_BACK0 -/* - build - offs_x 0 - offs_y 0 - - size_x 10 - size_y 10 -*/ - name "resource/actint/640x480/pause/back.bmo" - } - - resource $ACS_BMO { - id $ACS_PAUSE_TEXT - - build - offs_x { ( $PAUSE_RES_X - $STR_SX ) / 2 } - offs_y { $STR_START_Y - 10 } - - size_x $STR_SX - size_y $STR_SY - } - resource $ACS_BMO { - id $ACS_RESUME_GAME - - build - offs_x { ( $PAUSE_RES_X - $STR_SX ) / 2 } - offs_y { $STR_START_Y + $STR_DY * 1 } - - size_x $STR_SX - size_y $STR_SY - } - resource $ACS_BMO { - id $ACS_SOUND_TEXT - - build - offs_x { $STR_SOUND_X + $STR_DELTA_X } - offs_y { $STR_START_Y + $STR_DY * 2 } - - size_x $STR_SOUND_SX - size_y $STR_SY - } - resource $ACS_BMO { - id $ACS_SOUND_MODE - - build - offs_x { $STR_SOUND_X + $STR_SOUND_SX + $STR_DX + $STR_DELTA_X } - offs_y { $STR_START_Y + $STR_DY * 2 } - - size_x $STR_SOUND_SX2 - size_y $STR_SY - } - resource $ACS_BMO { - id $ACS_MUSIC_TEXT - - build - offs_x { $STR_MUSIC_X + $STR_DELTA_X } - offs_y { $STR_START_Y + $STR_DY * 3 } - - size_x $STR_MUSIC_SX - size_y $STR_SY - } - resource $ACS_BMO { - id $ACS_MUSIC_MODE - - build - offs_x { $STR_MUSIC_X + $STR_MUSIC_SX + $STR_DX + $STR_DELTA_X } - offs_y { $STR_START_Y + $STR_DY * 3 } - - size_x $STR_MUSIC_SX2 - size_y $STR_SY - } - resource $ACS_BMO { - id $ACS_TUTORIAL_TEXT - - build - offs_x { $STR_TUTORIAL_X + $STR_DELTA_X } - offs_y { $STR_START_Y + $STR_DY * 4 } - - size_x $STR_TUTORIAL_SX - size_y $STR_SY - } - resource $ACS_BMO { - id $ACS_TUTORIAL_MODE - - build - offs_x { $STR_TUTORIAL_X + $STR_TUTORIAL_SX + $STR_DX + $STR_DELTA_X } - offs_y { $STR_START_Y + $STR_DY * 4 } - - size_x $STR_TUTORIAL_SX2 - size_y $STR_SY - } - resource $ACS_BMO { - id $ACS_AUTORUN_TEXT - - build - offs_x { $STR_AUTORUN_X + $STR_DELTA_X } - offs_y { $STR_START_Y + $STR_DY * 5 } - - size_x $STR_AUTORUN_SX - size_y $STR_SY - } - resource $ACS_BMO { - id $ACS_AUTORUN_MODE - - build - offs_x { $STR_AUTORUN_X + $STR_AUTORUN_SX + $STR_DX + $STR_DELTA_X } - offs_y { $STR_START_Y + $STR_DY * 5 } - - size_x $STR_AUTORUN_SX2 - size_y $STR_SY - } - resource $ACS_BMO { - id $ACS_ABORT_GAME - - build - offs_x { ( $PAUSE_RES_X - $STR_SX ) / 2 } - offs_y { $STR_START_Y + $STR_DY * 6 } - - size_x $STR_SX - size_y $STR_SY - } - resource $ACS_BMO { - id $ACS_SOUND_VOLUME - - build - offs_x { $STR_SOUND_X + $STR_SOUND_SX + $STR_DX + $STR_SOUND_SX2 + $VOLUME_DX + $STR_DELTA_X } - offs_y { $STR_START_Y + $STR_DY * 2 } - - size_x 100 - size_y 30 - } - resource $ACS_BMO { - id $ACS_MUSIC_VOLUME - - build - offs_x { $STR_MUSIC_X + $STR_MUSIC_SX + $STR_DX + $STR_MUSIC_SX2 + $VOLUME_DX + $STR_DELTA_X } - offs_y { $STR_START_Y + $STR_DY * 3 } - - size_x 100 - size_y 30 - } - object $ACS_INPUT_FIELD_OBJ { - id $ACS_SOUND_TEXT - string_len 20 - ifont 1 - color 0 $COLOR0s - space 1 - string $acsSTR_SOUND - - align_center - - event { - key $ACS_STARTUP_KEY - time 1 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_SOUND_TEXT $ACS_SOUND_TEXT 0 0 - } - } - } - object $ACS_INPUT_FIELD_OBJ { - id $ACS_PAUSE_TEXT - string_len 20 - ifont 0 - color 0 $COLOR0s - space 1 - string $acsSTR_GAME_PAUSED - - align_center - - event { - key $ACS_STARTUP_KEY - time 1 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_PAUSE_TEXT $ACS_PAUSE_TEXT 0 0 - } - } - } - object $ACS_SCROLLER_OBJ { - id $ACS_SOUND_VOLUME - max_value 256 - colors 103 80 - resource_id $ACS_VOLUME_SCROLLER - s_resource_id $ACS_VOLUME_S_RES - background - - active_sx 90 - active_sy 20 - - event { - key $ACS_STARTUP_KEY - time 2 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_SOUND_VOLUME $ACS_SOUND_VOLUME 0 0 - start_time 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SOUND_VOLUME 0 0 0 - start_time 0 - } - } - event { - key $iMOUSE_LEFT_PRESS_CODE - key $iMOUSE_RIGHT_PRESS_CODE - key $iMOUSE_LEFT_MOVE - key $iMOUSE_RIGHT_MOVE - - time 2 - ev_comm { - command $ACS_CHANGE_SCROLLER $ACS_SOUND_VOLUME 0 0 0 - start_time 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_SET_SOUND_VOLUME 0 0 0 - start_time 0 - } - } - } - object $ACS_SCROLLER_OBJ { - id $ACS_MUSIC_VOLUME - max_value 256 - colors 103 80 - resource_id $ACS_VOLUME_SCROLLER - s_resource_id $ACS_VOLUME_S_RES - background - - active_sx 90 - active_sy 20 - - event { - key $ACS_STARTUP_KEY - time 2 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_MUSIC_VOLUME $ACS_MUSIC_VOLUME 0 0 - start_time 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_MUSIC_VOLUME 0 0 0 - start_time 1 - } - } - event { - key $iMOUSE_LEFT_PRESS_CODE - key $iMOUSE_RIGHT_PRESS_CODE - key $iMOUSE_LEFT_MOVE - key $iMOUSE_RIGHT_MOVE - - time 2 - ev_comm { - command $ACS_CHANGE_SCROLLER $ACS_MUSIC_VOLUME 0 0 0 - start_time 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_SET_MUSIC_VOLUME 0 0 0 - start_time 1 - } - } - } - object $ACS_INPUT_FIELD_OBJ { - id $ACS_SOUND_MODE - string_len 20 - ifont 1 - color 0 $COLOR0 - color 1 $COLOR1 - color 2 $COLOR2 - space 1 - string "OFF" - - align_center - - event { - key $ACS_STARTUP_KEY - time 1 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_SOUND_MODE $ACS_SOUND_MODE 0 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SOUND_MODE 0 0 0 - } - } - event { - key $iMOUSE_RIGHT_PRESS_CODE - key $iMOUSE_LEFT_PRESS_CODE - key $VK_S - - time 2 - ev_comm { - command $ACS_CHANGE_STR_STATE $ACS_SOUND_MODE 0 0 0 - start_time 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_SET_SOUND_MODE 0 0 0 - start_time 1 - } - } - } - object $ACS_INPUT_FIELD_OBJ { - id $ACS_MUSIC_TEXT - string_len 20 - ifont 1 - color 0 $COLOR0s - space 1 - string $acsSTR_MUSIC - - align_center - - event { - key $ACS_STARTUP_KEY - time 1 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_MUSIC_TEXT $ACS_MUSIC_TEXT 0 0 - } - } - } - object $ACS_INPUT_FIELD_OBJ { - id $ACS_MUSIC_MODE - string_len 20 - ifont 1 - color 0 $COLOR0 - color 1 $COLOR1 - color 2 $COLOR2 - space 1 - string "OFF" - - align_center - - event { - key $ACS_STARTUP_KEY - time 1 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_MUSIC_MODE $ACS_MUSIC_MODE 0 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_MUSIC_MODE 0 0 0 - } - } - event { - key $iMOUSE_RIGHT_PRESS_CODE - key $iMOUSE_LEFT_PRESS_CODE - key $VK_S - - time 2 - ev_comm { - command $ACS_CHANGE_STR_STATE $ACS_MUSIC_MODE 0 0 0 - start_time 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_SET_MUSIC_MODE 0 0 0 - start_time 1 - } - } - } - object $ACS_INPUT_FIELD_OBJ { - id $ACS_TUTORIAL_TEXT - string_len 20 - ifont 1 - color 0 $COLOR0s - space 1 - string $acsSTR_TIPS - - align_center - - event { - key $ACS_STARTUP_KEY - time 1 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_TUTORIAL_TEXT $ACS_TUTORIAL_TEXT 0 0 - } - } - } - object $ACS_INPUT_FIELD_OBJ { - id $ACS_TUTORIAL_MODE - string_len 20 - ifont 1 - color 0 $COLOR0 - color 1 $COLOR1 - color 2 $COLOR2 - space 1 - string "OFF" - - align_center - - event { - key $ACS_STARTUP_KEY - time 1 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_TUTORIAL_MODE $ACS_TUTORIAL_MODE 0 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_TUTORIAL_MODE 0 0 0 - } - } - event { - key $iMOUSE_RIGHT_PRESS_CODE - key $iMOUSE_LEFT_PRESS_CODE - key $VK_S - - time 2 - ev_comm { - command $ACS_CHANGE_STR_STATE $ACS_TUTORIAL_MODE 0 0 0 - start_time 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_SET_TUTORIAL_MODE 0 0 0 - start_time 1 - } - } - } - object $ACS_INPUT_FIELD_OBJ { - id $ACS_AUTORUN_TEXT - string_len 20 - ifont 1 - color 0 $COLOR0s - space 1 - string $acsSTR_AUTORUN - - align_center - - event { - key $ACS_STARTUP_KEY - time 1 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_AUTORUN_TEXT $ACS_AUTORUN_TEXT 0 0 - } - } - } - object $ACS_INPUT_FIELD_OBJ { - id $ACS_AUTORUN_MODE - string_len 20 - ifont 1 - color 0 $COLOR0 - color 1 $COLOR1 - color 2 $COLOR2 - space 1 - string "OFF" - - align_center - - event { - key $ACS_STARTUP_KEY - time 1 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_AUTORUN_MODE $ACS_AUTORUN_MODE 0 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_AUTORUN_MODE 0 0 0 - } - } - event { - key $iMOUSE_RIGHT_PRESS_CODE - key $iMOUSE_LEFT_PRESS_CODE - key $VK_S - - time 2 - ev_comm { - command $ACS_CHANGE_STR_STATE $ACS_AUTORUN_MODE 0 0 0 - start_time 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_SET_AUTORUN_MODE 0 0 0 - start_time 1 - } - } - } - object $ACS_INPUT_FIELD_OBJ { - id $ACS_RESUME_GAME - string_len 20 - ifont 1 - color 0 $COLOR0 - color 1 $COLOR1 - color 2 $COLOR2 - space 1 - string $acsSTR_RESUME_GAME - - align_center - - event { - key $ACS_STARTUP_KEY - time 1 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_RESUME_GAME $ACS_RESUME_GAME 0 0 - } - } - event { - key $iMOUSE_RIGHT_PRESS_CODE - key $iMOUSE_LEFT_PRESS_CODE - key $VK_R - key $VK_ESCAPE - - time 2 - ev_comm { - command $ACS_EXIT 1 0 0 0 - start_time 0 - } - } - } - - object $ACS_INPUT_FIELD_OBJ { - id $ACS_ABORT_GAME - string_len 20 - ifont 1 - color 0 $COLOR0 - color 1 $COLOR1 - color 2 $COLOR2 - space 1 - string $acsSTR_ABORT_GAME - - align_center - - event { - key $ACS_STARTUP_KEY - time 1 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_ABORT_GAME $ACS_ABORT_GAME 0 0 - } - } - event { - key $iMOUSE_RIGHT_PRESS_CODE - key $iMOUSE_LEFT_PRESS_CODE - key $VK_A - - time 2 - ev_comm { - command $ACS_EXT_EVENT $ACS_GLOBAL_EXIT 0 0 0 - start_time 0 - } - } - } - -} - -#define COLOR0 { 96 + 1 * 256 } -#define COLOR0s { 48 + 1 * 256 } -#define COLOR1 { 16 + 1 * 256 } -#define COLOR2 { 64 + 1 * 256 } - -#define PAUSE_RES_X 800 -#define STR_DELTA_X 100 -#define STR_START_Y 180 - -screen { - id $ACS_PAUSE_SCREEN2 - background $ACS_PAUSE_BACK1 - - resource $ACS_BMP { - id $ACS_VOLUME_SCROLLER - name "resource/actint/iscreen/pause/scr.bmp" - } - resource $ACS_BMP { - id $ACS_VOLUME_S_RES - name "resource/actint/iscreen/pause/volume.bmp" - } - resource $ACS_BMO { - id $ACS_PAUSE_BACK1 -/* - build - offs_x 0 - offs_y 0 - - size_x 10 - size_y 10 -*/ - name "resource/actint/iscreen/pause/back.bmo" - } - - resource $ACS_BMO { - id $ACS_PAUSE_TEXT - - build - offs_x { ( $PAUSE_RES_X - $STR_SX ) / 2 } - offs_y { $STR_START_Y - 10 } - - size_x $STR_SX - size_y $STR_SY - } - resource $ACS_BMO { - id $ACS_RESUME_GAME - - build - offs_x { ( $PAUSE_RES_X - $STR_SX ) / 2 } - offs_y { $STR_START_Y + $STR_DY * 1 } - - size_x $STR_SX - size_y $STR_SY - } - resource $ACS_BMO { - id $ACS_SOUND_TEXT - - build - offs_x { $STR_SOUND_X + $STR_DELTA_X } - offs_y { $STR_START_Y + $STR_DY * 2 } - - size_x $STR_SOUND_SX - size_y $STR_SY - } - resource $ACS_BMO { - id $ACS_SOUND_MODE - - build - offs_x { $STR_SOUND_X + $STR_SOUND_SX + $STR_DX + $STR_DELTA_X } - offs_y { $STR_START_Y + $STR_DY * 2 } - - size_x $STR_SOUND_SX2 - size_y $STR_SY - } - resource $ACS_BMO { - id $ACS_MUSIC_TEXT - - build - offs_x { $STR_MUSIC_X + $STR_DELTA_X } - offs_y { $STR_START_Y + $STR_DY * 3 } - - size_x $STR_MUSIC_SX - size_y $STR_SY - } - resource $ACS_BMO { - id $ACS_MUSIC_MODE - - build - offs_x { $STR_MUSIC_X + $STR_MUSIC_SX + $STR_DX + $STR_DELTA_X } - offs_y { $STR_START_Y + $STR_DY * 3 } - - size_x $STR_MUSIC_SX2 - size_y $STR_SY - } - resource $ACS_BMO { - id $ACS_TUTORIAL_TEXT - - build - offs_x { $STR_TUTORIAL_X + $STR_DELTA_X } - offs_y { $STR_START_Y + $STR_DY * 4 } - - size_x $STR_TUTORIAL_SX - size_y $STR_SY - } - resource $ACS_BMO { - id $ACS_TUTORIAL_MODE - - build - offs_x { $STR_TUTORIAL_X + $STR_TUTORIAL_SX + $STR_DX + $STR_DELTA_X } - offs_y { $STR_START_Y + $STR_DY * 4 } - - size_x $STR_TUTORIAL_SX2 - size_y $STR_SY - } - resource $ACS_BMO { - id $ACS_AUTORUN_TEXT - - build - offs_x { $STR_AUTORUN_X + $STR_DELTA_X } - offs_y { $STR_START_Y + $STR_DY * 5 } - - size_x $STR_AUTORUN_SX - size_y $STR_SY - } - resource $ACS_BMO { - id $ACS_AUTORUN_MODE - - build - offs_x { $STR_AUTORUN_X + $STR_AUTORUN_SX + $STR_DX + $STR_DELTA_X } - offs_y { $STR_START_Y + $STR_DY * 5 } - - size_x $STR_AUTORUN_SX2 - size_y $STR_SY - } - resource $ACS_BMO { - id $ACS_ABORT_GAME - - build - offs_x { ( $PAUSE_RES_X - $STR_SX ) / 2 } - offs_y { $STR_START_Y + $STR_DY * 6 } - - size_x $STR_SX - size_y $STR_SY - } - resource $ACS_BMO { - id $ACS_SOUND_VOLUME - - build - offs_x { $STR_SOUND_X + $STR_SOUND_SX + $STR_DX + $STR_SOUND_SX2 + $VOLUME_DX + $STR_DELTA_X } - offs_y { $STR_START_Y + $STR_DY * 2 } - - size_x 100 - size_y 30 - } - resource $ACS_BMO { - id $ACS_MUSIC_VOLUME - - build - offs_x { $STR_MUSIC_X + $STR_MUSIC_SX + $STR_DX + $STR_MUSIC_SX2 + $VOLUME_DX + $STR_DELTA_X } - offs_y { $STR_START_Y + $STR_DY * 3 } - - size_x 100 - size_y 30 - } - object $ACS_INPUT_FIELD_OBJ { - id $ACS_SOUND_TEXT - string_len 20 - ifont 1 - color 0 $COLOR0s - space 1 - string $acsSTR_SOUND - - align_center - - event { - key $ACS_STARTUP_KEY - time 1 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_SOUND_TEXT $ACS_SOUND_TEXT 0 0 - } - } - } - object $ACS_INPUT_FIELD_OBJ { - id $ACS_PAUSE_TEXT - string_len 20 - ifont 0 - color 0 $COLOR0s - space 1 - string $acsSTR_GAME_PAUSED - - align_center - - event { - key $ACS_STARTUP_KEY - time 1 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_PAUSE_TEXT $ACS_PAUSE_TEXT 0 0 - } - } - } - object $ACS_SCROLLER_OBJ { - id $ACS_SOUND_VOLUME - max_value 256 - colors 103 80 - resource_id $ACS_VOLUME_SCROLLER - s_resource_id $ACS_VOLUME_S_RES - background - - active_sx 90 - active_sy 20 - - event { - key $ACS_STARTUP_KEY - time 2 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_SOUND_VOLUME $ACS_SOUND_VOLUME 0 0 - start_time 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SOUND_VOLUME 0 0 0 - start_time 0 - } - } - event { - key $iMOUSE_LEFT_PRESS_CODE - key $iMOUSE_RIGHT_PRESS_CODE - key $iMOUSE_LEFT_MOVE - key $iMOUSE_RIGHT_MOVE - - time 2 - ev_comm { - command $ACS_CHANGE_SCROLLER $ACS_SOUND_VOLUME 0 0 0 - start_time 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_SET_SOUND_VOLUME 0 0 0 - start_time 0 - } - } - } - object $ACS_SCROLLER_OBJ { - id $ACS_MUSIC_VOLUME - max_value 256 - colors 103 80 - resource_id $ACS_VOLUME_SCROLLER - s_resource_id $ACS_VOLUME_S_RES - background - - active_sx 90 - active_sy 20 - - event { - key $ACS_STARTUP_KEY - time 2 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_MUSIC_VOLUME $ACS_MUSIC_VOLUME 0 0 - start_time 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_MUSIC_VOLUME 0 0 0 - start_time 1 - } - } - event { - key $iMOUSE_LEFT_PRESS_CODE - key $iMOUSE_RIGHT_PRESS_CODE - key $iMOUSE_LEFT_MOVE - key $iMOUSE_RIGHT_MOVE - - time 2 - ev_comm { - command $ACS_CHANGE_SCROLLER $ACS_MUSIC_VOLUME 0 0 0 - start_time 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_SET_MUSIC_VOLUME 0 0 0 - start_time 1 - } - } - } - object $ACS_INPUT_FIELD_OBJ { - id $ACS_SOUND_MODE - string_len 20 - ifont 1 - color 0 $COLOR0 - color 1 $COLOR1 - color 2 $COLOR2 - space 1 - string "OFF" - - align_center - - event { - key $ACS_STARTUP_KEY - time 1 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_SOUND_MODE $ACS_SOUND_MODE 0 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SOUND_MODE 0 0 0 - } - } - event { - key $iMOUSE_RIGHT_PRESS_CODE - key $iMOUSE_LEFT_PRESS_CODE - key $VK_S - - time 2 - ev_comm { - command $ACS_CHANGE_STR_STATE $ACS_SOUND_MODE 0 0 0 - start_time 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_SET_SOUND_MODE 0 0 0 - start_time 1 - } - } - } - object $ACS_INPUT_FIELD_OBJ { - id $ACS_MUSIC_TEXT - string_len 20 - ifont 1 - color 0 $COLOR0s - space 1 - string $acsSTR_MUSIC - - align_center - - event { - key $ACS_STARTUP_KEY - time 1 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_MUSIC_TEXT $ACS_MUSIC_TEXT 0 0 - } - } - } - object $ACS_INPUT_FIELD_OBJ { - id $ACS_MUSIC_MODE - string_len 20 - ifont 1 - color 0 $COLOR0 - color 1 $COLOR1 - color 2 $COLOR2 - space 1 - string "OFF" - - align_center - - event { - key $ACS_STARTUP_KEY - time 1 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_MUSIC_MODE $ACS_MUSIC_MODE 0 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_MUSIC_MODE 0 0 0 - } - } - event { - key $iMOUSE_RIGHT_PRESS_CODE - key $iMOUSE_LEFT_PRESS_CODE - key $VK_S - - time 2 - ev_comm { - command $ACS_CHANGE_STR_STATE $ACS_MUSIC_MODE 0 0 0 - start_time 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_SET_MUSIC_MODE 0 0 0 - start_time 1 - } - } - } - object $ACS_INPUT_FIELD_OBJ { - id $ACS_TUTORIAL_TEXT - string_len 20 - ifont 1 - color 0 $COLOR0s - space 1 - string $acsSTR_TIPS - - align_center - - event { - key $ACS_STARTUP_KEY - time 1 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_TUTORIAL_TEXT $ACS_TUTORIAL_TEXT 0 0 - } - } - } - object $ACS_INPUT_FIELD_OBJ { - id $ACS_TUTORIAL_MODE - string_len 20 - ifont 1 - color 0 $COLOR0 - color 1 $COLOR1 - color 2 $COLOR2 - space 1 - string "OFF" - - align_center - - event { - key $ACS_STARTUP_KEY - time 1 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_TUTORIAL_MODE $ACS_TUTORIAL_MODE 0 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_TUTORIAL_MODE 0 0 0 - } - } - event { - key $iMOUSE_RIGHT_PRESS_CODE - key $iMOUSE_LEFT_PRESS_CODE - key $VK_S - - time 2 - ev_comm { - command $ACS_CHANGE_STR_STATE $ACS_TUTORIAL_MODE 0 0 0 - start_time 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_SET_TUTORIAL_MODE 0 0 0 - start_time 1 - } - } - } - object $ACS_INPUT_FIELD_OBJ { - id $ACS_AUTORUN_TEXT - string_len 20 - ifont 1 - color 0 $COLOR0s - space 1 - string $acsSTR_AUTORUN - - align_center - - event { - key $ACS_STARTUP_KEY - time 1 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_AUTORUN_TEXT $ACS_AUTORUN_TEXT 0 0 - } - } - } - object $ACS_INPUT_FIELD_OBJ { - id $ACS_AUTORUN_MODE - string_len 20 - ifont 1 - color 0 $COLOR0 - color 1 $COLOR1 - color 2 $COLOR2 - space 1 - string "OFF" - - align_center - - event { - key $ACS_STARTUP_KEY - time 1 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_AUTORUN_MODE $ACS_AUTORUN_MODE 0 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_AUTORUN_MODE 0 0 0 - } - } - event { - key $iMOUSE_RIGHT_PRESS_CODE - key $iMOUSE_LEFT_PRESS_CODE - key $VK_S - - time 2 - ev_comm { - command $ACS_CHANGE_STR_STATE $ACS_AUTORUN_MODE 0 0 0 - start_time 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_SET_AUTORUN_MODE 0 0 0 - start_time 1 - } - } - } - object $ACS_INPUT_FIELD_OBJ { - id $ACS_RESUME_GAME - string_len 20 - ifont 1 - color 0 $COLOR0 - color 1 $COLOR1 - color 2 $COLOR2 - space 1 - string $acsSTR_RESUME_GAME - - align_center - - event { - key $ACS_STARTUP_KEY - time 1 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_RESUME_GAME $ACS_RESUME_GAME 0 0 - } - } - event { - key $iMOUSE_RIGHT_PRESS_CODE - key $iMOUSE_LEFT_PRESS_CODE - key $VK_R - key $VK_ESCAPE - - time 2 - ev_comm { - command $ACS_EXIT 1 0 0 0 - start_time 0 - } - } - } - - object $ACS_INPUT_FIELD_OBJ { - id $ACS_ABORT_GAME - string_len 20 - ifont 1 - color 0 $COLOR0 - color 1 $COLOR1 - color 2 $COLOR2 - space 1 - string $acsSTR_ABORT_GAME - - align_center - - event { - key $ACS_STARTUP_KEY - time 1 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_ABORT_GAME $ACS_ABORT_GAME 0 0 - } - } - event { - key $iMOUSE_RIGHT_PRESS_CODE - key $iMOUSE_LEFT_PRESS_CODE - key $VK_A - - time 2 - ev_comm { - command $ACS_EXT_EVENT $ACS_GLOBAL_EXIT 0 0 0 - start_time 0 - } - } - } - -} - -screen { - id $ACS_SAVE_SCREEN0 - background $ACS_SAVE_BACK - - resource $ACS_BMP { - id $ACS_SAVE_BACK - name "resource/actint/iscreen/save/scr00/back.bmp" - } - resource $ACS_BMO { - id $ACS_SAVE_OK - name "resource/actint/iscreen/save/scr00/ok.bmo" - } - resource $ACS_BMO { - id $ACS_SAVE_CANCEL - name "resource/actint/iscreen/save/scr00/cancel.bmo" - } - #define SAVE_STRING_POS_X 250 - #define SAVE_STRING_POS_Y 40 - - #define SAVE_SLOT_OFFS_X 225 - #define SAVE_SLOT_START_Y 140 - #define COLOR0 { 48 + 1 * 256 } - #define COLOR1 { 64 + 1 * 256 } - #define COLOR2 { 96 + 1 * 256 } - - #define SAVE_SLOT_SIZE_X 360 - #define SAVE_SLOT_SIZE_Y 40 - - #define SAVE_STRING_SIZE_X 300 - #define SAVE_STRING_SIZE_Y 50 - - resource $ACS_BMO { - id $ACS_SAVE_STRING - - build - offs_x $SAVE_STRING_POS_X - offs_y $SAVE_STRING_POS_Y - - size_x $SAVE_STRING_SIZE_X - size_y $SAVE_STRING_SIZE_Y - } - - resource $ACS_BMO { - id $ACS_SAVE_SLOT0 - - build - offs_x $SAVE_SLOT_OFFS_X - offs_y { $SAVE_SLOT_START_Y + $SAVE_SLOT_DELTA_Y * 0 } - - size_x $SAVE_SLOT_SIZE_X - size_y $SAVE_SLOT_SIZE_Y - } - resource $ACS_BMO { - id $ACS_SAVE_SLOT1 - - build - offs_x $SAVE_SLOT_OFFS_X - offs_y { $SAVE_SLOT_START_Y + $SAVE_SLOT_DELTA_Y * 1 } - - size_x $SAVE_SLOT_SIZE_X - size_y $SAVE_SLOT_SIZE_Y - } - resource $ACS_BMO { - id $ACS_SAVE_SLOT2 - - build - offs_x $SAVE_SLOT_OFFS_X - offs_y { $SAVE_SLOT_START_Y + $SAVE_SLOT_DELTA_Y * 2 } - - size_x $SAVE_SLOT_SIZE_X - size_y $SAVE_SLOT_SIZE_Y - } - resource $ACS_BMO { - id $ACS_SAVE_SLOT3 - - build - offs_x $SAVE_SLOT_OFFS_X - offs_y { $SAVE_SLOT_START_Y + $SAVE_SLOT_DELTA_Y * 3 } - - size_x $SAVE_SLOT_SIZE_X - size_y $SAVE_SLOT_SIZE_Y - } - resource $ACS_BMO { - id $ACS_SAVE_SLOT4 - - build - offs_x $SAVE_SLOT_OFFS_X - offs_y { $SAVE_SLOT_START_Y + $SAVE_SLOT_DELTA_Y * 4 } - - size_x $SAVE_SLOT_SIZE_X - size_y $SAVE_SLOT_SIZE_Y - } - resource $ACS_BMO { - id $ACS_SAVE_SLOT5 - - build - offs_x $SAVE_SLOT_OFFS_X - offs_y { $SAVE_SLOT_START_Y + $SAVE_SLOT_DELTA_Y * 5 } - - size_x $SAVE_SLOT_SIZE_X - size_y $SAVE_SLOT_SIZE_Y - } - resource $ACS_BMO { - id $ACS_SAVE_SLOT6 - - build - offs_x $SAVE_SLOT_OFFS_X - offs_y { $SAVE_SLOT_START_Y + $SAVE_SLOT_DELTA_Y * 6 } - - size_x $SAVE_SLOT_SIZE_X - size_y $SAVE_SLOT_SIZE_Y - } - resource $ACS_BMO { - id $ACS_SAVE_SLOT7 - - build - offs_x $SAVE_SLOT_OFFS_X - offs_y { $SAVE_SLOT_START_Y + $SAVE_SLOT_DELTA_Y * 7 } - - size_x $SAVE_SLOT_SIZE_X - size_y $SAVE_SLOT_SIZE_Y - } - - object $ACS_INPUT_FIELD_OBJ { - id $ACS_SAVE_STRING - string_len 20 - ifont 0 - color 0 $COLOR0s - space 1 - string $acsSTR_SAVE_GAME - - align_center - - event { - key $ACS_STARTUP_KEY - time 1 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_SAVE_STRING $ACS_SAVE_STRING 0 0 - } - } - } - - object $ACS_BASE_OBJ { - id $ACS_SAVE_OK - - event { - key $ACS_STARTUP_KEY - time 1 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_SAVE_OK $ACS_SAVE_OK 0 0 - } - } - event { - key $iMOUSE_LEFT_PRESS_CODE - key $iMOUSE_RIGHT_PRESS_CODE - key $VK_RETURN - - time 3 - ev_comm { - command $ACS_EXEC_SEQUENCE $ACS_SAVE_OK 1 0 0 - start_time 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_SAVE_GAME 0 0 0 - start_time 1 - } - ev_comm { - command $ACS_EXIT 1 0 0 0 - start_time 2 - } - } - frame_seq { - id 1 - resource_id $ACS_SAVE_OK - seq 0 $ACS_MAX_FRAME 1 - } - } - object $ACS_BASE_OBJ { - id $ACS_SAVE_CANCEL - - event { - key $ACS_STARTUP_KEY - time 1 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_SAVE_CANCEL $ACS_SAVE_CANCEL 0 0 - } - } - event { - key $iMOUSE_LEFT_PRESS_CODE - key $iMOUSE_RIGHT_PRESS_CODE - key $VK_ESCAPE - - time 3 - ev_comm { - command $ACS_EXEC_SEQUENCE $ACS_SAVE_CANCEL 1 0 0 - start_time 0 - } - ev_comm { - command $ACS_EXIT 1 0 0 0 - start_time 1 - } - } - frame_seq { - id 1 - resource_id $ACS_SAVE_CANCEL - seq 0 $ACS_MAX_FRAME 1 - } - } - object $ACS_INPUT_FIELD_OBJ { - id $ACS_SAVE_SLOT0 - string_len $ACS_SLOT_LEN - ifont 0 - color 0 $COLOR0 - color 1 $COLOR1 - color 2 $COLOR2 - space 1 - - align_center - - event { - key $ACS_STARTUP_KEY - time 2 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_SAVE_SLOT0 $ACS_SAVE_SLOT0 0 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME $ACS_SAVE_SLOT0 0 0 - } - } - event { - key $iMOUSE_LEFT_PRESS_CODE - key $iMOUSE_RIGHT_PRESS_CODE - - time 2 - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME_INPUT $ACS_SAVE_SLOT0 0 0 - start_time 0 - } - ev_comm { - command $ACS_INPUT_STRING $ACS_SAVE_SLOT0 0 0 0 - start_time 1 - } - } - } - object $ACS_INPUT_FIELD_OBJ { - id $ACS_SAVE_SLOT1 - string_len $ACS_SLOT_LEN - ifont 0 - color 0 $COLOR0 - color 1 $COLOR1 - color 2 $COLOR2 - space 1 - - align_center - - event { - key $ACS_STARTUP_KEY - time 2 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_SAVE_SLOT1 $ACS_SAVE_SLOT1 0 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME $ACS_SAVE_SLOT1 1 0 - } - } - event { - key $iMOUSE_LEFT_PRESS_CODE - key $iMOUSE_RIGHT_PRESS_CODE - - time 2 - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME_INPUT $ACS_SAVE_SLOT1 1 0 - start_time 0 - } - ev_comm { - command $ACS_INPUT_STRING $ACS_SAVE_SLOT1 0 0 0 - start_time 1 - } - } - } - object $ACS_INPUT_FIELD_OBJ { - id $ACS_SAVE_SLOT2 - string_len $ACS_SLOT_LEN - ifont 0 - color 0 $COLOR0 - color 1 $COLOR1 - color 2 $COLOR2 - space 1 - - align_center - - event { - key $ACS_STARTUP_KEY - time 2 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_SAVE_SLOT2 $ACS_SAVE_SLOT2 0 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME $ACS_SAVE_SLOT2 2 0 - } - } - event { - key $iMOUSE_LEFT_PRESS_CODE - key $iMOUSE_RIGHT_PRESS_CODE - - time 2 - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME_INPUT $ACS_SAVE_SLOT2 2 0 - start_time 0 - } - ev_comm { - command $ACS_INPUT_STRING $ACS_SAVE_SLOT2 0 0 0 - start_time 1 - } - } - } - object $ACS_INPUT_FIELD_OBJ { - id $ACS_SAVE_SLOT3 - string_len $ACS_SLOT_LEN - ifont 0 - color 0 $COLOR0 - color 1 $COLOR1 - color 2 $COLOR2 - space 1 - - align_center - - event { - key $ACS_STARTUP_KEY - time 2 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_SAVE_SLOT3 $ACS_SAVE_SLOT3 0 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME $ACS_SAVE_SLOT3 3 0 - } - } - event { - key $iMOUSE_LEFT_PRESS_CODE - key $iMOUSE_RIGHT_PRESS_CODE - - time 2 - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME_INPUT $ACS_SAVE_SLOT3 3 0 - start_time 0 - } - ev_comm { - command $ACS_INPUT_STRING $ACS_SAVE_SLOT3 0 0 0 - start_time 1 - } - } - } - object $ACS_INPUT_FIELD_OBJ { - id $ACS_SAVE_SLOT4 - string_len $ACS_SLOT_LEN - ifont 0 - color 0 $COLOR0 - color 1 $COLOR1 - color 2 $COLOR2 - space 1 - - align_center - - event { - key $ACS_STARTUP_KEY - time 2 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_SAVE_SLOT4 $ACS_SAVE_SLOT4 0 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME $ACS_SAVE_SLOT4 4 0 - } - } - event { - key $iMOUSE_LEFT_PRESS_CODE - key $iMOUSE_RIGHT_PRESS_CODE - - time 2 - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME_INPUT $ACS_SAVE_SLOT4 4 0 - start_time 0 - } - ev_comm { - command $ACS_INPUT_STRING $ACS_SAVE_SLOT4 0 0 0 - start_time 1 - } - } - } - object $ACS_INPUT_FIELD_OBJ { - id $ACS_SAVE_SLOT5 - string_len $ACS_SLOT_LEN - ifont 0 - color 0 $COLOR0 - color 1 $COLOR1 - color 2 $COLOR2 - space 1 - - align_center - - event { - key $ACS_STARTUP_KEY - time 2 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_SAVE_SLOT5 $ACS_SAVE_SLOT5 0 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME $ACS_SAVE_SLOT5 5 0 - } - } - event { - key $iMOUSE_LEFT_PRESS_CODE - key $iMOUSE_RIGHT_PRESS_CODE - - time 2 - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME_INPUT $ACS_SAVE_SLOT5 5 0 - start_time 0 - } - ev_comm { - command $ACS_INPUT_STRING $ACS_SAVE_SLOT5 0 0 0 - start_time 1 - } - } - } - object $ACS_INPUT_FIELD_OBJ { - id $ACS_SAVE_SLOT6 - string_len $ACS_SLOT_LEN - ifont 0 - color 0 $COLOR0 - color 1 $COLOR1 - color 2 $COLOR2 - space 1 - - align_center - - event { - key $ACS_STARTUP_KEY - time 2 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_SAVE_SLOT6 $ACS_SAVE_SLOT6 0 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME $ACS_SAVE_SLOT6 6 0 - } - } - event { - key $iMOUSE_LEFT_PRESS_CODE - key $iMOUSE_RIGHT_PRESS_CODE - - time 2 - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME_INPUT $ACS_SAVE_SLOT6 6 0 - start_time 0 - } - ev_comm { - command $ACS_INPUT_STRING $ACS_SAVE_SLOT6 0 0 0 - start_time 1 - } - } - } - object $ACS_INPUT_FIELD_OBJ { - id $ACS_SAVE_SLOT7 - string_len $ACS_SLOT_LEN - ifont 0 - color 0 $COLOR0 - color 1 $COLOR1 - color 2 $COLOR2 - space 1 - - align_center - - event { - key $ACS_STARTUP_KEY - time 2 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_SAVE_SLOT7 $ACS_SAVE_SLOT7 0 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME $ACS_SAVE_SLOT7 7 0 - } - } - event { - key $iMOUSE_LEFT_PRESS_CODE - key $iMOUSE_RIGHT_PRESS_CODE - - time 2 - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME_INPUT $ACS_SAVE_SLOT7 7 0 - start_time 0 - } - ev_comm { - command $ACS_INPUT_STRING $ACS_SAVE_SLOT7 0 0 0 - start_time 1 - } - } - } - -} - -screen { - id $ACS_SAVE_SCREEN1 - background $ACS_SAVE_BACK - - resource $ACS_BMP { - id $ACS_SAVE_BACK - name "resource/actint/iscreen/save/scr01/back.bmp" - } - resource $ACS_BMO { - id $ACS_SAVE_OK - name "resource/actint/iscreen/save/scr01/ok.bmo" - } - resource $ACS_BMO { - id $ACS_SAVE_CANCEL - name "resource/actint/iscreen/save/scr01/cancel.bmo" - } - #define SAVE_STRING_POS_X 250 - #define SAVE_STRING_POS_Y 40 - - #define SAVE_SLOT_OFFS_X 215 - #define SAVE_SLOT_START_Y 155 - #define COLOR0 { 48 + 1 * 256 } - #define COLOR1 { 64 + 1 * 256 } - #define COLOR2 { 96 + 1 * 256 } - - #define SAVE_SLOT_SIZE_X 360 - #define SAVE_SLOT_SIZE_Y 40 - - #define SAVE_STRING_SIZE_X 300 - #define SAVE_STRING_SIZE_Y 50 - - resource $ACS_BMO { - id $ACS_SAVE_STRING - - build - offs_x $SAVE_STRING_POS_X - offs_y $SAVE_STRING_POS_Y - - size_x $SAVE_STRING_SIZE_X - size_y $SAVE_STRING_SIZE_Y - } - - resource $ACS_BMO { - id $ACS_SAVE_SLOT0 - - build - offs_x $SAVE_SLOT_OFFS_X - offs_y { $SAVE_SLOT_START_Y + $SAVE_SLOT_DELTA_Y * 0 } - - size_x $SAVE_SLOT_SIZE_X - size_y $SAVE_SLOT_SIZE_Y - } - resource $ACS_BMO { - id $ACS_SAVE_SLOT1 - - build - offs_x $SAVE_SLOT_OFFS_X - offs_y { $SAVE_SLOT_START_Y + $SAVE_SLOT_DELTA_Y * 1 } - - size_x $SAVE_SLOT_SIZE_X - size_y $SAVE_SLOT_SIZE_Y - } - resource $ACS_BMO { - id $ACS_SAVE_SLOT2 - - build - offs_x $SAVE_SLOT_OFFS_X - offs_y { $SAVE_SLOT_START_Y + $SAVE_SLOT_DELTA_Y * 2 } - - size_x $SAVE_SLOT_SIZE_X - size_y $SAVE_SLOT_SIZE_Y - } - resource $ACS_BMO { - id $ACS_SAVE_SLOT3 - - build - offs_x $SAVE_SLOT_OFFS_X - offs_y { $SAVE_SLOT_START_Y + $SAVE_SLOT_DELTA_Y * 3 } - - size_x $SAVE_SLOT_SIZE_X - size_y $SAVE_SLOT_SIZE_Y - } - resource $ACS_BMO { - id $ACS_SAVE_SLOT4 - - build - offs_x $SAVE_SLOT_OFFS_X - offs_y { $SAVE_SLOT_START_Y + $SAVE_SLOT_DELTA_Y * 4 } - - size_x $SAVE_SLOT_SIZE_X - size_y $SAVE_SLOT_SIZE_Y - } - resource $ACS_BMO { - id $ACS_SAVE_SLOT5 - - build - offs_x $SAVE_SLOT_OFFS_X - offs_y { $SAVE_SLOT_START_Y + $SAVE_SLOT_DELTA_Y * 5 } - - size_x $SAVE_SLOT_SIZE_X - size_y $SAVE_SLOT_SIZE_Y - } - resource $ACS_BMO { - id $ACS_SAVE_SLOT6 - - build - offs_x $SAVE_SLOT_OFFS_X - offs_y { $SAVE_SLOT_START_Y + $SAVE_SLOT_DELTA_Y * 6 } - - size_x $SAVE_SLOT_SIZE_X - size_y $SAVE_SLOT_SIZE_Y - } - resource $ACS_BMO { - id $ACS_SAVE_SLOT7 - - build - offs_x $SAVE_SLOT_OFFS_X - offs_y { $SAVE_SLOT_START_Y + $SAVE_SLOT_DELTA_Y * 7 } - - size_x $SAVE_SLOT_SIZE_X - size_y $SAVE_SLOT_SIZE_Y - } - - object $ACS_INPUT_FIELD_OBJ { - id $ACS_SAVE_STRING - string_len 20 - ifont 0 - color 0 $COLOR0s - space 1 - string $acsSTR_SAVE_GAME - - align_center - - event { - key $ACS_STARTUP_KEY - time 1 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_SAVE_STRING $ACS_SAVE_STRING 0 0 - } - } - } - - object $ACS_BASE_OBJ { - id $ACS_SAVE_OK - - event { - key $ACS_STARTUP_KEY - time 1 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_SAVE_OK $ACS_SAVE_OK 0 0 - } - } - event { - key $iMOUSE_LEFT_PRESS_CODE - key $iMOUSE_RIGHT_PRESS_CODE - key $VK_RETURN - - time 3 - ev_comm { - command $ACS_EXEC_SEQUENCE $ACS_SAVE_OK 1 0 0 - start_time 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_SAVE_GAME 0 0 0 - start_time 1 - } - ev_comm { - command $ACS_EXIT 1 0 0 0 - start_time 2 - } - } - frame_seq { - id 1 - resource_id $ACS_SAVE_OK - seq 0 $ACS_MAX_FRAME 1 - } - } - object $ACS_BASE_OBJ { - id $ACS_SAVE_CANCEL - - event { - key $ACS_STARTUP_KEY - time 1 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_SAVE_CANCEL $ACS_SAVE_CANCEL 0 0 - } - } - event { - key $iMOUSE_LEFT_PRESS_CODE - key $iMOUSE_RIGHT_PRESS_CODE - key $VK_ESCAPE - - time 3 - ev_comm { - command $ACS_EXEC_SEQUENCE $ACS_SAVE_CANCEL 1 0 0 - start_time 0 - } - ev_comm { - command $ACS_EXIT 1 0 0 0 - start_time 1 - } - } - frame_seq { - id 1 - resource_id $ACS_SAVE_CANCEL - seq 0 $ACS_MAX_FRAME 1 - } - } - object $ACS_INPUT_FIELD_OBJ { - id $ACS_SAVE_SLOT0 - string_len $ACS_SLOT_LEN - ifont 0 - color 0 $COLOR0 - color 1 $COLOR1 - color 2 $COLOR2 - space 1 - - align_center - - event { - key $ACS_STARTUP_KEY - time 2 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_SAVE_SLOT0 $ACS_SAVE_SLOT0 0 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME $ACS_SAVE_SLOT0 0 0 - } - } - event { - key $iMOUSE_LEFT_PRESS_CODE - key $iMOUSE_RIGHT_PRESS_CODE - - time 2 - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME_INPUT $ACS_SAVE_SLOT0 0 0 - start_time 0 - } - ev_comm { - command $ACS_INPUT_STRING $ACS_SAVE_SLOT0 0 0 0 - start_time 1 - } - } - } - object $ACS_INPUT_FIELD_OBJ { - id $ACS_SAVE_SLOT1 - string_len $ACS_SLOT_LEN - ifont 0 - color 0 $COLOR0 - color 1 $COLOR1 - color 2 $COLOR2 - space 1 - - align_center - - event { - key $ACS_STARTUP_KEY - time 2 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_SAVE_SLOT1 $ACS_SAVE_SLOT1 0 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME $ACS_SAVE_SLOT1 1 0 - } - } - event { - key $iMOUSE_LEFT_PRESS_CODE - key $iMOUSE_RIGHT_PRESS_CODE - - time 2 - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME_INPUT $ACS_SAVE_SLOT1 1 0 - start_time 0 - } - ev_comm { - command $ACS_INPUT_STRING $ACS_SAVE_SLOT1 0 0 0 - start_time 1 - } - } - } - object $ACS_INPUT_FIELD_OBJ { - id $ACS_SAVE_SLOT2 - string_len $ACS_SLOT_LEN - ifont 0 - color 0 $COLOR0 - color 1 $COLOR1 - color 2 $COLOR2 - space 1 - - align_center - - event { - key $ACS_STARTUP_KEY - time 2 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_SAVE_SLOT2 $ACS_SAVE_SLOT2 0 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME $ACS_SAVE_SLOT2 2 0 - } - } - event { - key $iMOUSE_LEFT_PRESS_CODE - key $iMOUSE_RIGHT_PRESS_CODE - - time 2 - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME_INPUT $ACS_SAVE_SLOT2 2 0 - start_time 0 - } - ev_comm { - command $ACS_INPUT_STRING $ACS_SAVE_SLOT2 0 0 0 - start_time 1 - } - } - } - object $ACS_INPUT_FIELD_OBJ { - id $ACS_SAVE_SLOT3 - string_len $ACS_SLOT_LEN - ifont 0 - color 0 $COLOR0 - color 1 $COLOR1 - color 2 $COLOR2 - space 1 - - align_center - - event { - key $ACS_STARTUP_KEY - time 2 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_SAVE_SLOT3 $ACS_SAVE_SLOT3 0 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME $ACS_SAVE_SLOT3 3 0 - } - } - event { - key $iMOUSE_LEFT_PRESS_CODE - key $iMOUSE_RIGHT_PRESS_CODE - - time 2 - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME_INPUT $ACS_SAVE_SLOT3 3 0 - start_time 0 - } - ev_comm { - command $ACS_INPUT_STRING $ACS_SAVE_SLOT3 0 0 0 - start_time 1 - } - } - } - object $ACS_INPUT_FIELD_OBJ { - id $ACS_SAVE_SLOT4 - string_len $ACS_SLOT_LEN - ifont 0 - color 0 $COLOR0 - color 1 $COLOR1 - color 2 $COLOR2 - space 1 - - align_center - - event { - key $ACS_STARTUP_KEY - time 2 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_SAVE_SLOT4 $ACS_SAVE_SLOT4 0 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME $ACS_SAVE_SLOT4 4 0 - } - } - event { - key $iMOUSE_LEFT_PRESS_CODE - key $iMOUSE_RIGHT_PRESS_CODE - - time 2 - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME_INPUT $ACS_SAVE_SLOT4 4 0 - start_time 0 - } - ev_comm { - command $ACS_INPUT_STRING $ACS_SAVE_SLOT4 0 0 0 - start_time 1 - } - } - } - object $ACS_INPUT_FIELD_OBJ { - id $ACS_SAVE_SLOT5 - string_len $ACS_SLOT_LEN - ifont 0 - color 0 $COLOR0 - color 1 $COLOR1 - color 2 $COLOR2 - space 1 - - align_center - - event { - key $ACS_STARTUP_KEY - time 2 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_SAVE_SLOT5 $ACS_SAVE_SLOT5 0 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME $ACS_SAVE_SLOT5 5 0 - } - } - event { - key $iMOUSE_LEFT_PRESS_CODE - key $iMOUSE_RIGHT_PRESS_CODE - - time 2 - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME_INPUT $ACS_SAVE_SLOT5 5 0 - start_time 0 - } - ev_comm { - command $ACS_INPUT_STRING $ACS_SAVE_SLOT5 0 0 0 - start_time 1 - } - } - } - object $ACS_INPUT_FIELD_OBJ { - id $ACS_SAVE_SLOT6 - string_len $ACS_SLOT_LEN - ifont 0 - color 0 $COLOR0 - color 1 $COLOR1 - color 2 $COLOR2 - space 1 - - align_center - - event { - key $ACS_STARTUP_KEY - time 2 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_SAVE_SLOT6 $ACS_SAVE_SLOT6 0 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME $ACS_SAVE_SLOT6 6 0 - } - } - event { - key $iMOUSE_LEFT_PRESS_CODE - key $iMOUSE_RIGHT_PRESS_CODE - - time 2 - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME_INPUT $ACS_SAVE_SLOT6 6 0 - start_time 0 - } - ev_comm { - command $ACS_INPUT_STRING $ACS_SAVE_SLOT6 0 0 0 - start_time 1 - } - } - } - object $ACS_INPUT_FIELD_OBJ { - id $ACS_SAVE_SLOT7 - string_len $ACS_SLOT_LEN - ifont 0 - color 0 $COLOR0 - color 1 $COLOR1 - color 2 $COLOR2 - space 1 - - align_center - - event { - key $ACS_STARTUP_KEY - time 2 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_SAVE_SLOT7 $ACS_SAVE_SLOT7 0 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME $ACS_SAVE_SLOT7 7 0 - } - } - event { - key $iMOUSE_LEFT_PRESS_CODE - key $iMOUSE_RIGHT_PRESS_CODE - - time 2 - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME_INPUT $ACS_SAVE_SLOT7 7 0 - start_time 0 - } - ev_comm { - command $ACS_INPUT_STRING $ACS_SAVE_SLOT7 0 0 0 - start_time 1 - } - } - } - -} - -screen { - id $ACS_SAVE_SCREEN2 - background $ACS_SAVE_BACK - - resource $ACS_BMP { - id $ACS_SAVE_BACK - name "resource/actint/iscreen/save/scr02/back.bmp" - } - resource $ACS_BMO { - id $ACS_SAVE_OK - name "resource/actint/iscreen/save/scr02/ok.bmo" - } - resource $ACS_BMO { - id $ACS_SAVE_CANCEL - name "resource/actint/iscreen/save/scr02/cancel.bmo" - } - #define SAVE_STRING_POS_X 220 - #define SAVE_STRING_POS_Y 40 - - #define SAVE_SLOT_OFFS_X 200 - #define SAVE_SLOT_START_Y 145 - #define COLOR0 { 48 + 1 * 256 } - #define COLOR1 { 64 + 1 * 256 } - #define COLOR2 { 96 + 1 * 256 } - - #define SAVE_SLOT_SIZE_X 360 - #define SAVE_SLOT_SIZE_Y 40 - - #define SAVE_STRING_SIZE_X 300 - #define SAVE_STRING_SIZE_Y 50 - - resource $ACS_BMO { - id $ACS_SAVE_STRING - - build - offs_x $SAVE_STRING_POS_X - offs_y $SAVE_STRING_POS_Y - - size_x $SAVE_STRING_SIZE_X - size_y $SAVE_STRING_SIZE_Y - } - - resource $ACS_BMO { - id $ACS_SAVE_SLOT0 - - build - offs_x $SAVE_SLOT_OFFS_X - offs_y { $SAVE_SLOT_START_Y + $SAVE_SLOT_DELTA_Y * 0 } - - size_x $SAVE_SLOT_SIZE_X - size_y $SAVE_SLOT_SIZE_Y - } - resource $ACS_BMO { - id $ACS_SAVE_SLOT1 - - build - offs_x $SAVE_SLOT_OFFS_X - offs_y { $SAVE_SLOT_START_Y + $SAVE_SLOT_DELTA_Y * 1 } - - size_x $SAVE_SLOT_SIZE_X - size_y $SAVE_SLOT_SIZE_Y - } - resource $ACS_BMO { - id $ACS_SAVE_SLOT2 - - build - offs_x $SAVE_SLOT_OFFS_X - offs_y { $SAVE_SLOT_START_Y + $SAVE_SLOT_DELTA_Y * 2 } - - size_x $SAVE_SLOT_SIZE_X - size_y $SAVE_SLOT_SIZE_Y - } - resource $ACS_BMO { - id $ACS_SAVE_SLOT3 - - build - offs_x $SAVE_SLOT_OFFS_X - offs_y { $SAVE_SLOT_START_Y + $SAVE_SLOT_DELTA_Y * 3 } - - size_x $SAVE_SLOT_SIZE_X - size_y $SAVE_SLOT_SIZE_Y - } - resource $ACS_BMO { - id $ACS_SAVE_SLOT4 - - build - offs_x $SAVE_SLOT_OFFS_X - offs_y { $SAVE_SLOT_START_Y + $SAVE_SLOT_DELTA_Y * 4 } - - size_x $SAVE_SLOT_SIZE_X - size_y $SAVE_SLOT_SIZE_Y - } - resource $ACS_BMO { - id $ACS_SAVE_SLOT5 - - build - offs_x $SAVE_SLOT_OFFS_X - offs_y { $SAVE_SLOT_START_Y + $SAVE_SLOT_DELTA_Y * 5 } - - size_x $SAVE_SLOT_SIZE_X - size_y $SAVE_SLOT_SIZE_Y - } - resource $ACS_BMO { - id $ACS_SAVE_SLOT6 - - build - offs_x $SAVE_SLOT_OFFS_X - offs_y { $SAVE_SLOT_START_Y + $SAVE_SLOT_DELTA_Y * 6 } - - size_x $SAVE_SLOT_SIZE_X - size_y $SAVE_SLOT_SIZE_Y - } - resource $ACS_BMO { - id $ACS_SAVE_SLOT7 - - build - offs_x $SAVE_SLOT_OFFS_X - offs_y { $SAVE_SLOT_START_Y + $SAVE_SLOT_DELTA_Y * 7 } - - size_x $SAVE_SLOT_SIZE_X - size_y $SAVE_SLOT_SIZE_Y - } - - object $ACS_INPUT_FIELD_OBJ { - id $ACS_SAVE_STRING - string_len 20 - ifont 0 - color 0 $COLOR0s - space 1 - string $acsSTR_SAVE_GAME - - align_center - - event { - key $ACS_STARTUP_KEY - time 1 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_SAVE_STRING $ACS_SAVE_STRING 0 0 - } - } - } - - object $ACS_BASE_OBJ { - id $ACS_SAVE_OK - - event { - key $ACS_STARTUP_KEY - time 1 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_SAVE_OK $ACS_SAVE_OK 0 0 - } - } - event { - key $iMOUSE_LEFT_PRESS_CODE - key $iMOUSE_RIGHT_PRESS_CODE - key $VK_RETURN - - time 3 - ev_comm { - command $ACS_EXEC_SEQUENCE $ACS_SAVE_OK 1 0 0 - start_time 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_SAVE_GAME 0 0 0 - start_time 1 - } - ev_comm { - command $ACS_EXIT 1 0 0 0 - start_time 2 - } - } - frame_seq { - id 1 - resource_id $ACS_SAVE_OK - seq 0 $ACS_MAX_FRAME 1 - } - } - object $ACS_BASE_OBJ { - id $ACS_SAVE_CANCEL - - event { - key $ACS_STARTUP_KEY - time 1 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_SAVE_CANCEL $ACS_SAVE_CANCEL 0 0 - } - } - event { - key $iMOUSE_LEFT_PRESS_CODE - key $iMOUSE_RIGHT_PRESS_CODE - key $VK_ESCAPE - - time 3 - ev_comm { - command $ACS_EXEC_SEQUENCE $ACS_SAVE_CANCEL 1 0 0 - start_time 0 - } - ev_comm { - command $ACS_EXIT 1 0 0 0 - start_time 1 - } - } - frame_seq { - id 1 - resource_id $ACS_SAVE_CANCEL - seq 0 $ACS_MAX_FRAME 1 - } - } - object $ACS_INPUT_FIELD_OBJ { - id $ACS_SAVE_SLOT0 - string_len $ACS_SLOT_LEN - ifont 0 - color 0 $COLOR0 - color 1 $COLOR1 - color 2 $COLOR2 - space 1 - - align_center - - event { - key $ACS_STARTUP_KEY - time 2 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_SAVE_SLOT0 $ACS_SAVE_SLOT0 0 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME $ACS_SAVE_SLOT0 0 0 - } - } - event { - key $iMOUSE_LEFT_PRESS_CODE - key $iMOUSE_RIGHT_PRESS_CODE - - time 2 - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME_INPUT $ACS_SAVE_SLOT0 0 0 - start_time 0 - } - ev_comm { - command $ACS_INPUT_STRING $ACS_SAVE_SLOT0 0 0 0 - start_time 1 - } - } - } - object $ACS_INPUT_FIELD_OBJ { - id $ACS_SAVE_SLOT1 - string_len $ACS_SLOT_LEN - ifont 0 - color 0 $COLOR0 - color 1 $COLOR1 - color 2 $COLOR2 - space 1 - - align_center - - event { - key $ACS_STARTUP_KEY - time 2 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_SAVE_SLOT1 $ACS_SAVE_SLOT1 0 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME $ACS_SAVE_SLOT1 1 0 - } - } - event { - key $iMOUSE_LEFT_PRESS_CODE - key $iMOUSE_RIGHT_PRESS_CODE - - time 2 - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME_INPUT $ACS_SAVE_SLOT1 1 0 - start_time 0 - } - ev_comm { - command $ACS_INPUT_STRING $ACS_SAVE_SLOT1 0 0 0 - start_time 1 - } - } - } - object $ACS_INPUT_FIELD_OBJ { - id $ACS_SAVE_SLOT2 - string_len $ACS_SLOT_LEN - ifont 0 - color 0 $COLOR0 - color 1 $COLOR1 - color 2 $COLOR2 - space 1 - - align_center - - event { - key $ACS_STARTUP_KEY - time 2 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_SAVE_SLOT2 $ACS_SAVE_SLOT2 0 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME $ACS_SAVE_SLOT2 2 0 - } - } - event { - key $iMOUSE_LEFT_PRESS_CODE - key $iMOUSE_RIGHT_PRESS_CODE - - time 2 - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME_INPUT $ACS_SAVE_SLOT2 2 0 - start_time 0 - } - ev_comm { - command $ACS_INPUT_STRING $ACS_SAVE_SLOT2 0 0 0 - start_time 1 - } - } - } - object $ACS_INPUT_FIELD_OBJ { - id $ACS_SAVE_SLOT3 - string_len $ACS_SLOT_LEN - ifont 0 - color 0 $COLOR0 - color 1 $COLOR1 - color 2 $COLOR2 - space 1 - - align_center - - event { - key $ACS_STARTUP_KEY - time 2 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_SAVE_SLOT3 $ACS_SAVE_SLOT3 0 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME $ACS_SAVE_SLOT3 3 0 - } - } - event { - key $iMOUSE_LEFT_PRESS_CODE - key $iMOUSE_RIGHT_PRESS_CODE - - time 2 - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME_INPUT $ACS_SAVE_SLOT3 3 0 - start_time 0 - } - ev_comm { - command $ACS_INPUT_STRING $ACS_SAVE_SLOT3 0 0 0 - start_time 1 - } - } - } - object $ACS_INPUT_FIELD_OBJ { - id $ACS_SAVE_SLOT4 - string_len $ACS_SLOT_LEN - ifont 0 - color 0 $COLOR0 - color 1 $COLOR1 - color 2 $COLOR2 - space 1 - - align_center - - event { - key $ACS_STARTUP_KEY - time 2 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_SAVE_SLOT4 $ACS_SAVE_SLOT4 0 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME $ACS_SAVE_SLOT4 4 0 - } - } - event { - key $iMOUSE_LEFT_PRESS_CODE - key $iMOUSE_RIGHT_PRESS_CODE - - time 2 - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME_INPUT $ACS_SAVE_SLOT4 4 0 - start_time 0 - } - ev_comm { - command $ACS_INPUT_STRING $ACS_SAVE_SLOT4 0 0 0 - start_time 1 - } - } - } - object $ACS_INPUT_FIELD_OBJ { - id $ACS_SAVE_SLOT5 - string_len $ACS_SLOT_LEN - ifont 0 - color 0 $COLOR0 - color 1 $COLOR1 - color 2 $COLOR2 - space 1 - - align_center - - event { - key $ACS_STARTUP_KEY - time 2 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_SAVE_SLOT5 $ACS_SAVE_SLOT5 0 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME $ACS_SAVE_SLOT5 5 0 - } - } - event { - key $iMOUSE_LEFT_PRESS_CODE - key $iMOUSE_RIGHT_PRESS_CODE - - time 2 - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME_INPUT $ACS_SAVE_SLOT5 5 0 - start_time 0 - } - ev_comm { - command $ACS_INPUT_STRING $ACS_SAVE_SLOT5 0 0 0 - start_time 1 - } - } - } - object $ACS_INPUT_FIELD_OBJ { - id $ACS_SAVE_SLOT6 - string_len $ACS_SLOT_LEN - ifont 0 - color 0 $COLOR0 - color 1 $COLOR1 - color 2 $COLOR2 - space 1 - - align_center - - event { - key $ACS_STARTUP_KEY - time 2 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_SAVE_SLOT6 $ACS_SAVE_SLOT6 0 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME $ACS_SAVE_SLOT6 6 0 - } - } - event { - key $iMOUSE_LEFT_PRESS_CODE - key $iMOUSE_RIGHT_PRESS_CODE - - time 2 - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME_INPUT $ACS_SAVE_SLOT6 6 0 - start_time 0 - } - ev_comm { - command $ACS_INPUT_STRING $ACS_SAVE_SLOT6 0 0 0 - start_time 1 - } - } - } - object $ACS_INPUT_FIELD_OBJ { - id $ACS_SAVE_SLOT7 - string_len $ACS_SLOT_LEN - ifont 0 - color 0 $COLOR0 - color 1 $COLOR1 - color 2 $COLOR2 - space 1 - - align_center - - event { - key $ACS_STARTUP_KEY - time 2 - - ev_comm { - command $ACS_SET_RESOURCE $ACS_SAVE_SLOT7 $ACS_SAVE_SLOT7 0 0 - } - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME $ACS_SAVE_SLOT7 7 0 - } - } - event { - key $iMOUSE_LEFT_PRESS_CODE - key $iMOUSE_RIGHT_PRESS_CODE - - time 2 - ev_comm { - command $ACS_EXT_EVENT $ACS_INIT_SLOT_NAME_INPUT $ACS_SAVE_SLOT7 7 0 - start_time 0 - } - ev_comm { - command $ACS_INPUT_STRING $ACS_SAVE_SLOT7 0 0 0 - start_time 1 - } - } - } - -} - - - - diff --git a/data/resource/actint/hd/hd_background.bmp b/data/resource/actint/hd/hd_background.bmp index 48efe31f..2e426304 100644 Binary files a/data/resource/actint/hd/hd_background.bmp and b/data/resource/actint/hd/hd_background.bmp differ diff --git a/data/resource/actint/hd/side/main_menu_left.bmp b/data/resource/actint/hd/side/main_menu_left.bmp index c406e03b..4f47d51f 100644 Binary files a/data/resource/actint/hd/side/main_menu_left.bmp and b/data/resource/actint/hd/side/main_menu_left.bmp differ diff --git a/data/resource/actint/hd/side/main_menu_right.bmp b/data/resource/actint/hd/side/main_menu_right.bmp index e5d7dccb..ab3ac3d6 100644 Binary files a/data/resource/actint/hd/side/main_menu_right.bmp and b/data/resource/actint/hd/side/main_menu_right.bmp differ diff --git a/data/resource/actint/hd/side/menu_left.bmp b/data/resource/actint/hd/side/menu_left.bmp index 7b45637e..dc318d85 100644 Binary files a/data/resource/actint/hd/side/menu_left.bmp and b/data/resource/actint/hd/side/menu_left.bmp differ diff --git a/data/resource/actint/hd/side/menu_right.bmp b/data/resource/actint/hd/side/menu_right.bmp index 2cd95940..0b4b5c30 100644 Binary files a/data/resource/actint/hd/side/menu_right.bmp and b/data/resource/actint/hd/side/menu_right.bmp differ diff --git a/data/resource/iscreen/text/eng/credits52.txt b/data/resource/iscreen/text/eng/credits52.txt index 25fe3a3a..2fe3cbd7 100644 --- a/data/resource/iscreen/text/eng/credits52.txt +++ b/data/resource/iscreen/text/eng/credits52.txt @@ -1,16 +1,16 @@ -Producer - Paul Potera -Product Marketing Manager - Tristan Hilderley -Quality Assurance Manager - Mark Moormans -Quality Assurance Coordinator - Mike Pearson -Manual - Sara Ley -Opening Animation - John Zwicker - -Internal Testers - Carlin Gartrell, Chris Gardner, Sean McDaniels, -Joe Allen, James Cowgill, Chuck Rice, Adam Turner, Denham Hardman, Becky Starling, -JP Berard, Anthony Lazaro, Scott Jacobs, Beau Norris - -External Testers - Jim Pedicord, Darrell Dik, Kent Coleman, Donald Vess, -Bryce Whitlock, William Baverstock, Andrew Lee, Chris Logan, Lance Eichman, -Paul Cabana, Jeffrey Vitous, Eric Strehl, Ronald Bruton, Andrew Burton, Bliksem Tobey, -Max Cates, Jason Sweat, Ronald Gretz, Anton Damm, Anthony Sage, -Tyler Robertson, Gary Turner, Matt McKeehan +Producer - Paul Potera +Product Marketing Manager - Tristan Hilderley +Quality Assurance Manager - Mark Moormans +Quality Assurance Coordinator - Mike Pearson +Manual - Sara Ley +Opening Animation - John Zwicker + +Internal Testers - Carlin Gartrell, Chris Gardner, Sean McDaniels, +Joe Allen, James Cowgill, Chuck Rice, Adam Turner, Denham Hardman, Becky Starling, +JP Berard, Anthony Lazaro, Scott Jacobs, Beau Norris + +External Testers - Jim Pedicord, Darrell Dik, Kent Coleman, Donald Vess, +Bryce Whitlock, William Baverstock, Andrew Lee, Chris Logan, Lance Eichman, +Paul Cabana, Jeffrey Vitous, Eric Strehl, Ronald Bruton, Andrew Burton, Bliksem Tobey, +Max Cates, Jason Sweat, Ronald Gretz, Anton Damm, Anthony Sage, +Tyler Robertson, Gary Turner, Matt McKeehan diff --git a/data/resource/iscreen/text/rus/credits31.txt b/data/resource/iscreen/text/rus/credits31.txt index 04e6896a..966b0d33 100644 --- a/data/resource/iscreen/text/rus/credits31.txt +++ b/data/resource/iscreen/text/rus/credits31.txt @@ -1,20 +1,20 @@ -ЋЈа®¬­®Ґ бЇ бЁЎ® ЇҐаўл¬ -­  ‡Ґ¬«Ґ ЃҐв -‚ ­ЈҐа ¬, -"Vangers beta-testing Team": - -ЊЁе Ё« "3ABXO3" ”Ґ¤®а®ў -Ђ«ҐЄбҐ© "Allex" „Ґ¬ Є®ў -Ђ«ҐЄбҐ© "Berserker" ‚ бЁ«мҐў -„¬ЁваЁ© "Crazy Sid" €жЄ® -‘ҐаЈҐ© "Damned" ѓҐа бҐў -Ђ«ҐЄбҐ© "Dead Pilot" Љ ўҐи­ЁЄ®ў -Ђ«ҐЄб ­¤а "Dekad" �Ёи®ў -Џ ўҐ« "FlyHippo" Ђ­в®­®ў -Ђ«ҐЄб ­¤а "Klarens Bodiker" Њ ©®а®ў -•.Њ®в®«®Ј -‚ «Ґ­вЁ­ "Master" „®Ўал­Ё­ -‘ҐаЈҐ© "Russian Panther" ‚®а®ЎмҐў -Ђ«ҐЄб ­¤а "Saska" ‘Ґ¬Ё­ -Ђ«ҐЄб ­¤а "Scar" ‚ҐаиЁ­Ё­ -ЊЁе Ё« "Tolstiy" Љ Ў ­®ў -‚ «ҐаЁп "Varust" Ѓ ЄЁҐў  +ЋЈа®¬­®Ґ бЇ бЁЎ® ЇҐаўл¬ +­  ‡Ґ¬«Ґ ЃҐв -‚ ­ЈҐа ¬, +"Vangers beta-testing Team": + +ЊЁе Ё« "3ABXO3" ”Ґ¤®а®ў +Ђ«ҐЄбҐ© "Allex" „Ґ¬ Є®ў +Ђ«ҐЄбҐ© "Berserker" ‚ бЁ«мҐў +„¬ЁваЁ© "Crazy Sid" €жЄ® +‘ҐаЈҐ© "Damned" ѓҐа бҐў +Ђ«ҐЄбҐ© "Dead Pilot" Љ ўҐи­ЁЄ®ў +Ђ«ҐЄб ­¤а "Dekad" �Ёи®ў +Џ ўҐ« "FlyHippo" Ђ­в®­®ў +Ђ«ҐЄб ­¤а "Klarens Bodiker" Њ ©®а®ў +•.Њ®в®«®Ј +‚ «Ґ­вЁ­ "Master" „®Ўал­Ё­ +‘ҐаЈҐ© "Russian Panther" ‚®а®ЎмҐў +Ђ«ҐЄб ­¤а "Saska" ‘Ґ¬Ё­ +Ђ«ҐЄб ­¤а "Scar" ‚ҐаиЁ­Ё­ +ЊЁе Ё« "Tolstiy" Љ Ў ­®ў +‚ «ҐаЁп "Varust" Ѓ ЄЁҐў  diff --git a/data/resource/iscreen/text/rus/credits42.txt b/data/resource/iscreen/text/rus/credits42.txt index 677819c8..822d1e74 100644 --- a/data/resource/iscreen/text/rus/credits42.txt +++ b/data/resource/iscreen/text/rus/credits42.txt @@ -1,17 +1,17 @@ -€Ј®ам “бвЁ­®ў Ё Ћ«ҐЈ ЃҐ«®Ў®а®¤®ў - §  в®, зв® ®­Ё ­ з «мбвў®, ¤ о饥 ЎЁЎл -а §а Ў®взЁЄ ¬ б § в Ґ­­®© ­ ¤Ґ¦¤®© ­  в®, з⮠⥠ўбҐ-в ЄЁ ᤥ« о⠯஥Єв -‘ҐаЈҐ© Љ ЇгбвЁ­ - §  ­ҐЁ¬®ўҐа­®Ґ Є®«ЁзҐбвў® ¬Ё«м, ­ Є в ­­ле Ї® -Їл«м­л¬ ¤®а®Ј ¬ –ҐЇЁ ў Ї®ЁбЄ е Ў Ј®ў, ўа Ј®ў Ё ¤Ґ­ҐЈ -„¬ЁваЁ© ‡ е а®ў (¬«.) - §  вҐбвЁа®ў ­ЁҐ Є Є в Є®ў®Ґ -„¬ЁваЁ© ‡ е а®ў (бв.) - §  ­Ґ¬ «лҐ гбЁ«Ёп Ї® Їа®¤ўЁ¦Ґ­Ёо Їа®ҐЄв  -Њ ЄбЁ¬ ЊЁе «Ґў - §  в®, зв® ў १г«мв вҐ ҐЈ® ЇҐаҐў®¤ , ®ЇаҐ¤Ґ«Ґ­­лҐ ўҐйЁ -Ўл«Ё Їа ўЁ«м­® Ї®­пвл ў Interactive Magic -Ђ«ҐЄб ­¤а ЊЁе ©«®ў - §  а §а Ў®вЄг Ја ¬®в­®© ¬ аЄҐвЁ­Ј®ў®© -Ї®«ЁвЁЄЁ, १г«мв вл Є®в®а®© ­Ґ § бв ўпв бҐЎп ¦¤ вм -Њ аЁ­  ЃҐ«®Ў®а®¤®ў  - §  ¬ҐЈ Ў ©вл ЇаҐбб५Ё§®ў Ё ­Ґ¬Ґап­­®Ґ Є®«ЁзҐбвў® б«®ў, -ў«Ёвле ў гиЁ нвЁ¬ бва ­­л¬ ¦га­ «Ёбв ¬ -Љ®­бв ­вЁ­ ЊЁа®­®ўЁз - §  в®, зв® ®¤­ ¦¤л «Ґв®¬ ЇаЁўҐ§ §¤®а®ўҐ­­го Ў ­¤гаг, -Є®в®а п в Є Ё ­Ґ § а Ў®в «  -‘ҐаЈҐ© €Ј­ в쥢 - ўҐЎ¬ бвҐа, ¤Ё§ ©­Ґа -‘ ­ ­ “и ­®ў - ¤Ё§ ©­Ґа -‚ᥠ®бв «м­лҐ ў ЃгЄҐ - §  в®, зв® ўбҐЈ¤  ўҐаЁ«Ё ў Їа®ҐЄв... +€Ј®ам “бвЁ­®ў Ё Ћ«ҐЈ ЃҐ«®Ў®а®¤®ў - §  в®, зв® ®­Ё ­ з «мбвў®, ¤ о饥 ЎЁЎл +а §а Ў®взЁЄ ¬ б § в Ґ­­®© ­ ¤Ґ¦¤®© ­  в®, з⮠⥠ўбҐ-в ЄЁ ᤥ« о⠯஥Єв +‘ҐаЈҐ© Љ ЇгбвЁ­ - §  ­ҐЁ¬®ўҐа­®Ґ Є®«ЁзҐбвў® ¬Ё«м, ­ Є в ­­ле Ї® +Їл«м­л¬ ¤®а®Ј ¬ –ҐЇЁ ў Ї®ЁбЄ е Ў Ј®ў, ўа Ј®ў Ё ¤Ґ­ҐЈ +„¬ЁваЁ© ‡ е а®ў (¬«.) - §  вҐбвЁа®ў ­ЁҐ Є Є в Є®ў®Ґ +„¬ЁваЁ© ‡ е а®ў (бв.) - §  ­Ґ¬ «лҐ гбЁ«Ёп Ї® Їа®¤ўЁ¦Ґ­Ёо Їа®ҐЄв  +Њ ЄбЁ¬ ЊЁе «Ґў - §  в®, зв® ў १г«мв вҐ ҐЈ® ЇҐаҐў®¤ , ®ЇаҐ¤Ґ«Ґ­­лҐ ўҐйЁ +Ўл«Ё Їа ўЁ«м­® Ї®­пвл ў Interactive Magic +Ђ«ҐЄб ­¤а ЊЁе ©«®ў - §  а §а Ў®вЄг Ја ¬®в­®© ¬ аЄҐвЁ­Ј®ў®© +Ї®«ЁвЁЄЁ, १г«мв вл Є®в®а®© ­Ґ § бв ўпв бҐЎп ¦¤ вм +Њ аЁ­  ЃҐ«®Ў®а®¤®ў  - §  ¬ҐЈ Ў ©вл ЇаҐбб५Ё§®ў Ё ­Ґ¬Ґап­­®Ґ Є®«ЁзҐбвў® б«®ў, +ў«Ёвле ў гиЁ нвЁ¬ бва ­­л¬ ¦га­ «Ёбв ¬ +Љ®­бв ­вЁ­ ЊЁа®­®ўЁз - §  в®, зв® ®¤­ ¦¤л «Ґв®¬ ЇаЁўҐ§ §¤®а®ўҐ­­го Ў ­¤гаг, +Є®в®а п в Є Ё ­Ґ § а Ў®в «  +‘ҐаЈҐ© €Ј­ в쥢 - ўҐЎ¬ бвҐа, ¤Ё§ ©­Ґа +‘ ­ ­ “и ­®ў - ¤Ё§ ©­Ґа +‚ᥠ®бв «м­лҐ ў ЃгЄҐ - §  в®, зв® ўбҐЈ¤  ўҐаЁ«Ё ў Їа®ҐЄв... diff --git a/lib/xgraph/xgraph.cpp b/lib/xgraph/xgraph.cpp index a8c7366d..763b9734 100644 --- a/lib/xgraph/xgraph.cpp +++ b/lib/xgraph/xgraph.cpp @@ -151,19 +151,19 @@ int XGR_Screen::init(int x,int y,int flags_in) } } std::cout<<"SDL_SetWindowTitle"<next; } consoleReport(n_players); - if (time_to_live && !(transferring | games.size() | n_players | clients.size())) { + if (time_to_live && !(transferring | (games.size() == 0) | n_players | clients.size())) { if (!time_to_destroy) time_to_destroy = SDL_GetTicks() + time_to_live * 1000; } else diff --git a/src/3d/dynamics.cpp b/src/3d/dynamics.cpp index 2051923c..2ba85ff9 100644 --- a/src/3d/dynamics.cpp +++ b/src/3d/dynamics.cpp @@ -29,6 +29,10 @@ struct ParticleProcess; #include "../iscreen/controls.h" +#include "../iscreen/iscreen_options.h" +#include "../iscreen/iscreen.h" +extern iScreenOption** iScrOpt; + #undef random #define random(num) ((int)(((long)_rand()*(num)) >> 15)) @@ -2482,6 +2486,10 @@ void Object::controls(int mode,int param) } break; case CONTROLS::JUMP_USING_ACCUMULATED_POWER: + #ifndef _SURMAP_ + if (NetworkON && (strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(),"eleepod bath")==0 || strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(),"Ў ­п н«ЁЇ®¤ ")==0)) break; + #endif + if(jump_power){ jump(); if(active) @@ -2625,9 +2633,13 @@ void Object::direct_keyboard_control() if(XKey.Pressed(VK_INSERT) | XKey.Pressed('A')) controls(CONTROLS::JUMP_POWER_ACCUMULATION_ON); - else - if(jump_power) + else { + #ifndef _SURMAP_ + if(jump_power && !(NetworkON && (strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(),"eleepod bath")==0 || strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(),"Ў ­п н«ЁЇ®¤ ")==0))) { controls(CONTROLS::JUMP_USING_ACCUMULATED_POWER); + } + #endif + } if(XKey.Pressed('Z')) controls(CONTROLS::VIRTUAL_UP); @@ -2724,8 +2736,11 @@ void Object::direct_keyboard_control() if(iKeyPressed(iKEY_ACTIVATE_KID)) controls(CONTROLS::JUMP_POWER_ACCUMULATION_ON); else - if(jump_power) + #ifndef _SURMAP_ + if(jump_power && !(NetworkON && (strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(),"eleepod bath")==0 || strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(),"Ў ­п н«ЁЇ®¤ ")==0))) { controls(CONTROLS::JUMP_USING_ACCUMULATED_POWER); + } + #endif //if(iKeyPressed(iKEY_VERTICAL_THRUST)) // controls(CONTROLS::HELICOPTER_UP); @@ -2939,10 +2954,19 @@ void Object::mechous_analysis(double dt) int i; dt *= speed_correction_factor; if(Status & SOBJ_AUTOMAT){ - if(jump_power && ++jump_power > max_jump_power) + if(jump_power && ++jump_power > max_jump_power + #ifndef _SURMAP_ + && !(NetworkON && (strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(),"eleepod bath")==0 || strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(),"Ў ­п н«ЁЇ®¤ ")==0)) + #endif + ) { jump(); + } } else { - if(jump_power && CheckStartJump(this)){ + if(jump_power && CheckStartJump(this) + #ifndef _SURMAP_ + && !(NetworkON && (strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(),"eleepod bath")==0 || strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(),"Ў ­п н«ЁЇ®¤ ")==0)) + #endif + ) { jump(); if(active) SOUND_KIDPUSH(); diff --git a/src/actint/aci_str.h b/src/actint/aci_str.h index feb067b3..9b598c2a 100644 --- a/src/actint/aci_str.h +++ b/src/actint/aci_str.h @@ -1,126 +1,133 @@ - -/* - actInt string defines - - English Version: - #define 1 "..." - - Local Version: - #define 2 "..." -*/ - -#define aciSTR_ON1 "ON" -#define aciSTR_ON2 "‚Є«." - -#define aciSTR_OFF1 "OFF" -#define aciSTR_OFF2 "‚лЄ«." - -#define aciSTR_DAY1 "Day" -#define aciSTR_DAY2 "„Ґ­м" - -#define aciSTR_UNDEFINED_PRICE1 "Cost: UNDEFINED" -#define aciSTR_UNDEFINED_PRICE2 "–Ґ­ : Ќ…ЋЏђ…„…‹…ЌЂ" - -#define aciSTR_PRICE1 "Cost: " -#define aciSTR_PRICE2 "–Ґ­ : " - -#define aciSTR_EMPTY_SLOT1 "EMPTY SLOT" -#define aciSTR_EMPTY_SLOT2 "‘ў®Ў®¤­®" - -#define aciSTR_UNNAMED_SAVE1 "UNNAMED" -#define aciSTR_UNNAMED_SAVE2 "‘ў®Ў®¤­л©" - -#define aciSTR_AUTOSAVE1 "AUTOSAVE" -#define aciSTR_AUTOSAVE2 "Ђўв®§ ЇЁбм" - -// Multiplayer statistics... -#define aciSTR_WINS1 "wins" -#define aciSTR_WINS2 "Ї®ЎҐ¤" - -#define aciSTR_LOSSES1 "losses" -#define aciSTR_LOSSES2 "Ї®а ¦Ґ­Ё©" - -#define aciSTR_Ware11 "Ware #1" -#define aciSTR_Ware12 "’®ў а #1" - -#define aciSTR_Ware21 "Ware #2" -#define aciSTR_Ware22 "’®ў а #2" - -#define aciSTR_Checkpoints1 "Checkpoint" -#define aciSTR_Checkpoints2 "ќв Ї" - -// Parameters... -#define aciSTR_LUCK1 "LUCK" -#define aciSTR_LUCK2 "“„Ђ—Ђ" - -#define aciSTR_DOMINANCE1 "DOMINANCE" -#define aciSTR_DOMINANCE2 "Ђ‚’Ћђ€’…’" - -#define aciSTR_BROKEN1 "Broken..." -#define aciSTR_BROKEN2 "‘«®¬ ­..." - -#define aciSTR_ENERGY_SHIELD1 "Energy Shield:" -#define aciSTR_ENERGY_SHIELD2 "ќ­ҐаЈҐвЁзҐбЄЁ© йЁв:" - -#define aciSTR_RESTORING_SPEED1 "Restoring Speed:" -#define aciSTR_RESTORING_SPEED2 "ђҐЈҐ­Ґа жЁп йЁв :" - -#define aciSTR_MECHANIC_ARMOR1 "Armor:" -#define aciSTR_MECHANIC_ARMOR2 "Ѓа®­п:" - -#define aciSTR_VELOCITY1 "Velocity:" -#define aciSTR_VELOCITY2 "‘Є®а®бвм:" - -#define aciSTR_SPIRAL_CAPACITY1 "Spiral Capacity:" -#define aciSTR_SPIRAL_CAPACITY2 "…¬Є®бвм ‘ЇЁа «Ё:" - -#define aciSTR_AIR_RESERVE1 "Air Reserve:" -#define aciSTR_AIR_RESERVE2 "‡ Ї б ў®§¤ге :" - -#define aciSTR_DAMAGE1 "Damage:" -#define aciSTR_DAMAGE2 "“а®­:" - -#define aciSTR_LOAD1 "Load:" -#define aciSTR_LOAD2 "…¬Є®бвм ¬ Ј §Ё­ :" - -#define aciSTR_SHOTS1 "Shots/Sec:" -#define aciSTR_SHOTS2 "‚лбв५®ў/‘ҐЄ:" - -#define aciSTR_BURST1 "Burst:" -#define aciSTR_BURST2 "‘Є®а®бвм ўл«Ґв :" - -#define aciSTR_WORKING_TIME1 "Working Time:" -#define aciSTR_WORKING_TIME2 "ђҐбгаб:" - -#define aciSTR_SECONDS1 "sec" -#define aciSTR_SECONDS2 "ᥪ" - -#define aciSTR_IN_PACK1 "In Pack:" -#define aciSTR_IN_PACK2 "‚ Ї ЄҐвҐ:" - -#define aciSTR_NO_CASH1 "Not enough cash" -#define aciSTR_NO_CASH2 "ЌҐ¤®бв в®з­® ¤Ґ­ҐЈ" - -// Buttons text... -#define aciSTR_PICKUP_ITEMS_OFF1 "Pick-up items OFF" -#define aciSTR_PICKUP_ITEMS_OFF2 "ЌҐ Ї®¤ЎЁа вм ЇаҐ¤¬Ґвл" - -#define aciSTR_PICKUP_WEAPONS_OFF1 "Pick-up weapons OFF" -#define aciSTR_PICKUP_WEAPONS_OFF2 "ЌҐ Ї®¤ЎЁа вм ®аг¦ЁҐ" - -// Shop AVI text... -#define aciSTR_PutThis1 "Put this" -#define aciSTR_PutThis2 "Џ®«®¦Ёвм" - - -//Van-War game restrictions -#define aciSTR_RESTRICTIONS1 "Game restrictions:" -#define aciSTR_RESTRICTIONS2 "ЋЈа ­ЁзҐ­Ёп ЁЈал:" - -//Van-War statistics -#define aciSTR_STATISTICS1 "Statistics:" -#define aciSTR_STATISTICS2 "‘в вЁбвЁЄ :" - -//Van-War time for statistics -#define aciSTR_MINUTES1 "minutes" -#define aciSTR_MINUTES2 "¬Ё­гв" + +/* + actInt string defines + + English Version: + #define 1 "..." + + Local Version: + #define 2 "..." +*/ + +#define aciSTR_ON1 "ON" +#define aciSTR_ON2 "‚Є«." + +#define aciSTR_OFF1 "OFF" +#define aciSTR_OFF2 "‚лЄ«." + +#define aciSTR_DAY1 "Day" +#define aciSTR_DAY2 "„Ґ­м" + +#define aciSTR_UNDEFINED_PRICE1 "Cost: UNDEFINED" +#define aciSTR_UNDEFINED_PRICE2 "–Ґ­ : Ќ…ЋЏђ…„…‹…ЌЂ" + +#define aciSTR_PRICE1 "Cost: " +#define aciSTR_PRICE2 "–Ґ­ : " + +#define aciSTR_EMPTY_SLOT1 "EMPTY SLOT" +#define aciSTR_EMPTY_SLOT2 "‘ў®Ў®¤­®" + +#define aciSTR_UNNAMED_SAVE1 "UNNAMED" +#define aciSTR_UNNAMED_SAVE2 "‘ў®Ў®¤­л©" + +#define aciSTR_AUTOSAVE1 "AUTOSAVE" +#define aciSTR_AUTOSAVE2 "Ђўв®§ ЇЁбм" + +// Multiplayer statistics... +#define aciSTR_KILLS1 "kills" +#define aciSTR_KILLS2 "гЎЁв®" + +#define aciSTR_DEATHS1 "deaths" +#define aciSTR_DEATHS2 "ᬥа⥩" + +#define aciSTR_Ware11 "Ware #1" +#define aciSTR_Ware12 "’®ў а #1" + +#define aciSTR_Ware21 "Ware #2" +#define aciSTR_Ware22 "’®ў а #2" + +#define aciSTR_Checkpoints1 "Checkpoint" +#define aciSTR_Checkpoints2 "ќв Ї" + +// Parameters... +#define aciSTR_LUCK1 "LUCK" +#define aciSTR_LUCK2 "“„Ђ—Ђ" + +#define aciSTR_DOMINANCE1 "DOMINANCE" +#define aciSTR_DOMINANCE2 "Ђ‚’Ћђ€’…’" + +#define aciSTR_BROKEN1 "Broken..." +#define aciSTR_BROKEN2 "‘«®¬ ­..." + +#define aciSTR_ENERGY_SHIELD1 "Energy Shield:" +#define aciSTR_ENERGY_SHIELD2 "ќ­ҐаЈҐвЁзҐбЄЁ© йЁв:" + +#define aciSTR_RESTORING_SPEED1 "Restoring Speed:" +#define aciSTR_RESTORING_SPEED2 "ђҐЈҐ­Ґа жЁп йЁв :" + +#define aciSTR_MECHANIC_ARMOR1 "Armor:" +#define aciSTR_MECHANIC_ARMOR2 "Ѓа®­п:" + +#define aciSTR_VELOCITY1 "Velocity:" +#define aciSTR_VELOCITY2 "‘Є®а®бвм:" + +#define aciSTR_SPIRAL_CAPACITY1 "Spiral Capacity:" +#define aciSTR_SPIRAL_CAPACITY2 "…¬Є®бвм ‘ЇЁа «Ё:" + +#define aciSTR_AIR_RESERVE1 "Air Reserve:" +#define aciSTR_AIR_RESERVE2 "‡ Ї б ў®§¤ге :" + +#define aciSTR_DAMAGE1 "Damage:" +#define aciSTR_DAMAGE2 "“а®­:" + +#define aciSTR_LOAD1 "Load:" +#define aciSTR_LOAD2 "…¬Є®бвм ¬ Ј §Ё­ :" + +#define aciSTR_SHOTS1 "Shots/Sec:" +#define aciSTR_SHOTS2 "‚лбв५®ў/‘ҐЄ:" + +#define aciSTR_BURST1 "Burst:" +#define aciSTR_BURST2 "‘Є®а®бвм ўл«Ґв :" + +#define aciSTR_WORKING_TIME1 "Working Time:" +#define aciSTR_WORKING_TIME2 "ђҐбгаб:" + +#define aciSTR_SECONDS1 "sec" +#define aciSTR_SECONDS2 "ᥪ" + +#define aciSTR_IN_PACK1 "In Pack:" +#define aciSTR_IN_PACK2 "‚ Ї ЄҐвҐ:" + +#define aciSTR_NO_CASH1 "Not enough cash" +#define aciSTR_NO_CASH2 "ЌҐ¤®бв в®з­® ¤Ґ­ҐЈ" + +// Buttons text... +#define aciSTR_PICKUP_ITEMS_OFF1 "Pick-up items OFF" +#define aciSTR_PICKUP_ITEMS_OFF2 "ЌҐ Ї®¤ЎЁа вм ЇаҐ¤¬Ґвл" + +#define aciSTR_PICKUP_WEAPONS_OFF1 "Pick-up weapons OFF" +#define aciSTR_PICKUP_WEAPONS_OFF2 "ЌҐ Ї®¤ЎЁа вм ®аг¦ЁҐ" + +// Shop AVI text... +#define aciSTR_PutThis1 "Put this" +#define aciSTR_PutThis2 "Џ®«®¦Ёвм" + +//Van-War game restrictions +#define aciSTR_RESTRICTIONS1 "GAME RESTRICTIONS" +#define aciSTR_RESTRICTIONS2 "ЋѓђЂЌ€—…Ќ€џ €ѓђ›" + +//Van-War statistics +#define aciSTR_STATISTICS1 "INF-STATISTICS" +#define aciSTR_STATISTICS2 "€Ќ”-‘’Ђ’€‘’€ЉЂ" + +//Van-War kills for statistics +#define aciSTR_KILLS_NEED1 "kills:" +#define aciSTR_KILLS_NEED2 "гЎЁ©бвў:" + +//Van-War time for statistics +#define aciSTR_MINUTES1 "minutes:" +#define aciSTR_MINUTES2 "¬Ё­гв:" + +//Mechosoma one at a time for statistics +#define aciSTR_OAAT1 "one at a time:" +#define aciSTR_OAAT2 "¬ ЄбЁ¬г¬ в®ў а  §  а §:" \ No newline at end of file diff --git a/src/actint/actint.cpp b/src/actint/actint.cpp index 884e60f7..a7f541ba 100644 --- a/src/actint/actint.cpp +++ b/src/actint/actint.cpp @@ -26,12 +26,18 @@ #include "../sound/hsound.h" #include "layout.h" + +#include "../iscreen/iscreen_options.h" +#include "../iscreen/iscreen.h" +#include "../network.h" + +extern iScreenOption** iScrOpt; /* ----------------------------- STRUCT SECTION ----------------------------- */ /* ----------------------------- EXTERN SECTION ----------------------------- */ template <> void layout(invMatrix* view, int width, int height){ unsigned int anchor = view->anchor; - + if(anchor & WIDGET_ANCHOR_INITIALIZED){ std::cout<<" WARNING: layout is already done"<GetValueCHR(); + if (NetworkON && my_server_data.GameType == 2 && CurrentWorld != 3 && (strcmp(game_name,"satinan")==0 || strcmp(game_name,"б вЁ­ ­")==0)) { + aScrDisp->send_event(EV_TELEPORT, 3); + } + else if (NetworkON && my_server_data.GameType == 0 && CurrentWorld != 12 && (strcmp(game_name,"aibatr")==0 || strcmp(game_name," ЁЎ ва")==0)) { + aScrDisp->send_event(EV_TELEPORT, 12); + } + else if (NetworkON && my_server_data.GameType == 0 && CurrentWorld != 12 && strcmp(game_name,"speed konoval")==0) { + aScrDisp->send_event(EV_TELEPORT, 12); + } + else if (NetworkON && my_server_data.GameType == 0 && CurrentWorld != 8 && (strcmp(game_name,"battle for hmok")==0 || strcmp(game_name,"ЎЁвў  §  嬮Є")==0)) { + aScrDisp->send_event(EV_TELEPORT, 8); + } + else if (NetworkON && my_server_data.GameType == 0 && CurrentWorld != 11 && (strcmp(game_name,"mechoxes")==0 || strcmp(game_name,"¬Ґе®ЄбҐб")==0)) { + aScrDisp->send_event(EV_TELEPORT, 11); + } + else if (NetworkON && my_server_data.GameType == 2 && CurrentWorld != 8 && strcmp(game_name,"tankacide-run")==0) { + aScrDisp->send_event(EV_TELEPORT, 8); + } + else if (NetworkON && my_server_data.GameType == 0 && CurrentWorld != 7 && strcmp(game_name,"mountain king")==0) { + aScrDisp->send_event(EV_TELEPORT, 7); + } flags &= ~AS_ISCREEN; if(iscr_iP) iscr_iP -> finit(); diff --git a/src/actint/ascr_fnc.cpp b/src/actint/ascr_fnc.cpp index 76517729..9423545a 100644 --- a/src/actint/ascr_fnc.cpp +++ b/src/actint/ascr_fnc.cpp @@ -1,7262 +1,7296 @@ -/* ---------------------------- INCLUDE SECTION ----------------------------- */ - -#include "../global.h" -#include "../lang.h" -#include - -#if defined(__APPLE__) || __GNUC__ < 9 -#include -#else -#include -#endif - -#include "../runtime.h" - -#include "../network.h" - -#include "../terra/world.h" - -#include "../iscreen/hfont.h" -#include "../iscreen/iscreen.h" -#include "../iscreen/iscript.h" -#include "../iscreen/iml.h" - -#include "item_api.h" -#include "../units/uvsapi.h" -#include "../units/magnum.h" - -#include "../uvs/univang.h" -#include "../uvs/diagen.h" - -#include "a_consts.h" - -#include "actint.h" -#include "credits.h" -#include "aci_str.h" - -#include "mlconsts.h" -#include "mlstruct.h" - -#include "../iscreen/ikeys.h" -#include "../iscreen/zip.h" - -#include "../iscreen/ext_evnt.h" - -#include "../sound/hsound.h" - -#include "aci_evnt.h" -#include "acsconst.h" -#include "aci_scr.h" -#include "chtree.h" - -#if defined(__APPLE__) || __GNUC__ < 9 -#else -namespace fs = std::filesystem; -#endif - -/* ----------------------------- STRUCT SECTION ----------------------------- */ -/* ----------------------------- EXTERN SECTION ----------------------------- */ - -#ifdef _DEMO_ -extern int aciCompleteGameFlag; -#endif - -extern int aciPrevJumpCount; -extern PlayerData** iPlayers; - -extern int dgMood; -extern int iMultiFlag; -extern int aciCurLuck; -extern int aciPrevLuck; -extern const char* iVideoPath; - -extern int aciCurDominance; -extern int aciPrevDominance; - -extern char* acsBackupStr; -extern unsigned char* palbuf; - -extern int RAM16; - -extern int aciPickupItems; -extern int aciPickupDevices; - -extern int iNumPlayers; - -extern int prevWorld; - -extern uvsActInt* GGamer; -extern uvsActInt* GCharItem; - -extern unsigned char* iscrPal; - - -extern int iScreenActive; -extern int iSlotNumber; - -extern int ShowImageKeyFlag; -extern int ShowImageMouseFlag; - -extern uvsContimer ConTimer; - -extern int GameQuantReturnValue; - -extern int aci_SecondMatrixID; -extern int curMatrixID; - -extern actIntDispatcher* aScrDisp; -extern char* aImageBmp; - -extern unsigned char* aCellFrame; -extern unsigned char* actIntPal; - -extern int beebos; -extern int uvsCurrentWorldUnable; - -extern int aCellSize; -extern int iCellSize; -extern int aci_CellSize; - -extern int iMouseX; -extern int iMouseY; - -extern int iEvLineID; - -extern int curMatrix; - -extern int ViewX; -extern int ViewY; - -extern short iMouseSizeX; -extern short iMouseSizeY; -extern short iMouseSize; -extern unsigned char* iMouseFrames; - -extern short aMouseSizeX; -extern short aMouseSizeY; -extern short aMouseSize; -extern unsigned char* aMouseFrames; - -extern short MouseSizeX; -extern short MouseSizeY; -extern short MouseSize; -extern unsigned char* MouseFrames; - -extern unsigned char* aciCurColorScheme; -extern int aciTeleportEvent; - -extern uvsVanger* Gamer; - -extern int MouseSize2; - -extern int camera_moving_xy_enable; -extern int camera_moving_z_enable; - -extern int camera_slope_enable; - -extern int camera_rotate_enable; - -#ifdef _ACTINT_MEMSTAT_ -extern void* memPtr[]; -extern int memIndex; -#endif - -extern int iCurMultiGame; - -/* --------------------------- PROTOTYPE SECTION ---------------------------- */ - -void uvsChangeCycle(void); -void iSortPlayers(int mode = 0); - -void aciInitEndGame(int id); -int aciTextQuant(void); - -void aciAddTabutask(int num); -void aciCompleteTabutask(void); -void aciDisableParametersMenu(void); - -void uvsTabuComplete(int i); -void uvsTabuCreate(uvsActInt* pa, int num); - -void aciReadItmText(void); - -char* uvsGetNameByID(int type, int& ID); -char* aciGetItemEscave(int p2); - -void acsChangeStrState(int id); -void acsSetStrState(int id,int state); -int acsGetStrState(int id); - -int uvsReturnWorldGamerVisit(int where); - -void uvsChangeLuck(void); -void uvsChangeDominance(void); - -void iSoundQuant(int value = 0); - -void i_slake_pal(unsigned char* p,int delta); -void i_evince_pal(unsigned char* p,int delta); - -void aWriteHelpString(int count, int* x, int* y, int font, unsigned char **pstr, int timer, int color, int space, unsigned int *pcolor); - -void EffectsOff(void); - -void iSaveData(void); -void iLoadData(void); - -void acsSaveData(void); -void acsLoadData(void); -void acsCompressData(char* p); -void acsDecompressData(char* p); - -void aciShowFrags(void); - -void aciRedrawParamsPanel(int x,int y,int sx,int sy); - -void aciSaveUVSList(XStream& fh,uvsActInt* p); -void aciLoadUVSList(XStream& fh,uvsActInt** p,int list_type = 0); -void aciFreeUVSList(uvsActInt* p); - -void aciFreeUVS(void); - -void aciPutTreasureItem(void); -void aciStealItem(int type); - -void acsPrepareSlotName(int id,int slot_num); -void acsPrepareSlotNameInput(int id,int slot_num); - -int acsQuant(void); -void acsHandleExtEvent(int code,int data0 = 0,int data1 = 0,int data2 = 0); - -void GeneralSystemLoad(XStream& in); -void GeneralSystemSave(XStream& out); - -void load_map_bmp(int num); -void set_map_to_ibs(ibsObject* ibs); -void set_mouse_cursor(char* p,int sx,int sy); -void restore_mouse_cursor(void); - -void aciInitAviObject(void); -void aciFreeAll(void); -void loadMouseFrames(void); - -void build_cell_frame(void); -void free_cell_frame(void); - -void swap_buf_col(int src,int dest,int sx,int sy,unsigned char* buf); -void mem_putspr(int x,int y,int sx,int sy,int bsx,int bsy,unsigned char* src,unsigned char* dest); -void mem_rectangle(int x,int y,int sx,int sy,int bsx,int col_in,int col_out,int mode,void* buf); -void aParseScript(const char* fname,const char* bname = NULL); -void acsParseScript(const char* fname,const char* bname = NULL); - -void aciChangeWorld(int w_id); -void aciInitWorldIDs(void); -void aciPrepareWorldsMenu(void); - -void aciInitPanel(InfoPanel* p,unsigned char* str); -void aciClearQuestMenu(void); - -void aciInitShopButtons(void); - -void aciSet_aMouse(void); -void aciSet_iMouse(void); - -void aInit(void); -void aRedraw(void); -void aLoadFonts(void); -void aFreeFonts(void); - -void aKeyInit(void); -void aKeyTrap(SDL_Event *k); -void aKeyQuant(void); -void actIntQuant(void); -void aci_iScreenQuant(void); - -void aciSetCameraMenu(void); -void aciHandleCameraEvent(int code,int data); - -void aci_setMatrixBorder(void); -void aci_setScMatrixBorder(void); -void aciAutoMoveItems(void); -void aciSetMechName(void); -void aciSellMoveItem(void); -void aciRemoveUvsItem(uvsActInt* ptr); -void aciSell_Item(invItem* p); -void aciSell_Matrix(invMatrix* p); -void aciInitInfoPanels(void); -int aciCheckSellItem(void); -void aciSetTimePanel(void); -void aciInitEvLineID(void); -void aciChangeList(void); -void aciChangeLineID(void); -void aciInitShopItems(void); - -void aciCloseShopMenu(void); -void aciShopMenuUp(void); -void aciShopMenuDown(void); -void aciBuildShopList(void); -void aciInitShopList(void); -void aciChooseShopItem(void); -void aciSetShopItem(int id); - -void aciNextPhrase(void); -void aciStartSpeech(void); - -void aciEscaveKickOut(void); - -void aciInitMechosInfo(invMatrix* p,InfoPanel* ip); - -void aciOfferEleech(void); -void aciWaitNextPeriod(void); -void aciOfferWeezyk(void); -void aciGetEleech(void); - -void aciNextShopItem(void); -void aciPrevShopItem(void); -void aciInitShopAvi(void); -void aciBuyItem(void); - -void aciOpenGate(void); -void aciCloseGate(void); - -void SelectCompasTarget(const char * n); -char* GetCompasTarget(void); - -int aciCheckCredits(void); - -void aciShowCamerasMenu(int x,int y,int sx,int sy); -void aciHandleSubmenuEvent(int id,fncMenuItem* p); - -int aciGetCurCycle(void); - -void aciInitAviID(void); -void aciChangeAviIndex(void); - -void aciBuildQuestList(void); - -char* aciGetItemLoad(invItem* p,int mode); -char* aciGetPrice(iListElement* p,int mode,int sell_mode); -void aciInitPricePanel(InfoPanel* ip,iListElement* p,int mode,int sell_mode); -int aciGetCurMatrixPrice(void); - -void aciCHandler(int key); - -int aciCheckSlot(void); - -void iScrQuantPrepare(void); -void iScrQuantFinit(void); - -void show_map(int x,int y,int sx,int sy); - -void set_mouse(void); - -void a_calc_tables(void); -void a_buf_line(int x1,int y1,int x2,int y2,int col,int sx,int sy,unsigned char* buf); - -void aMS_init(void); - -void aci_SendEvent(int cd,int dt = 0); - -void aciPackFile(char* fname); -void aciUnPackFile(char* fname); - -void aMS_LeftPress(int, int, int); -void aMS_LeftUnpress(int, int, int); -void aMS_RightPress(int, int, int); -void aMS_RightUnpress(int, int, int); -void aMS_Movement(int, int, int); - -void aciShowRacingPlace(void); - -#ifdef _GENERATE_IND_SHAPE_ -void smooth_shape_quant(int sx,int sy,unsigned char* buf,int src,int dest,int cnd); -#endif - -#ifdef _ACTINT_MEMSTAT_ -void aciDetectLeaks(void); -#endif - -void aciPutBufSpr(int x,int y,int sx,int sy,int bsx,void* src,void* dest,int col,int col_sz); -void aciPutSpr32(int x,int y,int sx,int sy,void* buf,int col,int col_sz); -void aciPutSpr32clip(int x,int y,int sx,int sy,void* buf,int col,int col_sz); -void aOutText32(int x,int y,int color,void* text,int font,int hspace,int vspace); -void aOutText32clip(int x,int y,int color,void* text,int font,int hspace,int vspace); -int aTextWidth32(void* text,int font,int hspace); -int aTextHeight32(void* text,int font,int vspace); - -void aciInitStrings(void); - -void aciInitItmTextQueue(void); - -/* --------------------------- DEFINITION SECTION --------------------------- */ - -#define ACI_ITEM_QUEUE_MAX 5 - -//#define _ACI_CHECK_PHRASES_ -#define _GENERATE_EXIT_ -//#define _ACI_MAP_TESTING_ - -aciFont** aScrFonts32 = NULL; - -#ifdef _ACI_BML_FONTS_ -aciFont** aScrFonts = NULL; -#else -iScreenFont** aScrFonts = NULL; -#endif - -#ifdef _ACI_LOGFILE_ -char* aciLogFileName = "actint/temp/actint.log"; -#endif - - -int aciCurCredits02 = 0; - -int aciRacingFlag = 0; -char* aciCurRaceType = NULL; -char* aciCurRaceInfo = NULL; - -int aciMouseFlagL = 0; -int aciMouseFlagR = 0; - -int aInitFlag = 0; -int actintLowResFlag = 0; -int actintActiveFlag = 0; -int actIntLog = 0; - -int aciGamerColor = 0; - -int aciCurMechosID = 0; - -int* aSinTable = NULL; -int* aCosTable = NULL; - -bmlObject* aIndArrowBML = NULL; -bmlObject* aIndDataBML = NULL; -bmlObject* aIndBackBML = NULL; - -iListElement* iShopItem; - -XBuffer* aciXConv; - -unsigned char* aciDgPrefix = NULL; -unsigned char* aciDgPostfix = NULL; - -aciScreenText* aciImgText = NULL; - -int aciCurAviIndex = 0; -int aciCurAviIndexDelta = 0; -int aciLoadLog = 0; -int aciShopMenuLog = 0; -int aciWorldIndex = -1; - -int acsScreenID = 1; - -int acsCurrentSlotID = ACS_SAVE_SLOT0; -int acsCurrentSlotNum = 0; - -#ifdef _ACTINT_MEMSTAT_ -XStream aMemStatFile("actint/temp/memstat.log",XS_OUT); -int aMemStartIndex = 0; -int aMemEndIndex = 0; -#endif - -int acsAllocFlag = 0; - -int aciSpeechStarted = 0; -int aciSpeechBegLocked = 0; -int aciSpeechEndLocked = 0; -int aciEndSpeech = 0; -int aciSpeechMode = 2; -int aciBreathFlag = 0; -int aciEscaveDead = 0; -int aciEscaveEmpty = 0; -aciML_EventSeq* aciSpeechSeq = NULL; -aciCHTree* aciTreeData = NULL; - -int aciKeyboardLocked = 0; -int aciAutoRun = 0; - -#ifdef _ACI_ESCAVE_DEBUG_ -int aci_dgMoodNext = -1; -#endif - -int aciAutoSaveFlag = 0; - -const char* aciSTR_ON = aciSTR_ON1; -const char* aciSTR_OFF = aciSTR_OFF1; -const char* aciSTR_DAY = aciSTR_DAY1; -const char* aciSTR_UNDEFINED_PRICE = aciSTR_UNDEFINED_PRICE1; -const char* aciSTR_PRICE = aciSTR_PRICE1; -const char* aciSTR_EMPTY_SLOT = aciSTR_EMPTY_SLOT1; -const char* aciSTR_UNNAMED_SAVE = aciSTR_UNNAMED_SAVE1; -const char* aciSTR_AUTOSAVE = aciSTR_AUTOSAVE1; -const char* aciSTR_WINS = aciSTR_WINS1; -const char* aciSTR_LOSSES = aciSTR_LOSSES1; -const char* aciSTR_LUCK = aciSTR_LUCK1; -const char* aciSTR_DOMINANCE = aciSTR_DOMINANCE1; -const char* aciSTR_BROKEN = aciSTR_BROKEN1; -const char* aciSTR_ENERGY_SHIELD = aciSTR_ENERGY_SHIELD1; -const char* aciSTR_RESTORING_SPEED = aciSTR_RESTORING_SPEED1; -const char* aciSTR_MECHANIC_ARMOR = aciSTR_MECHANIC_ARMOR1; -const char* aciSTR_VELOCITY = aciSTR_VELOCITY1; -const char* aciSTR_SPIRAL_CAPACITY = aciSTR_SPIRAL_CAPACITY1; -const char* aciSTR_AIR_RESERVE = aciSTR_AIR_RESERVE1; -const char* aciSTR_DAMAGE = aciSTR_DAMAGE1; -const char* aciSTR_LOAD = aciSTR_LOAD1; -const char* aciSTR_SHOTS = aciSTR_SHOTS1; -const char* aciSTR_BURST = aciSTR_BURST1; -const char* aciSTR_WORKING_TIME = aciSTR_WORKING_TIME1; -const char* aciSTR_SECONDS = aciSTR_SECONDS1; -const char* aciSTR_IN_PACK = aciSTR_IN_PACK1; -const char* aciSTR_NO_CASH = aciSTR_NO_CASH1; -const char* aciSTR_PICKUP_ITEMS_OFF = aciSTR_PICKUP_ITEMS_OFF1; -const char* aciSTR_PICKUP_WEAPONS_OFF = aciSTR_PICKUP_WEAPONS_OFF1; -const char* aciSTR_PutThis = aciSTR_PutThis1; -const char* aciSTR_Ware1 = aciSTR_Ware11; -const char* aciSTR_Ware2 = aciSTR_Ware21; -const char* aciSTR_Checkpoints = aciSTR_Checkpoints1; - -const char* aciSTR_RESTRICTIONS = aciSTR_RESTRICTIONS1; -const char* aciSTR_STATISTICS = aciSTR_STATISTICS1; -const char* aciSTR_MINUTES = aciSTR_MINUTES1; - -int aciItmTextQueueSize = 0; -int aciItmTextQueueCur = 0; -invItem** aciItmTextQueue = NULL; - -#ifdef _ACI_CHECK_PHRASES_ -int aciPhraseStrLen = 0; -int aciPhraseNumStr = 0; -#endif - -extern iScreenOption** iScrOpt; - -void aInit(void) -{ - GameOverID = 0; - aciInitStrings(); - - if(!aIndArrowBML){ - aIndArrowBML = new bmlObject; - aIndArrowBML -> flags |= BML_NO_OFFSETS; - if(actintLowResFlag) - aIndArrowBML -> load("resource/actint/640x480/ind_data/arrow.bml"); - else - aIndArrowBML -> load("resource/actint/800x600/ind_data/arrow.bml"); - } - if(!aIndDataBML){ - aIndDataBML = new bmlObject; - aIndDataBML -> flags |= BML_NO_OFFSETS; - if(actintLowResFlag) - aIndDataBML -> load("resource/actint/640x480/ind_data/data.bml"); - else - aIndDataBML -> load("resource/actint/800x600/ind_data/data.bml"); - } - if(!aIndBackBML){ - aIndBackBML = new bmlObject; - aIndBackBML -> flags |= BMP_FLAG; - if(actintLowResFlag) - aIndBackBML -> load("resource/actint/640x480/ind_data/back.bmp"); - else - aIndBackBML -> load("resource/actint/800x600/ind_data/back.bmp"); - } - if(!aciSpeechSeq){ - aciSpeechSeq = new aciML_EventSeq; - aciSpeechSeq -> alloc_mem(256); - } - - if(!aciCurRaceType) - aciCurRaceType = new char[10]; - - if(!aciCurRaceInfo) - aciCurRaceInfo = new char[10]; - - if(!aciTreeData){ - aciTreeData = new aciCHTree; - aciTreeData -> load("resource/iscreen/ldata/l7/border.xbm"); - } - -#ifdef _BINARY_SCRIPT_ - if(actintLowResFlag){ - if(lang() == RUSSIAN){ - aParseScript("resource/actint/aci_low2.scb"); - acsParseScript("resource/actint/acs_low2.scb"); - } - else { - aParseScript("resource/actint/aci_low.scb"); - acsParseScript("resource/actint/acs_low.scb"); - } - } - else { - if(lang() == RUSSIAN){ - aParseScript("resource/actint/aci_hi2.scb"); - acsParseScript("resource/actint/acs_low2.scb"); - } - else { - aParseScript("resource/actint/aci_hi.scb"); - acsParseScript("resource/actint/acs_low.scb"); - } - } -#else - if(actintLowResFlag){ - if(lang() == RUSSIAN){ - aParseScript("actint/aci_low2.scr","resource/actint/aci_low2.scb"); - acsParseScript("actint/acs_low2.scr","resource/actint/acs_low2.scb"); - } - else { - aParseScript("actint/aci_low.scr","resource/actint/aci_low.scb"); - acsParseScript("actint/acs_low.scr","resource/actint/acs_low.scb"); - } - } - else { - if(lang() == RUSSIAN){ - aParseScript("actint/aci_hi2.scr","resource/actint/aci_hi2.scb"); - acsParseScript("actint/acs_low2.scr","resource/actint/acs_low2.scb"); - } - else { - aParseScript("actint/aci_hi.scr","resource/actint/aci_hi.scb"); - acsParseScript("actint/acs_low.scr","resource/actint/acs_low.scb"); - } - } -#endif - a_calc_tables(); - - if(!NetworkON){ - aciUpdateCurCredits(ACI_STARTUP_CREDITS + beebos); - } - else { - aciDisableParametersMenu(); - } - -#ifdef _ACI_LOGFILE_ - aScrDisp -> logFile.open(aciLogFileName,XS_OUT); - aScrDisp -> logFile < "actIntDispatcher Log File...\r\n"; - aScrDisp -> logFile.close(); -#endif - curMatrixID = 0; - - aciXConv = new XBuffer; - - aciInitWorldIDs(); - aLoadFonts(); - aScrDisp -> init_prompt(); - aScrDisp -> init(); - - aInitFlag = 1; - aMS_init(); - -#ifdef _GENERATE_MATRIX_SHAPES_ - invMatrix* p = (invMatrix*)aScrDisp -> matrixList -> last; - while(p){ - p -> generate_shape(); - p -> generate_floor(); - p = (invMatrix*)p -> prev; - } -#ifdef _GENERATE_EXIT_ - ErrH.Abort("Done..."); -#endif -#endif -#ifdef _GENERATE_iMATRIX_SHAPES_ - aci_CellSize = aCellSize; - aCellSize = iCellSize; - build_cell_frame(); - invMatrix* p = (invMatrix*)aScrDisp -> i_matrixList -> last; - while(p){ - p -> generate_shape(); - p -> generate_floor(); - p = (invMatrix*)p -> prev; - } - aCellSize = aci_CellSize; - build_cell_frame(); -#ifdef _GENERATE_EXIT_ - ErrH.Abort("Done..."); -#endif -#endif - actIntPal = new unsigned char[768]; - if(!aciItmTextQueue) aciItmTextQueue = new invItem*[ACI_ITEM_QUEUE_MAX]; - -#ifdef _FULLSCREEN_MODE_ - aScrDisp -> send_event(EV_FULLSCR_CHANGE); -#endif - -/* -#ifdef _GENERATE_ITEM_DATA_ - aScrDisp -> save_items(); -#ifdef _GENERATE_EXIT_ - ErrH.Abort("Done..."); -#endif -#endif -*/ - -#ifdef _ACTINT_MEMSTAT_ - aciDetectLeaks(); - aMemStatFile.close(); -#endif -} - -void aRedraw(void) -{ - aScrDisp -> flags &= ~AS_FULL_REDRAW; - aScrDisp -> redraw(); -} - -void actIntQuant(void) -{ - actintActiveFlag = 1; - aScrDisp -> KeyQuant(); - aScrDisp -> EventQuant(); -} - -void aLoadFonts(void) -{ - int i; - XBuffer XBuf; - XStream fh; - -#ifdef _ACI_BML_FONTS_ - if(!aScrFonts) - aScrFonts = new aciFont*[AS_NUM_FONTS]; -#else - int sz; - char* buf; - if(!aScrFonts) - aScrFonts = new iScreenFont*[AS_NUM_FONTS]; -#endif - - for(i = 0; i < AS_NUM_FONTS; i ++){ - XBuf.init(); - XBuf < "resource/actint/fonts/sfont"; - if(i < 10) - XBuf < "0"; - -#ifdef _ACI_BML_FONTS_ - XBuf <= i < ".bml"; - aScrFonts[i] = new aciFont; - aScrFonts[i] -> load(XBuf.GetBuf()); - aScrFonts[i] -> calc_offs(); -#else - XBuf <= i < ".fnt"; - fh.open(XBuf,XS_IN); - sz = fh.size(); - - buf = new char[sz]; - fh.read(buf,sz); - fh.close(); - - aScrFonts[i] = new iScreenFont(buf,sz); -#endif - - } -} - -void aLoadFonts32(void) -{ - int i; - XBuffer XBuf; - XStream fh; - - if(!aScrFonts32) - aScrFonts32 = new aciFont*[AS_NUM_FONTS_32]; - - for(i = 0; i < AS_NUM_FONTS_32; i ++){ - XBuf.init(); - XBuf < "resource/actint/fonts/cfont"; - if(i < 10) - XBuf < "0"; - - XBuf <= i < ".bml"; - aScrFonts32[i] = new aciFont; - aScrFonts32[i] -> flags |= ACI_RANGE_FONT; - - aScrFonts32[i] -> load(XBuf.GetBuf()); - aScrFonts32[i] -> calc_offs(); - - } - XGR_SetTextOutFnc(aOutText32); - XGR_SetTextXFnc(aTextWidth32); - XGR_SetTextYFnc(aTextHeight32); -} - -void aFreeFonts(void) -{ - int i; - for(i = 0; i < AS_NUM_FONTS; i ++){ - delete aScrFonts[i]; - } - delete aScrFonts; - aScrFonts = NULL; -/* - for(i = 0; i < AS_NUM_FONTS_32; i ++){ - delete aScrFonts32[i]; - } - delete aScrFonts32; - aScrFonts32 = NULL; -*/ -} - -void aPutNum(int x,int y,int font,int color,int str,int bsx,unsigned char* buf,int space) -{ - char* p; - static XBuffer XBuf; - - XBuf.init(); - XBuf <= str; - p = XBuf.GetBuf(); - - aPutStr(x,y,font,color,(unsigned char*)p,bsx,buf,space); -} - -int aStrLen(unsigned char* str,int font,int space) -{ - int s,sz = strlen((char*)str),len = 0; - for(s = 0; s < sz; s ++) - len += aScrFonts[font] -> SizeX - (aScrFonts[font] -> LeftOffs[str[s]] + aScrFonts[font] -> RightOffs[str[s]]) + space; - return len; -} - -int aStrLen32(void* str,int font,int space) -{ - int s,sz,len = 0; - - unsigned char* str_buf = (unsigned char*)str; - sz = strlen((char*)str_buf); - for(s = 0; s < sz; s ++) - len += aScrFonts32[font] -> SizeX - (aScrFonts32[font] -> LeftOffs[str_buf[s]] + aScrFonts32[font] -> RightOffs[str_buf[s]]) + space; - //printf("aStrLen32: %s %d %d %d -> %d\n", str_buf, sz, font, space, len); - return len; -} - -int aStrHeight(int font) -{ - return aScrFonts[font] -> SizeY; -} - -int aStrHeight32(int font) -{ - return aScrFonts32[font] -> SizeY; -} - -#ifdef _ACI_BML_FONTS_ -#define ACI_COLOR_MASK 0xFF -void aPutStr32(int x,int y,int font,int color,int color_size,void* str,int bsx,void* buf,int space) -{ - int s,xs,ys,offs = 0,sz = strlen((char*)str),X = 0,col,col_sz,col1,col2,col_sz1,col_sz2; - int buf_offs = 0; - - unsigned char* str_buf; - - if(aScrFonts32[font] == NULL) - ErrH.Abort("MISSING FONT..."); - - col1 = color & 0xFF; - col2 = (color >> 16) & 0xFF; - - col_sz1 = color_size & 0xFF; - col_sz2 = (color_size >> 16) & 0xFF; - - unsigned char* p = aScrFonts32[font] -> data; - xs = aScrFonts32[font] -> SizeX; - ys = aScrFonts32[font] -> SizeY; - - str_buf = (unsigned char*)str; - - X = x; - - for(s = 0; s < sz; s ++){ - buf_offs = 0; - X -= aScrFonts32[font] -> LeftOffs[str_buf[s]]; - - offs = xs * ys * str_buf[s]; - if(col2){ - if((str_buf[s] >= 48 && str_buf[s] <= 57) || str_buf[s] == 36){ - col = col2; - col_sz = col_sz2; - } - else { - col = col1; - col_sz = col_sz1; - } - } - else { - col = col1; - col_sz = col_sz1; - } - aciPutBufSpr(X,y,xs,ys,bsx,p + offs,buf,col,col_sz); - X += xs + space - aScrFonts32[font] -> RightOffs[str_buf[s]]; - } -} - -void aPutStr(int x,int y,int font,int color,unsigned char* str,int bsx,unsigned char* buf,int space) -{ - int i,j,s,xs,ys,offs = 0,sz = strlen((char*)str),X = 0,col1,col2,col3,col4; - int buf_index = 0,buf_offs = 0; - - col1 = color & ACI_COLOR_MASK; - col2 = (color >> 8) & ACI_COLOR_MASK; - - col3 = (color >> 16) & ACI_COLOR_MASK; - col4 = (color >> 24) & ACI_COLOR_MASK; - - if(aScrFonts[font] == NULL) - ErrH.Abort("MISSING FONT..."); - - unsigned char* p = aScrFonts[font] -> data; - xs = aScrFonts[font] -> SizeX; - ys = aScrFonts[font] -> SizeY; - - buf_index = x + y * bsx; - - if(col2){ - for(s = 0; s < sz; s ++){ - buf_offs = 0; - offs = ys * str[s]; - - X -= aScrFonts[font] -> LeftOffs[str[s]]; - - offs = xs * ys * str[s]; - if((col3 || col4) && ((str[s] >= 48 && str[s] <= 57) || str[s] == 36)){ - for(i = 0; i < ys; i ++){ - for(j = 0; j < xs; j ++){ - switch(p[offs + j]){ - case 1: - buf[X + j + buf_index + buf_offs] = col3; - break; - case 2: - buf[X + j + buf_index + buf_offs] = col4; - break; - } - } - offs += xs; - buf_offs += bsx; - } - } - else { - for(i = 0; i < ys; i ++){ - for(j = 0; j < xs; j ++){ - switch(p[offs + j]){ - case 1: - buf[X + j + buf_index + buf_offs] = col1; - break; - case 2: - buf[X + j + buf_index + buf_offs] = col2; - break; - } - } - offs += xs; - buf_offs += bsx; - } - } - X += xs + space - aScrFonts[font] -> RightOffs[str[s]]; - } - } - else { - for(s = 0; s < sz; s ++){ - buf_offs = 0; - offs = ys * str[s]; - - X -= aScrFonts[font] -> LeftOffs[str[s]]; - - offs = xs * ys * str[s]; - if(col3 && ((str[s] >= 48 && str[s] <= 57) || str[s] == 36)){ - for(i = 0; i < ys; i ++){ - for(j = 0; j < xs; j ++){ - switch(p[offs + j]){ - case 1: - buf[X + j + buf_index + buf_offs] = col3; - break; - } - } - offs += xs; - buf_offs += bsx; - } - } - else { - for(i = 0; i < ys; i ++){ - for(j = 0; j < xs; j ++){ - switch(p[offs + j]){ - case 1: - buf[X + j + buf_index + buf_offs] = col1; - break; - } - } - offs += xs; - buf_offs += bsx; - } - } - X += xs + space - aScrFonts[font] -> RightOffs[str[s]]; - } - } -} - -void aOutStr(int x,int y,int font,int color,unsigned char* str,int space) -{ - int i,j,s,xs,ys,offs = 0,sz = strlen((char*)str),X = 0,Y = 0,col1,col2; - - unsigned char* palBuf = palbuf; - - col1 = color & ACI_COLOR_MASK; - col2 = (color >> 8) & ACI_COLOR_MASK; - - if(aScrFonts[font] == NULL) - ErrH.Abort("MISSING FONT..."); - - unsigned char* p = aScrFonts[font] -> data; - xs = aScrFonts[font] -> SizeX; - ys = aScrFonts[font] -> SizeY; - - X = x; - - if(col2){ - for(s = 0; s < sz; s ++){ - offs = ys * str[s]; - - X -= aScrFonts[font] -> LeftOffs[str[s]]; - - offs = xs * ys * str[s]; - for(i = 0; i < ys; i ++){ - Y = y + i; - for(j = 0; j < xs; j ++){ - switch(p[offs + j]){ - case 1: - XGR_SetPixel(X + j,Y,col1); - break; - case 2: - XGR_SetPixel(X + j,Y,col2); - break; - } - } - offs += xs; - } - X += xs + space - aScrFonts[font] -> RightOffs[str[s]]; - } - } - else { - for(s = 0; s < sz; s ++){ - offs = ys * str[s]; - - X -= aScrFonts[font] -> LeftOffs[str[s]]; - - offs = xs * ys * str[s]; - for(i = 0; i < ys; i ++){ - Y = y + i; - for(j = 0; j < xs; j ++){ - switch(p[offs + j]){ - case 1: - XGR_SetPixel(X + j,Y,col1); - break; - } - } - offs += xs; - } - X += xs + space - aScrFonts[font] -> RightOffs[str[s]]; - } - } -} - -void aPutChar(int x,int y,int font,int color,int str,int bsx,int bsy,unsigned char* buf) -{ - int i,j,xs,ys,offs = 0,X = 0,col1,col2; - int buf_index = 0,buf_offs = 0; - - col1 = color & ACI_COLOR_MASK; - col2 = (color >> 8) & ACI_COLOR_MASK; - - if(aScrFonts[font] == NULL) - ErrH.Abort("MISSING FONT..."); - - unsigned char* p = aScrFonts[font] -> data; - xs = aScrFonts[font] -> SizeX; - ys = aScrFonts[font] -> SizeY; - - buf_index = x + y * bsx; - - buf_offs = 0; - offs = xs * ys * str; - - if(col2){ - for(i = 0; i < ys; i ++){ - for(j = 0; j < xs; j ++){ - switch(p[offs + j]){ - case 1: - buf[X + j + buf_index + buf_offs] = col1; - break; - case 2: - buf[X + j + buf_index + buf_offs] = col2; - break; - } - } - offs += xs; - buf_offs += bsx; - } - } - else { - for(i = 0; i < ys; i ++){ - for(j = 0; j < xs; j ++){ - switch(p[offs + j]){ - case 1: - buf[X + j + buf_index + buf_offs] = col1; - break; - } - } - offs += xs; - buf_offs += bsx; - } - } -} -#else -void aPutStr(int x,int y,int font,int color,unsigned char* str,int bsx,int bsy,unsigned char* buf,int space) -{ - int i,j,s,xs,ys,offs = 0,sz = strlen((char*)str),X = 0,col = color; - int buf_index = 0,buf_offs = 0; - - if(aScrFonts[font] == NULL) - ErrH.Abort("MISSING FONT..."); - - char* p = aScrFonts[font] -> data; - xs = aScrFonts[font] -> SizeX; - ys = aScrFonts[font] -> SizeY; - - buf_index = x + y * bsx; - - for(s = 0; s < sz; s ++){ - buf_offs = 0; - offs = ys * str[s]; - - col = color; - - X -= aScrFonts[font] -> LeftOffs[str[s]]; - - offs = ys * str[s]; - for(i = 0; i < ys; i ++){ - for(j = 0; j < xs; j ++){ - if(p[offs] & (1 << (7 - j))) - buf[X + j + buf_index + buf_offs] = col; - } - offs ++; - buf_offs += bsx; - } - X += xs + space - aScrFonts[font] -> RightOffs[str[s]]; - } -} - -void aPutChar(int x,int y,int font,int color,int str,int bsx,int bsy,unsigned char* buf) -{ - int i,j,xs,ys,offs = 0,X = 0,col = color; - int buf_index = 0,buf_offs = 0; - - if(aScrFonts[font] == NULL) - ErrH.Abort("MISSING FONT..."); - - char* p = aScrFonts[font] -> data; - xs = aScrFonts[font] -> SizeX; - ys = aScrFonts[font] -> SizeY; - - buf_index = x + y * bsx; - - buf_offs = 0; - offs = ys * str; - - col = color; - - offs = ys * str; - for(i = 0; i < ys; i ++){ - for(j = 0; j < xs; j ++){ - if(p[offs] & (1 << (7 - j))) - buf[X + j + buf_index + buf_offs] = col; - } - offs ++; - buf_offs += bsx; - } -} -#endif - -void aKeyTrap(SDL_Event *k) -{ - if(aInitFlag){ - KeyBuf -> put(k,CUR_KEY_PRESSED); - } -} - -void aKeyQuant(void) -{ - aScrDisp -> KeyQuant(); -} - -void aKeyInit(void) -{ - loadMouseFrames(); - KeyBuf = new KeyBuffer; - set_mouse(); -} - -void aMS_init(void) -{ - XGR_MouseSetPressHandler(XGM_LEFT_BUTTON,aMS_LeftPress); - XGR_MouseSetUnPressHandler(XGM_LEFT_BUTTON,aMS_LeftUnpress); - - XGR_MouseSetPressHandler(XGM_RIGHT_BUTTON,aMS_RightPress); - XGR_MouseSetUnPressHandler(XGM_RIGHT_BUTTON,aMS_RightUnpress); - - XGR_MouseSetMoveHandler(aMS_Movement); - - aciMouseFlagL = aciMouseFlagR = 0; -} - -void aMS_LeftPress(int fl, int x, int y) -{ - if (aScrDisp==NULL) { - return; - } - aScrDisp -> flags |= aMS_LEFT_PRESS; - iMouseX = x; - iMouseY = y; - - aciMouseFlagL = 1; - - XGR_MouseSetSeq(0,1,XGM_PLAY_ONCE,1); -} - -void aMS_Movement(int fl, int x, int y) -{ - if (aScrDisp==NULL) { - return; - } - aScrDisp -> flags |= aMS_MOVED; - iMouseX = x; - iMouseY = y; -} - -void aMS_LeftUnpress(int fl, int x, int y) -{ - iMouseX = x; - iMouseY = y; - - aciMouseFlagL = 0; - - XGR_MouseSetSeq(XGR_MouseCurFrame,XGR_MouseNumFrames - 1,XGM_PLAY_ONCE,1); -} - -void aMS_RightPress(int fl, int x, int y) -{ - if (aScrDisp==NULL) { - return; - } - aScrDisp -> flags |= aMS_RIGHT_PRESS; - iMouseX = x; - iMouseY = y; - - aciMouseFlagR = 1; - - XGR_MouseSetSeq(0,1,XGM_PLAY_ONCE,1); -} - -void aMS_RightUnpress(int fl, int x, int y) -{ - iMouseX = x; - iMouseY = y; - - aciMouseFlagR = 0; - - XGR_MouseSetSeq(XGR_MouseCurFrame,XGR_MouseNumFrames - 1,XGM_PLAY_ONCE,1); -} - -#define MAP_COLOR 200 -#define MAP_COLOR1 166 -#define MAP_COLOR2 143 -#define MAP_COLOR3 111 - -#define MAP_PTR_X 3 -#define MAP_PTR_X2 1 -#define MAP_PTR_XL 6 -#define MAP_PTR_XL2 3 - -#define MAP_CUR_VANGER 0 -#define MAP_VANGER 1 -#define MAP_INSECT 2 - -static int aciMapVngColors[11] = { 254, 143, 156, 175, 200, 200, 239, 230, 224, 254, 156 }; - -void show_map(int x,int y,int sx,int sy) -{ - int i,index,m_index,cx,cy,y0,x_index = 0,_x = 0,_y = 0,vy,sx2,sy2; - int scr_x,scr_y,dx,scr_x0; - - unsigned char* ptr; - bmlObject* p = aScrDisp -> mapObj; - - cx = (ViewX * p -> SizeX) >> MAP_POWER_X; - cy = (ViewY * p -> SizeY) >> MAP_POWER_Y; - - sx2 = sx / 2; - sy2 = sy / 2; - - vy = sy * ((1 << MAP_POWER_Y) / p -> SizeY) / 2; - - y0 = cy - sy2; - if(y0 < 0) y0 += p -> SizeY; - if(y0 >= p -> SizeY) y0 -= p -> SizeY; - - ptr = new unsigned char[sx * sy]; - memset(ptr,0,sx * sy); - - if(cx < sx2){ - dx = sx2 - cx; - - _y = y0; - index = 0; - m_index = y0 * p -> SizeX + p -> SizeX - dx; - for(i = 0; i < sy; i ++){ - memcpy(ptr + index,p -> frames + m_index,dx); - - index += sx; - m_index += p -> SizeX; - - _y ++; - if(_y >= p -> SizeY){ - m_index = p -> SizeX - dx; - _y = 0; - } - } - - _y = y0; - index = dx; - m_index = y0 * p -> SizeX; - for(i = 0; i < sy; i ++){ - memcpy(ptr + index,p -> frames + m_index,sx - dx); - - index += sx; - m_index += p -> SizeX; - - _y ++; - if(_y >= p -> SizeY){ - m_index = 0; - _y = 0; - } - } - } - else { - if(p -> SizeX - cx < sx2){ - dx = sx2 - (p -> SizeX - cx); - - _y = y0; - index = 0; - m_index = y0 * p -> SizeX + p -> SizeX - (sx - dx); - for(i = 0; i < sy; i ++){ - memcpy(ptr + index,p -> frames + m_index,sx - dx); - - index += sx; - m_index += p -> SizeX; - - _y ++; - if(_y >= p -> SizeY){ - m_index = p -> SizeX - (sx - dx); - _y = 0; - } - } - - _y = y0; - index = sx - dx; - m_index = y0 * p -> SizeX; - for(i = 0; i < sy; i ++){ - memcpy(ptr + index,p -> frames + m_index,dx); - - index += sx; - m_index += p -> SizeX; - - _y ++; - if(_y >= p -> SizeY){ - m_index = 0; - _y = 0; - } - } - } - else { - _y = y0; - index = 0; - m_index = y0 * p -> SizeX + cx - sx2; - int max_frames_size = p->SizeX * p->SizeY * p->Size; - for(i = 0; i < sy; i ++){ - if (m_index + sx >= max_frames_size) { - memcpy(ptr + index, p -> frames + m_index, max_frames_size - m_index); - } else { - memcpy(ptr + index, p -> frames + m_index, sx); - } - - index += sx; - m_index += p -> SizeX; - - _y ++; - if(_y >= p -> SizeY){ - m_index = cx - sx2; - _y = 0; - } - } - } - } - XGR_PutSpr(x,y,sx,sy,ptr,XGR_BLACK_FON); - delete[] ptr; - - _y = 0; - - scr_x = sx2; - scr_y = sy2; - -/* - if(scr_x > MAP_PTR_X && scr_x < sx - MAP_PTR_X && scr_y > MAP_PTR_X && scr_y < sy - MAP_PTR_X) - XGR_Rectangle(x + scr_x - MAP_PTR_X2,y + scr_y - MAP_PTR_X2,MAP_PTR_X,MAP_PTR_X,aciMapVngColors[aciGamerColor],aciMapVngColors[aciGamerColor],XGR_FILLED); -*/ - -#ifdef _ACI_MAP_TESTING_ - index = 2; - for(_y = 0; _y < (1 << MAP_POWER_Y); _y += 256){ - for(_x = 0; _x < (1 << MAP_POWER_X); _x += 256){ - scr_x = -1; - scr_x0 = ((_x * p -> SizeX) >> MAP_POWER_X); - - if(cx < sx2){ - if(p -> SizeX - scr_x0 < dx) - scr_x = scr_x0 - (p -> SizeX - dx); - else { - if(scr_x0 < sx - dx) - scr_x = scr_x0 + dx; - else - scr_x = -1; - } - } - else { - if(p -> SizeX - cx < sx2){ - if(p -> SizeX - scr_x0 < sx - dx) - scr_x = scr_x0 - (p -> SizeX - (sx - dx)); - else { - if(scr_x0 < dx) - scr_x = scr_x0 + (sx - dx); - else - scr_x = -1; - } - } - else { - scr_x = scr_x0 - (cx - sx2); - } - } - scr_y = ((_y * p -> SizeY) >> MAP_POWER_Y) - y0; - if(scr_y < 0) - scr_y += p -> SizeY; - - if(scr_x > MAP_PTR_X && scr_x < sx - MAP_PTR_X && scr_y > MAP_PTR_X && scr_y < sy - MAP_PTR_X){ - switch(index){ - case 1: - XGR_Rectangle(x + scr_x - MAP_PTR_X2,y + scr_y - MAP_PTR_X2,MAP_PTR_X,MAP_PTR_X,MAP_COLOR1,MAP_COLOR1,XGR_FILLED); - break; - case 2: - XGR_SetPixel(x + scr_x,y + scr_y,(_y >> 8) & 255); - break; - case 3: - XGR_Rectangle(x + scr_x - MAP_PTR_X2,y + scr_y - MAP_PTR_X2,MAP_PTR_X,MAP_PTR_X,MAP_COLOR3,MAP_COLOR3,XGR_FILLED); - break; - } - } - } - } -#else - index = getObjectPosition(_x,_y); - while(index != -1){ - if(index){ - scr_x = -1; - scr_x0 = ((_x * p -> SizeX) >> MAP_POWER_X); - - if(cx < sx2){ - if(p -> SizeX - scr_x0 < dx) - scr_x = scr_x0 - (p -> SizeX - dx); - else { - if(scr_x0 < sx - dx) - scr_x = scr_x0 + dx; - else - scr_x = -1; - } - } - else { - if(p -> SizeX - cx < sx2){ - if(p -> SizeX - scr_x0 < sx - dx) - scr_x = scr_x0 - (p -> SizeX - (sx - dx)); - else { - if(scr_x0 < dx) - scr_x = scr_x0 + (sx - dx); - else - scr_x = -1; - } - } - else { - scr_x = scr_x0 - (cx - sx2); - } - } - scr_y = ((_y * p -> SizeY) >> MAP_POWER_Y) - y0; - if(scr_y < 0) - scr_y += p -> SizeY; - - if(scr_x > MAP_PTR_X && scr_x < sx - MAP_PTR_X && scr_y > MAP_PTR_X && scr_y < sy - MAP_PTR_X){ - switch(index){ - case 1: - XGR_Rectangle(x + scr_x - MAP_PTR_X2,y + scr_y - MAP_PTR_X2,MAP_PTR_X,MAP_PTR_X,MAP_COLOR1,MAP_COLOR1,XGR_FILLED); - break; -#ifdef _ACI_SHOW_BUGS_ON_MAP_ - case 2: - XGR_SetPixel(x + scr_x,y + scr_y,MAP_COLOR2); - break; -#endif - case 3: - XGR_Rectangle(x + scr_x - MAP_PTR_X2,y + scr_y - MAP_PTR_X2,MAP_PTR_X,MAP_PTR_X,MAP_COLOR3,MAP_COLOR3,XGR_FILLED); - break; - case 4: - XGR_Rectangle(x + scr_x - MAP_PTR_X2,y + scr_y - MAP_PTR_X2,MAP_PTR_X,MAP_PTR_X,aciMapVngColors[0],aciMapVngColors[0],XGR_FILLED); - break; - case 5: - XGR_Rectangle(x + scr_x - MAP_PTR_X2,y + scr_y - MAP_PTR_X2,MAP_PTR_X,MAP_PTR_X,aciMapVngColors[1],aciMapVngColors[1],XGR_FILLED); - break; - case 6: - XGR_Rectangle(x + scr_x - MAP_PTR_X2,y + scr_y - MAP_PTR_X2,MAP_PTR_X,MAP_PTR_X,aciMapVngColors[2],aciMapVngColors[2],XGR_FILLED); - break; - case 7: - XGR_Rectangle(x + scr_x - MAP_PTR_X2,y + scr_y - MAP_PTR_X2,MAP_PTR_X,MAP_PTR_X,aciMapVngColors[3],aciMapVngColors[3],XGR_FILLED); - break; - case 8: - if(scr_x > MAP_PTR_XL && scr_x < sx - MAP_PTR_XL && scr_y > MAP_PTR_XL && scr_y < sy - MAP_PTR_XL) - XGR_Rectangle(x + scr_x - MAP_PTR_XL2,y + scr_y - MAP_PTR_XL2,MAP_PTR_XL,MAP_PTR_XL,aciMapVngColors[3],aciMapVngColors[0],XGR_FILLED); - break; - case 9: - if(scr_x > MAP_PTR_XL && scr_x < sx - MAP_PTR_XL && scr_y > MAP_PTR_XL && scr_y < sy - MAP_PTR_XL) - XGR_Rectangle(x + scr_x - MAP_PTR_XL2,y + scr_y - MAP_PTR_XL2,MAP_PTR_XL,MAP_PTR_XL,aciMapVngColors[3],aciMapVngColors[1],XGR_FILLED); - break; - case 10: - if(scr_x > MAP_PTR_XL && scr_x < sx - MAP_PTR_XL && scr_y > MAP_PTR_XL && scr_y < sy - MAP_PTR_XL) - XGR_Rectangle(x + scr_x - MAP_PTR_XL2,y + scr_y - MAP_PTR_XL2,MAP_PTR_XL,MAP_PTR_XL,aciMapVngColors[3],aciMapVngColors[2],XGR_FILLED); - break; - case 11: - XGR_Rectangle(x + scr_x - MAP_PTR_X2,y + scr_y - MAP_PTR_X2,MAP_PTR_X,MAP_PTR_X,aciMapVngColors[5],aciMapVngColors[5],XGR_FILLED); - break; - case 12: - XGR_Rectangle(x + scr_x - MAP_PTR_X2,y + scr_y - MAP_PTR_X2,MAP_PTR_X,MAP_PTR_X,aciMapVngColors[6],aciMapVngColors[6],XGR_FILLED); - break; - case 13: - XGR_Rectangle(x + scr_x - MAP_PTR_X2,y + scr_y - MAP_PTR_X2,MAP_PTR_X,MAP_PTR_X,aciMapVngColors[7],aciMapVngColors[7],XGR_FILLED); - break; - case 14: - XGR_Rectangle(x + scr_x - MAP_PTR_X2,y + scr_y - MAP_PTR_X2,MAP_PTR_X,MAP_PTR_X,aciMapVngColors[8],aciMapVngColors[8],XGR_FILLED); - break; - case 15: - XGR_Rectangle(x + scr_x - MAP_PTR_X2,y + scr_y - MAP_PTR_X2,MAP_PTR_X,MAP_PTR_X,aciMapVngColors[9],aciMapVngColors[9],XGR_FILLED); - break; - case 16: - XGR_Rectangle(x + scr_x - MAP_PTR_X2,y + scr_y - MAP_PTR_X2,MAP_PTR_X,MAP_PTR_X,aciMapVngColors[10],aciMapVngColors[10],XGR_FILLED); - break; - } - } - } - index = getObjectPosition(_x,_y); - } -#endif -} - -void load_map_bmp(int num) -{ - aScrDisp -> mapObj -> free(); - if(aScrDisp -> wMap -> world_ids[num] == -1 || !(aScrDisp -> map_names[aScrDisp -> wMap -> world_ids[num]])) ErrH.Abort("Map BMP not present..."); - aScrDisp -> mapObj -> load(aScrDisp -> map_names[aScrDisp -> wMap -> world_ids[num]],1); - aScrDisp -> unlock(); - aciPrepareWorldsMenu(); - aciChangeWorld(num); -} - -void change_screen(int mode) -{ - aScrDisp -> change_ibs(mode); - aScrDisp -> flags &= ~AS_FULL_REDRAW; - set_map_to_ibs(aScrDisp->curIbs); -} - -void aciSendEvent2actint(int code,actintItemData* p,int data) -{ - aScrDisp -> send_event(code,data,p); -} - -actintItemData* aciGetLast(void) -{ - invItem* itm; - invItem* p = (invItem*)aScrDisp -> curMatrix -> items -> last; - itm = p; - while(p){ - if(p -> dropCount > itm -> dropCount) - itm = p; - - p = (invItem*)p -> prev; - } - if(itm) - return itm -> item_ptr; - return NULL; -} - -const double _PI128 = 3.14/128.0; -void a_calc_tables(void) -{ - int i; - double phi; - if(!aSinTable && !aCosTable){ - aSinTable = new int[256]; - aCosTable = new int[256]; - - for(i = 0; i < 256; i ++){ - phi = ((double)i) * _PI128; - aSinTable[i] = (int)(sin(phi) * 256.0); - aCosTable[i] = (int)(cos(phi) * 256.0); - } - } -} - -void a_buf_setpixel(int x,int y,int sx,int sy,int col,unsigned char* buf) -{ - buf[x + y * sx] = col; -} - -void a_buf_line(int x1,int y1,int x2,int y2,int col,int sx,int sy,unsigned char* buf) -{ - int dx,dy,xinc,yinc,err,cnt,index,i_xinc,i_yinc; - - dx = x2 - x1; - dy = y2 - y1; - - xinc = (dx > 0) ? 1 : (dx < 0) ? (-1) : 0; - yinc = (dy > 0) ? 1 : (dy < 0) ? (-1) : 0; - - i_xinc = xinc; - i_yinc = (dy > 0) ? sx : (dy < 0) ? (-sx) : 0; - - dx = abs(dx); - dy = abs(dy); - index = x1 + y1 * sx; - if(dx > dy){ - err = dx/2; - cnt = dx + 1; - while(cnt--){ - buf[index] = col; - x1 += xinc; - index += i_xinc; - - err += dy; - if(err >= dx){ - if(cnt) - buf[index] = col; - err -= dx; - y1 += yinc; - index += i_yinc; - } - } - } - else { - err = dy / 2; - cnt = dy + 1; - while(cnt--){ - buf[index] = col; - y1 += yinc; - index += i_yinc; - err += dx; - if(err >= dy){ - if(cnt) - buf[index] = col; - err -= dy; - x1 += xinc; - index += i_xinc; - } - } - } -} - -void a_buf_line2(int x1,int y1,int x2,int y2,int col,int sx,int sy,unsigned char* buf) -{ - int dx,dy,xinc,yinc,err,cnt,index,i_xinc,i_yinc; - - dx = x2 - x1; - dy = y2 - y1; - - xinc = (dx > 0) ? 1 : (dx < 0) ? (-1) : 0; - yinc = (dy > 0) ? 1 : (dy < 0) ? (-1) : 0; - - i_xinc = xinc; - i_yinc = (dy > 0) ? sx : (dy < 0) ? (-sx) : 0; - - dx = abs(dx); - dy = abs(dy); - index = x1 + y1 * sx; - if(dx > dy){ - err = dx/2; - cnt = dx + 1; - while(cnt--){ - buf[index] = col; - x1 += xinc; - index += i_xinc; - - err += dy; - if(err >= dx){ - err -= dx; - y1 += yinc; - index += i_yinc; - } - } - } - else { - err = dy / 2; - cnt = dy + 1; - while(cnt--){ - buf[index] = col; - y1 += yinc; - index += i_yinc; - err += dx; - if(err >= dy){ - err -= dy; - x1 += xinc; - index += i_xinc; - } - } - } -} - -void fill_buf(int fx,int fy,int src_col,int dest_col,int sx,int sy,unsigned char* buf) -{ - int x,y,flag = 1,index; - - buf[fx + fy * sx] = dest_col; - - while(flag){ - index = 0; - flag = 0; - for(y = 0; y < sy; y ++){ - for(x = 0; x < sx; x ++){ - if(buf[index] == src_col){ - if(x && buf[index - 1] == dest_col){ - flag = 1; - buf[index] = dest_col; - } - if(x < sx - 1 && buf[index + 1] == dest_col){ - flag = 1; - buf[index] = dest_col; - } - if(y && buf[index - sx] == dest_col){ - flag = 1; - buf[index] = dest_col; - } - if(y < sy - 1 && buf[index + sx] == dest_col){ - flag = 1; - buf[index] = dest_col; - } - } - index ++; - } - } - } -} - -void free_cell_frame(void) -{ - delete[] aCellFrame; -} - -void build_cell_frame(void) -{ - int dx = aCellSize; - int dxx = dx * dx; - int dx2 = dx >> 1; - int dx4 = dx >> 2; - - unsigned char* cell = new unsigned char[(dx + 1) * (dx + 1)]; - memset(cell,0,(dx + 1) * (dx + 1)); -/* - a_buf_line(dx2,0,dx,dx4,1,dx + 1,dx + 1,cell); - a_buf_line(dx,dx4,dx,dx2 + dx4,1,dx + 1,dx + 1,cell); - a_buf_line(dx,dx2 + dx4,dx2,dx,1,dx + 1,dx + 1,cell); - a_buf_line(dx2,dx,0,dx2 + dx4,1,dx + 1,dx + 1,cell); - a_buf_line(0,dx2 + dx4,0,dx4,1,dx + 1,dx + 1,cell); - a_buf_line(0,dx4,dx2,0,1,dx + 1,dx + 1,cell); -*/ - a_buf_line(dx2,0,dx,dx4,1,dx + 1,dx + 1,cell); - a_buf_line(0,dx - dx4,dx2,dx,1,dx + 1,dx + 1,cell); - - a_buf_line(dx,dx4,dx,dx - dx4,1,dx + 1,dx + 1,cell); - a_buf_line(0,dx - dx4,0,dx4,1,dx + 1,dx + 1,cell); - - a_buf_line(dx,dx - dx4,dx2,dx,1,dx + 1,dx + 1,cell); - a_buf_line(dx2,0,0,dx4,1,dx + 1,dx + 1,cell); - - fill_buf(dx2,dx2,0,2,dx + 1,dx + 1,cell); - - aCellFrame = cell; -} - -void swap_buf_col(int src,int dest,int sx,int sy,unsigned char* buf) -{ - int i,j,index = 0; - for(i = 0; i < sy; i ++){ - for(j = 0; j < sx; j ++){ - if(buf[index] == src) buf[index] = dest; - index ++; - } - } -} - -void mem_putspr(int x,int y,int sx,int sy,int bsx,int bsy,unsigned char* src,unsigned char* dest) -{ - int i,j,index = 0,b_index = 0; - - index = x + y * bsx; - for(i = 0; i < sy; i ++){ - for(j = 0; j < sx; j ++){ - if(src[b_index]) - dest[index + j] = src[b_index]; - b_index ++; - } - index += bsx; - } -} - -void mem_putspr_h(int x,int y,int sx,int sy,int bsx,int bsy,unsigned char* src,unsigned char* dest) -{ - int i,j,index = x + y * bsx,b_index = 0; - int h,h1; - - for(i = 0; i < sy; i ++){ - for(j = 0; j < sx; j ++){ - if(src[b_index]){ - h1 = dest[index + j]; - h = src[b_index]; - if(h > h1) - dest[index + j] = h; - } - b_index ++; - } - index += bsx; - } -} - -void aci_iScreenQuant(void) -{ - aScrDisp -> iKeyQuant(); - aScrDisp -> EventQuant(); - - aciML_D -> quant(); - - aScrDisp -> i_redraw(); - aScrDisp -> i_flush(); -} - -void aci_SendEvent(int cd,int dt) -{ - aScrDisp -> send_event(cd,dt); -} - -void aci_LocationQuantPrepare(void) -{ - aciSpeechBegLocked = aciSpeechEndLocked = 0; - aciSpeechStarted = aciEndSpeech = 0; - aciEscaveDead = aciEscaveEmpty = 0; - aciBreathFlag = 0; - - aScrDisp -> i_init(); - iScrQuantPrepare(); -} - -void aci_LocationQuantFinit(void) -{ - iScrQuantFinit(); - aScrDisp -> i_finit(); - aciKillLinks(); - aScrDisp -> flags &= ~AS_FULL_REDRAW; - aciAutoRun = iGetOptionValue(iAUTO_ACCELERATION); -} - -void loadMouseFrames(void) -{ - XStream fh; - if(actintLowResFlag) - fh.open("resource/actint/640x480/mouse.bml",XS_IN); - else - fh.open("resource/actint/800x600/mouse.bml",XS_IN); - fh > aMouseSizeX > aMouseSizeY > aMouseSize; - aMouseFrames = new unsigned char[aMouseSizeX * aMouseSizeY * aMouseSize]; - fh.read(aMouseFrames,aMouseSizeX * aMouseSizeY * aMouseSize); - fh.close(); - - fh.open("resource/iscreen/mouse.bml"); - fh > iMouseSizeX > iMouseSizeY > iMouseSize; - iMouseFrames = new unsigned char[iMouseSizeX * iMouseSizeY * iMouseSize]; - fh.read(iMouseFrames,iMouseSizeX * iMouseSizeY * iMouseSize); - fh.close(); - - MouseSize2 = iMouseSize/2; -} - -int aciReInitItem(actintItemData* p) -{ - int id; - invItem* it = aScrDisp -> get_item_ptr(p -> type); - if(!it) { - std::cout<<"aciReInitItem !it p:"< item_ptr = p; - p -> actintOwner = it; - - if(it -> slotType != -1){ - id = aScrDisp -> curMatrix -> get_item_slot(it); - if(id != -1) - aciSendEvent2itmdsp(ACI_ACTIVATE_ITEM,p,id); - } - return 1; -} - -int aciReInitItemXY(actintItemData* p,int x,int y) -{ - int id; - invItem* it = aScrDisp->get_item_ptr_xy(p->type, x, y); - if(!it) { - std::cout<<"aciReInitItemXY !it p:"< item_ptr = p; - p -> actintOwner = it; - - if(it -> slotType != -1){ - id = aScrDisp -> curMatrix -> get_item_slot(it); - if(id != -1) - aciSendEvent2itmdsp(ACI_ACTIVATE_ITEM,p,id); - } - return 1; -} - -void aciKillLinks(void) -{ - if(!aScrDisp -> curMatrix) return; - invItem* p = (invItem*)aScrDisp -> curMatrix -> items -> last; - while(p){ - p -> item_ptr = NULL; - p = (invItem*)p -> prev; - } -} - -void aciAutoMoveItems(void) -{ - int i,x,y,sz; - invItem* p,*p1; - if(!aScrDisp -> curMatrix || !aScrDisp -> secondMatrix) - return; - - p = (invItem*)aScrDisp -> curMatrix -> items -> last; - sz = aScrDisp -> curMatrix -> items -> Size; - for(i = 0; i < sz; i ++){ - p1 = (invItem*)p -> prev; - x = p -> MatrixX; - y = p -> MatrixY; - aScrDisp -> curMatrix -> remove_item(p); - if(!aScrDisp -> secondMatrix -> auto_put_item(p)){ - aScrDisp -> curMatrix -> put_item(x,y,p); - } - else { - ((uvsActInt*)p -> uvsDataPtr) -> pos_x = p -> MatrixX; - ((uvsActInt*)p -> uvsDataPtr) -> pos_y = p -> MatrixY; - } - p = p1; - } - SOUND_DROP(); - aScrDisp -> flags &= ~AS_FULL_REDRAW; -} - -void aciSetMechName(void) -{ - iScreenObject* obj; - iStringElement* str; - if(!aScrDisp -> secondMatrix) return; - - obj = (iScreenObject*)aScrDisp -> curLocData -> objList[ACI_MECHOS_ID_OBJ]; - str = (iStringElement*)aScrDisp -> curLocData -> objList[ACI_MECHOS_ID_STR]; - if(!obj || !str) return; - - if(aScrDisp -> secondMatrix -> mech_name) - strcpy(str -> string,aScrDisp -> secondMatrix -> mech_name); - else - strcpy(str -> string," "); - - str -> SizeX = str -> SizeY = 0; - str -> lX = str -> lY = 0; - obj -> init(); -} - -uvsActInt* aciGetMechos(int id) -{ - uvsActInt* p = GMechos; - - while(p){ - if(p -> type == id) - return p; - p = (uvsActInt*)p -> next; - } - return NULL; -} - -uvsActInt* aciGetGamerItem(int id) -{ - uvsActInt* p = GGamer; - - while(p){ - if(p -> type == id) - return p; - p = (uvsActInt*)p -> next; - } - return NULL; -} - -uvsActInt* aciGetShopItem(int id) -{ - uvsActInt* p = GItem; - - while(p){ - if(p -> type == id) - return p; - p = (uvsActInt*)p -> next; - } - return NULL; -} - -void aciSell_Item(invItem* p) -{ - int cr; - invItem* it = aScrDisp -> get_iitem(p -> ID); - uvsActInt* ptr = (uvsActInt*)p -> uvsDataPtr; - listElem* el = (listElem*)GItem; - - if(!ptr) ErrH.Abort("Bad sell item..."); - - ptr -> delink(GGamer); - ptr -> link(el); - GItem = (uvsActInt*)el; - - if(!(p -> flags & INV_ITEM_NO_PAY)) - uvsActIntSell(ptr); - - if(!it -> uvsDataPtr && (!aScrDisp -> curLocData -> ExcludeItems[p -> ID] || (p -> flags & INV_ITEM_NO_PAY))){ - it -> uvsDataPtr = ptr; - } - - if(!(p -> flags & INV_ITEM_NO_PAY)){ - cr = aciGetCurCredits(); - cr += ptr -> sell_price; - aciUpdateCurCredits(cr); - } - - aScrDisp -> free_item(p); -} - -void aciSell_Matrix(invMatrix* p) -{ - int cr; - invItem* itm = (invItem*)p -> items -> last,*itm1; - uvsActInt* ptr = (uvsActInt*)p -> uvsDataPtr; - if(!ptr) ErrH.Abort("Bad sell mechos..."); - while(itm){ - itm1 = (invItem*)itm -> prev; - p -> items -> dconnect((iListElement*)itm); - aciSell_Item(itm); - itm = itm1; - } - cr = aciGetCurCredits(); - cr += ptr -> sell_price; - aciUpdateCurCredits(cr); -} - -int aciCheckSellItem(void) -{ - int x = iMouseX; - iScreenObject* p; - iAVIElement* el = (iAVIElement*)aScrDisp -> curLocData -> objList[ACI_MECHOS_AVI_ID]; - if(!el) return 0; - p = (iScreenObject*)el -> owner; - if(p -> owner) x += ((iScreen*)p -> owner) -> ScreenOffs; - if(p -> CheckXY(x,iMouseY)) return 1; - return 0; -} - -void aciInitInfoPanels(void) -{ - InfoPanel* pl; - CounterPanel* cp; - iBitmapElement* el; - fncMenu* mn; - iScreenObject* obj; - iScreen* scr; - iAVIElement* avi; - - el = (iBitmapElement*)aScrDisp -> curLocData -> s_objList[ACI_QUEST_PANEL_ID]; - pl = aScrDisp -> get_info_panel(ACI_QUEST_PANEL); - if(el && pl){ - obj = (iScreenObject*)el -> owner; - scr = (iScreen*)obj -> owner; - - pl -> PosX = obj -> PosX + el -> lX - scr -> ScreenOffs; - pl -> PosY = obj -> PosY + el -> lY; - - pl -> iScreenOwner = el; - pl -> SizeX = el -> bSizeX; - pl -> SizeY = el -> bSizeY; - - pl -> free_list(); - } - el = (iBitmapElement*)aScrDisp -> curLocData -> s_objList[ACI_ANSWER_PANEL_ID]; - pl = aScrDisp -> get_info_panel(ACI_ANSWER_PANEL); - if(el && pl){ - obj = (iScreenObject*)el -> owner; - scr = (iScreen*)obj -> owner; - - pl -> PosX = obj -> PosX + el -> lX - scr -> ScreenOffs; - pl -> PosY = obj -> PosY + el -> lY; - - pl -> iScreenOwner = el; - pl -> SizeX = el -> bSizeX; - pl -> SizeY = el -> bSizeY; - - pl -> free_list(); - pl -> set_redraw(); - } - el = (iBitmapElement*)aScrDisp -> curLocData -> s_objList[ACI_TIME_PANEL_ID]; - pl = aScrDisp -> get_info_panel(ACI_SHOP_TIME_PANEL); - if(el && pl){ - obj = (iScreenObject*)el -> owner; - scr = (iScreen*)obj -> owner; - - pl -> PosX = obj -> PosX + el -> lX - scr -> ScreenOffs; - pl -> PosY = obj -> PosY + el -> lY; - - pl -> iScreenOwner = el; - pl -> SizeX = el -> bSizeX; - pl -> SizeY = el -> bSizeY; - - pl -> free_list(); - pl -> set_redraw(); - } - el = (iBitmapElement*)aScrDisp -> curLocData -> objList[ACI_PRICE_PANEL_ID]; - pl = aScrDisp -> get_info_panel(ACI_PRICE_PANEL); - if(el && pl){ - obj = (iScreenObject*)el -> owner; - scr = (iScreen*)obj -> owner; - - pl -> PosX = obj -> PosX + el -> lX - scr -> ScreenOffs; - pl -> PosY = obj -> PosY + el -> lY; - - pl -> iScreenOwner = el; - pl -> SizeX = el -> bSizeX; - pl -> SizeY = el -> bSizeY; - - pl -> free_list(); - pl -> set_redraw(); - } - el = (iBitmapElement*)aScrDisp -> curLocData -> objList[ACI_INFO_PANEL_ID]; - pl = aScrDisp -> iscr_iP; - if(el && pl){ - obj = (iScreenObject*)el -> owner; - scr = (iScreen*)obj -> owner; - - pl -> PosX = obj -> PosX + el -> lX - scr -> ScreenOffs; - pl -> PosY = obj -> PosY + el -> lY; - - pl -> iScreenOwner = el; - pl -> SizeX = el -> bSizeX; - pl -> SizeY = el -> bSizeY; - - pl -> free_list(); - pl -> set_redraw(); - } - el = (iBitmapElement*)aScrDisp -> curLocData -> objList[ACI_CREDITS_PANEL_ID]; - cp = aScrDisp -> get_icounter(ACI_CREDITS_PANEL); - if(el && cp){ - obj = (iScreenObject*)el -> owner; - scr = (iScreen*)obj -> owner; - - cp -> PosX = obj -> PosX + el -> lX - scr -> ScreenOffs; - cp -> PosY = obj -> PosY + el -> lY; - - cp -> iScreenOwner = el; - cp -> SizeX = el -> bSizeX; - cp -> SizeY = el -> bSizeY; - } - el = (iBitmapElement*)aScrDisp -> curLocData -> s_objList[ACI_QUEST_PANEL_ID]; - mn = aScrDisp -> get_imenu(ACI_QUEST_MENU); - if(aScrDisp -> qMenu && el){ - obj = (iScreenObject*)el -> owner; - scr = (iScreen*)obj -> owner; - - aScrDisp -> qMenu -> data = el; - - aScrDisp -> qMenu -> ScreenX = obj -> PosX + el -> lX - scr -> ScreenOffs; - aScrDisp -> qMenu -> ScreenY = obj -> PosY + el -> lY; - - aScrDisp -> qMenu -> ScreenSizeX = obj -> SizeX; - aScrDisp -> qMenu -> ScreenSizeY = obj -> SizeY; - } - el = (iBitmapElement*)aScrDisp -> curLocData -> objList[ACI_ITEMS_MENU_ID]; - mn = aScrDisp -> get_imenu(SHOP_ITEMS_MENU_ID); - if(mn && el){ - obj = (iScreenObject*)el -> owner; - scr = (iScreen*)obj -> owner; - - mn -> iScreenOwner = el; - - mn -> SizeX = el -> bSizeX; - mn -> SizeY = el -> bSizeY; - - mn -> PosX = obj -> PosX + el -> lX - scr -> ScreenOffs; - mn -> PosY = obj -> PosY + el -> lY; - - aScrDisp -> clear_menu(mn); - } - avi = (iAVIElement*)aScrDisp -> curLocData -> objList[ACI_MECHOS_AVI_ID]; - if(avi){ - obj = (iScreenObject*)avi -> owner; - if(obj -> flags & OBJ_TRIGGER){ - ((iTriggerObject*)obj) -> state = 0; - ((iTriggerObject*)obj) -> trigger_init(); - } - } -} - -void aciInitAviObject(void) -{ - fncMenu* mn; - iScreenObject* obj; - iAVIElement* avi; - - avi = (iAVIElement*)aScrDisp -> curLocData -> objList[ACI_MECHOS_AVI_ID]; - if(avi){ - obj = (iScreenObject*)avi -> owner; - if(obj -> flags & OBJ_TRIGGER){ - ((iTriggerObject*)obj) -> state = 0; - ((iTriggerObject*)obj) -> trigger_init(); - } - } - mn = aScrDisp -> get_imenu(SHOP_ITEMS_MENU_ID); - if(mn) mn -> flags &= ~FM_ACTIVE; - - switch(iEvLineID){ - case MECHOS_LIST_MODE: - iEvLineID = MECHOS_MODE; - break; - case ITEMS_LIST_MODE: - iEvLineID = ITEMS_MODE; - break; - case WEAPONS_LIST_MODE: - iEvLineID = WEAPONS_MODE; - break; - } - aciCurAviIndex = ACI_PICTURE_AVI_ENG; -} - -void redraw_fnc(int x,int y,int sx,int sy,int fnc) -{ - switch(fnc){ - case FMENU_MAP: - show_map(x,y,sx,sy); - break; - case FMENU_WMAP: - if(aScrDisp -> wMap){ - aScrDisp -> wMap -> redraw(x + ((sx - aScrDisp -> wMap -> SizeX) >> 1),y + ((sy - aScrDisp -> wMap -> SizeY) >> 1)); - } - else { - XGR_Rectangle(x,y,sx,sy,0,0,XGR_FILLED); - } - break; - case FMENU_TARGETS: - break; - case FMENU_CAMERAS: - aciShowCamerasMenu(x,y,sx,sy); - break; - case FMENU_PARAMETERS: - aciRedrawParamsPanel(x,y,sx,sy); - break; - default: - XGR_Rectangle(x,y,sx,sy,0,0,XGR_FILLED); - break; - } -} - -void aciSetTimePanel(void) -{ - char* p; - int d,h,m,s; - - InfoPanel* iPl; - if(aScrDisp -> flags & AS_ISCREEN) - iPl = aScrDisp -> get_info_panel(ACI_SHOP_TIME_PANEL); - else - iPl = aScrDisp -> get_aci_info_panel(ACI_TIME_PANEL); - - if(!iPl) return; - - ConTimer.sTime.init(); - - if(NetworkON){ - GetNetworkGameTime(d,h,m,s); - } - else { - d = ConTimer.day; - h = ConTimer.hour; - m = ConTimer.min; - s = ConTimer.sec; - } - - if(d < 100) ConTimer.sTime < " "; - if(d < 10) ConTimer.sTime < " "; - - ConTimer.sTime <= d < " "; - if(h < 10) ConTimer.sTime < "0"; - ConTimer.sTime <= h < ":"; - if(m < 10) ConTimer.sTime < "0"; - ConTimer.sTime <= m < ":"; - if(s < 10) ConTimer.sTime < "0"; - ConTimer.sTime <= s; - - p = ConTimer.sTime.GetBuf(); - - iPl -> free_list(); - iPl -> add_item(aciSTR_DAY); - iPl -> add_item(p,-1,(aciCurColorScheme[FM_SELECT_BORDER_COL] << 8) | aciCurColorScheme[FM_SELECT_COL]); - - if(aScrDisp -> flags & AS_ISCREEN) - iPl -> set_redraw(); -} - -void aciInitEvLineID(void) -{ - fncMenu* mn; - iTriggerObject* p = (iTriggerObject*)aScrDisp -> curLocData -> objList[ACI_TRIGGER_ID]; - if(!p) return; - - if(GMechos){ - p -> state = 2; - p -> init_state(); - } - else { - p -> state = 0; - p -> init_state(); - } - iEvLineID = p -> state + 1; - - p = (iTriggerObject*)aScrDisp -> curLocData -> objList[ACI_AVI_OBJ_ID]; - if(p){ - mn = aScrDisp -> get_imenu(SHOP_ITEMS_MENU_ID); - if(mn) mn -> flags &= ~FM_ACTIVE; - p -> state = 0; - p -> init_state(); - } - switch(uvsBunchNumber){ - case 2: - aciCurAviIndexDelta = 0; - break; - case 0: - aciCurAviIndexDelta = ACI_PICTURE_AVI_ENG2; - break; - case 1: - aciCurAviIndexDelta = ACI_PICTURE_AVI_ENG3; - break; - } -} - -void aciInitWorldIDs(void) -{ - int i; - signed char* ids; - uvsWorld* wrld; - aciWorldInfo* a_wrld; - if(!aScrDisp -> wMap) return; - ids = aScrDisp -> wMap -> world_ids; - - memset(ids,-1,AS_MAX_WORLD); - - for(i = 0; i < WORLD_MAX; i ++){ - wrld = WorldTable[i]; - a_wrld = aScrDisp -> wMap -> get_world_p(wrld -> name); - if(a_wrld){ - ids[i] = a_wrld -> ID; - a_wrld -> uvsID = i; - } - } - aScrDisp -> flags |= AS_WORLDS_INIT; -// aciPrepareWorldsMenu(); -} - -void aciWorldLinksON(void) -{ - int i,cur_id; - aciWorldInfo* p,*p1; - - if(CurrentWorld == -1) return; - - cur_id = aScrDisp -> wMap -> world_ids[CurrentWorld]; - if(cur_id == -1) return; - - p = aScrDisp -> wMap -> world_ptr[cur_id]; - if(!p) return; - - for(i = 0; i < AS_MAX_WORLD; i ++){ - p1 = aScrDisp -> wMap -> world_ptr[i]; - if(i != cur_id && p1){ - if(p1 -> links[cur_id] || p -> links[i]){ - p1 -> flags |= AS_ACCESSIBLE_WORLD; - } - } - if(p1 && uvsReturnWorldGamerVisit(p1 -> uvsID)){ - p1 -> flags |= AS_EXPLORED_WORLD; - } - } - aScrDisp -> wMap -> flags |= WMAP_REBUILD_PIC; -} - -void aciWorldExploredInfo(void) -{ - int i; - aciWorldInfo* p1; - - for(i = 0; i < AS_MAX_WORLD; i ++){ - p1 = aScrDisp -> wMap -> world_ptr[i]; - if(p1 && uvsReturnWorldGamerVisit(p1 -> uvsID)){ - p1 -> flags |= AS_EXPLORED_WORLD; - } - } -} - -void aciWorldLinksOFF(void) -{ - int i; - aciWorldInfo* p; - - for(i = 0; i < AS_MAX_WORLD; i ++){ - p = aScrDisp -> wMap -> world_ptr[i]; - if(p){ - p -> flags &= ~AS_ACCESSIBLE_WORLD; - } - } - aScrDisp -> wMap -> flags |= WMAP_REBUILD_PIC; -} - -void aciOpenWorldLink(int w1,int w2) -{ - int id1,id2; - aciWorldInfo* p1,*p2; - - id1 = aScrDisp -> wMap -> world_ids[w1]; - id2 = aScrDisp -> wMap -> world_ids[w2]; - - if(id1 == -1 || id2 == -1) ErrH.Abort("Bad world ID..."); - - p1 = aScrDisp -> wMap -> world_ptr[id1]; - p2 = aScrDisp -> wMap -> world_ptr[id2]; - - if(!p1 || !p2) ErrH.Abort("Bad world ptr..."); - - p1 -> links[id2] = 1; - if(id1 != id2 && p2 -> links[id1]) p2 -> links[id1] = 0; - aScrDisp -> wMap -> flags |= WMAP_REBUILD_PIC; - aciPrevJumpCount = -1; -} - -int aciWorldLinkExist(int w1,int w2,int sp_flag) -{ - int id1,id2; - aciWorldInfo* p1,*p2; - - id1 = aScrDisp -> wMap -> world_ids[w1]; - id2 = aScrDisp -> wMap -> world_ids[w2]; - - if(id1 == -1 || id2 == -1) ErrH.Abort("Bad world ID..."); - - p1 = aScrDisp -> wMap -> world_ptr[id1]; - p2 = aScrDisp -> wMap -> world_ptr[id2]; - - if(!p1 || !p2) ErrH.Abort("Bad world ptr..."); - - if(p1 -> links[id2] || p2 -> links[id1]){ - if(!sp_flag || (p1 -> flags & AS_ACCESSIBLE_WORLD || p2 -> flags & AS_ACCESSIBLE_WORLD)){ - return 1; - } - } - - return 0; -} - -void aciInitAviID(void) -{ - invItem* p; - invMatrix* m; - iAVIElement* avi; - - InfoPanel* ip = aScrDisp -> get_info_panel(ACI_PRICE_PANEL); - - avi = (iAVIElement*)aScrDisp -> curLocData -> objList[ACI_MECHOS_AVI_ID]; - if(!avi) return; - - if(ip){ - ip -> free_list(); - ip -> set_redraw(); - } - - if(!iShopItem){ - aciXConv -> init(); - *aciXConv < iVideoPath < "empty.avi"; - strcpy(avi -> avi_name,aciXConv -> address()); - iEvLineID = EMPTY_MODE; - return; - } - - if(iEvLineID == MECHOS_MODE || iEvLineID == MECHOS_LIST_MODE || iEvLineID == CHANGE_2_MECHOS_MODE){ - m = (invMatrix*)iShopItem; - aci_SecondMatrixID = m -> type; - if(!aciCurAviIndex){ - if(m -> avi_ids && m -> avi_ids[aciCurAviIndex + aciCurAviIndexDelta]){ - strcpy(avi -> avi_name,m -> avi_ids[aciCurAviIndex + aciCurAviIndexDelta]); - } - } - else { - if(m -> avi_ids && m -> avi_ids[aciCurAviIndex]){ - strcpy(avi -> avi_name,m -> avi_ids[aciCurAviIndex]); - } - } - if(ip && m -> mech_name){ - aciInitPricePanel(ip,(iListElement*)m,MECHOS_MODE,0); - -// ip -> add_item(m -> mech_name,-1,aciCurColorScheme[FM_SELECT_COL]); -// ip -> add_item(aciGetPrice((iListElement*)m,MECHOS_MODE,0),-1,aciCurColorScheme[FM_SELECT_COL]); - } - } - else { - p = (invItem*)iShopItem; - if(p -> avi_ids && p -> avi_ids[aciCurAviIndex]){ - strcpy(avi -> avi_name,p -> avi_ids[aciCurAviIndex]); - } - if(ip){ - aciInitPricePanel(ip,(iListElement*)p,ITEMS_MODE,0); - } - } -} - -void aciInitShopAvi(void) -{ - iAVIElement* avi; - - avi = (iAVIElement*)aScrDisp -> curLocData -> objList[ACI_MECHOS_AVI_ID]; - if(!avi) return; - - avi -> change_avi(avi -> avi_name); - avi -> init_size(); - avi -> init_align(); -} - -void aciNextShopItem(void) -{ - invItem* p,*fp; - invMatrix* m,*fm; - if(!iShopItem){ - aciInitEvLineID(); - aciChangeList(); - return; - } - - aciShopMenuDown(); - - switch(iEvLineID){ - case MECHOS_MODE: - case MECHOS_LIST_MODE: - fm = (invMatrix*)iShopItem; - m = (invMatrix*)fm -> next; - if(m != fm){ - while(!m -> uvsDataPtr){ - m = (invMatrix*)m -> next; - if(m == fm) break; - } - if(!m -> uvsDataPtr){ - iShopItem = NULL; - } - else { - iShopItem = (iListElement*)m; - aciCurMechosID = m -> type; - } - } - break; - case ITEMS_MODE: - case ITEMS_LIST_MODE: - case CHANGE_2_ITEMS_MODE: - fp = (invItem*)iShopItem; - p = (invItem*)fp -> next; - if(p != fp){ - while(!p -> uvsDataPtr || p -> classID != AS_ITEM_CLASS){ - p = (invItem*)p -> next; - if(p == fp) break; - } - if(!p -> uvsDataPtr || p -> classID != AS_ITEM_CLASS) - iShopItem = NULL; - else - iShopItem = (iListElement*)p; - } - break; - case WEAPONS_MODE: - case WEAPONS_LIST_MODE: - case CHANGE_2_WEAPONS_MODE: - fp = (invItem*)iShopItem; - p = (invItem*)fp -> next; - if(p != fp){ - while(!p -> uvsDataPtr || p -> classID != AS_WEAPON_CLASS){ - p = (invItem*)p -> next; - if(p == fp) break; - } - if(!p -> uvsDataPtr || p -> classID != AS_WEAPON_CLASS) - iShopItem = NULL; - else - iShopItem = (iListElement*)p; - } - break; - } - aciInitAviID(); -} - -void aciSetShopItem(int id) -{ - invItem* p; - invMatrix* m; - if(!iShopItem){ - aciInitEvLineID(); - aciChangeList(); - return; - } - - switch(iEvLineID){ - case MECHOS_MODE: - case MECHOS_LIST_MODE: - case CHANGE_2_MECHOS_MODE: - m = (invMatrix*)aScrDisp -> i_matrixList -> last; - while(m){ - if(m -> type == id){ - iShopItem = (iListElement*)m; - aciCurMechosID = m -> type; - break; - } - m = (invMatrix*)m -> prev; - } - if(!m) iShopItem = NULL; - break; - case ITEMS_MODE: - case ITEMS_LIST_MODE: - case CHANGE_2_ITEMS_MODE: - case WEAPONS_MODE: - case WEAPONS_LIST_MODE: - case CHANGE_2_WEAPONS_MODE: - p = (invItem*)aScrDisp -> i_itemList -> last; - while(p){ - if(p -> ID == id){ - iShopItem = (iListElement*)p; - break; - } - p = (invItem*)p -> prev; - } - if(!p) iShopItem = NULL; - break; - } - aciInitAviID(); -} - -void aciPrevShopItem(void) -{ - invItem* p,*fp; - invMatrix* m,*fm; - - if(!iShopItem){ - aciInitEvLineID(); - aciChangeList(); - return; - } - - aciShopMenuUp(); - - switch(iEvLineID){ - case MECHOS_MODE: - case MECHOS_LIST_MODE: - fm = (invMatrix*)iShopItem; - m = (invMatrix*)fm -> prev; - if(!m) m = (invMatrix*)aScrDisp -> i_matrixList -> last; - while(!m -> uvsDataPtr){ - m = (invMatrix*)m -> prev; - if(!m) m = (invMatrix*)aScrDisp -> i_matrixList -> last; - if(m == fm) break; - } - if(!m -> uvsDataPtr){ - iShopItem = NULL; - } - else { - iShopItem = (iListElement*)m; - aciCurMechosID = m -> type; - } - break; - case ITEMS_MODE: - case ITEMS_LIST_MODE: - case CHANGE_2_ITEMS_MODE: - fp = (invItem*)iShopItem; - p = (invItem*)fp -> prev; - if(!p) p = (invItem*)aScrDisp -> i_itemList -> last; - if(p != fp){ - while(!p -> uvsDataPtr || p -> classID != AS_ITEM_CLASS){ - p = (invItem*)p -> prev; - if(!p) p = (invItem*)aScrDisp -> i_itemList -> last; - if(p == fp) break; - } - if(!p -> uvsDataPtr || p -> classID != AS_ITEM_CLASS) - iShopItem = NULL; - else - iShopItem = (iListElement*)p; - } - break; - case WEAPONS_MODE: - case WEAPONS_LIST_MODE: - case CHANGE_2_WEAPONS_MODE: - fp = (invItem*)iShopItem; - p = (invItem*)fp -> prev; - if(!p) p = (invItem*)aScrDisp -> i_itemList -> last; - if(p != fp){ - while(!p -> uvsDataPtr || p -> classID != AS_WEAPON_CLASS){ - p = (invItem*)p -> prev; - if(!p) p = (invItem*)aScrDisp -> i_itemList -> last; - if(p == fp) break; - } - if(!p -> uvsDataPtr || p -> classID != AS_WEAPON_CLASS) - iShopItem = NULL; - else - iShopItem = (iListElement*)p; - } - break; - } - aciInitAviID(); -} - -void aciChangeList(void) -{ - invItem* p,*fp; - invMatrix* m,*fm; - - switch(iEvLineID){ - case MECHOS_MODE: - case MECHOS_LIST_MODE: - fm = m = (invMatrix*)aScrDisp -> i_matrixList -> first; - while(!m -> uvsDataPtr){ - m = (invMatrix*)m -> next; - if(m == fm) break; - } - if(!m -> uvsDataPtr){ - iShopItem = NULL; - } - else { - iShopItem = (iListElement*)m; - aciCurMechosID = m -> type; - } - break; - case ITEMS_MODE: - case ITEMS_LIST_MODE: - fp = p = (invItem*)aScrDisp -> i_itemList -> first; - while(!p -> uvsDataPtr || p -> classID != AS_ITEM_CLASS){ - p = (invItem*)p -> next; - if(p == fp) break; - } - if(!p -> uvsDataPtr || p -> classID != AS_ITEM_CLASS) - iShopItem = NULL; - else - iShopItem = (iListElement*)p; - break; - case WEAPONS_MODE: - case WEAPONS_LIST_MODE: - fp = p = (invItem*)aScrDisp -> i_itemList -> first; - while(!p -> uvsDataPtr || p -> classID != AS_WEAPON_CLASS){ - p = (invItem*)p -> next; - if(p == fp) break; - } - if(!p -> uvsDataPtr || p -> classID != AS_WEAPON_CLASS) - iShopItem = NULL; - else - iShopItem = (iListElement*)p; - break; - } - aciInitAviID(); - if(iEvLineID == MECHOS_LIST_MODE || iEvLineID == ITEMS_LIST_MODE || iEvLineID == WEAPONS_LIST_MODE) - aciBuildShopList(); -} - -void aciInitShopItems(void) -{ - invItem* p; - invMatrix* m; - uvsActInt* u; - -#ifdef _ACI_LOGFILE_ - aScrDisp -> logFile.open(aciLogFileName,XS_OUT | XS_APPEND | XS_NOREPLACE); - aScrDisp -> logFile < "\r\nLocation: " < aci_curLocationName; -#endif - - p = (invItem*)aScrDisp -> i_itemList -> last; - while(p){ - p -> uvsDataPtr = NULL; - p = (invItem*)p -> prev; - } - - m = (invMatrix*)aScrDisp -> i_matrixList -> last; - while(m){ - m -> uvsDataPtr = NULL; - m = (invMatrix*)m -> prev; - } - - if(aScrDisp -> curMatrix){ - p = (invItem*)aScrDisp -> curMatrix -> items -> last; - while(p){ - p -> uvsDataPtr = NULL; - p = (invItem*)p -> prev; - } - } - -#ifdef _ACI_LOGFILE_ - aScrDisp -> logFile < "\r\n\r\nShopItems :\r\n"; -#endif - - u = GMechos; - while(u){ - m = aScrDisp -> get_imatrix(u -> type); - if(m && !m -> uvsDataPtr) - m -> uvsDataPtr = u; -#ifdef _ACI_LOGFILE_ - aScrDisp -> logFile < "\r\nMechos \"" < m -> mech_name < "\""; -#endif - - u = (uvsActInt*)u -> next; - } - u = GItem; - while(u){ - p = aScrDisp -> get_iitem(u -> type); - if(p && !p -> uvsDataPtr) - p -> uvsDataPtr = u; - -#ifdef _ACI_LOGFILE_ - aScrDisp -> logFile < "\r\nItem \"" < p -> ID_ptr < "\""; -#endif - - u = (uvsActInt*)u -> next; - } - - if(aScrDisp -> curMatrix){ - -#ifdef _ACI_LOGFILE_ - aScrDisp -> logFile < "\r\n\r\nGamerItems :\r\n"; -#endif - p = (invItem*)aScrDisp -> curMatrix -> items -> last; - while(p){ - p -> uvsDataPtr = NULL; -#ifdef _ACI_LOGFILE_ - aScrDisp -> logFile < "\r\n" < p -> ID_ptr; -#endif - p = (invItem*)p -> prev; - } - u = GGamer; - while(u){ - p = (invItem*)aScrDisp -> curMatrix -> items -> last; - while(p){ - if(!p -> uvsDataPtr && p -> ID == u -> type && p -> MatrixX == u -> pos_x && p -> MatrixY == u -> pos_y){ - p -> uvsDataPtr = u; - break; - } - p = (invItem*)p -> prev; - } - u = (uvsActInt*)u -> next; - } - p = (invItem*)aScrDisp -> curMatrix -> items -> last; - while(p){ - if(!p -> uvsDataPtr) - ErrH.Abort("aciInitShopItems failed..."); - p = (invItem*)p -> prev; - } - aScrDisp -> curMatrix -> uvsDataPtr = GGamerMechos; - } - aciChangeList(); -#ifdef _ACI_LOGFILE_ - aScrDisp -> logFile.close(); -#endif -} - -void aciChangeLineID(void) -{ - switch(iEvLineID){ - case CHANGE_2_MECHOS_MODE: - iEvLineID = MECHOS_MODE; - break; - case CHANGE_2_WEAPONS_MODE: - iEvLineID = WEAPONS_MODE; - break; - case CHANGE_2_ITEMS_MODE: - iEvLineID = ITEMS_MODE; - break; - case MECHOS_LIST_MODE: - iEvLineID = MECHOS_MODE; - break; - case ITEMS_LIST_MODE: - iEvLineID = ITEMS_MODE; - break; - case WEAPONS_LIST_MODE: - iEvLineID = WEAPONS_MODE; - break; - } -} - -void aciBuyItem(void) -{ - int cr; - invItem* p,*p1; - invMatrix* m,*m1; - uvsActInt* u,*u1; - listElem* el; - - if(!(aScrDisp -> flags & AS_INV_MOVE_ITEM)){ - if(iShopItem){ - if(iEvLineID == MECHOS_MODE || iEvLineID == MECHOS_LIST_MODE){ - m = (invMatrix*)iShopItem; - u = (uvsActInt*)m -> uvsDataPtr; - - if(!u) ErrH.Abort("Bad shop item..."); - u -> delink(GMechos); - if(aScrDisp -> curMatrix){ - if(GGamerMechos){ - el = GMechos; - //std::cout<<"GGamerMechos -> link(el)"< link(el); - GMechos = (uvsActInt*)el; - } - - m1 = aScrDisp -> get_imatrix(aScrDisp -> curMatrix -> type); - if(!m1 -> uvsDataPtr) m1 -> uvsDataPtr = GGamerMechos; - - iShopItem = (iListElement*)m1; - } - else { - aciNextShopItem(); - } - //std::cout<<"aciBuyItem GGamerMechos = u"< price; - aciUpdateCurCredits(cr); - - u1 = aciGetMechos(m -> type); - if(u1) - m -> uvsDataPtr = u1; - else - m -> uvsDataPtr = NULL; - - } - else { - if(aScrDisp -> flags & AS_INV_MOVE_ITEM) return; - - p = (invItem*)iShopItem; - p1 = aScrDisp -> alloc_item(); - p -> clone(p1); - - aScrDisp -> curItem = p1; - set_mouse_cursor(p1 -> frame,p1 -> ScreenSizeX,p1 -> ScreenSizeY); - - aScrDisp -> flags |= AS_INV_MOVE_ITEM; - - el = (listElem*)GGamer; - u = (uvsActInt*)p -> uvsDataPtr; - if(!u) ErrH.Abort("Null uvsDataPtr..."); - u -> delink(GItem); - u -> link(el); - GGamer = (uvsActInt*)el; - p1 -> uvsDataPtr = u; - p1 -> flags |= INV_ITEM_NO_PAY; - p1 -> flags |= INV_ITEM_NEW; - - u -> pos_x = u -> pos_y = -1; - p1 -> MatrixX = p1 -> MatrixY = -1; - - if(aScrDisp -> iscr_iP){ - aciInitPricePanel(aScrDisp -> iscr_iP,(iListElement*)p1,ITEMS_MODE,1); - aScrDisp -> iscr_iP -> set_redraw(); - } - - u1 = aciGetShopItem(u -> type); - if(u1 && !aScrDisp -> curLocData -> ExcludeItems[u1 -> type]){ - p -> uvsDataPtr = u1; - } - else { - p -> uvsDataPtr = NULL; - aciNextShopItem(); - } - } - } - aciInitAviID(); - if(iEvLineID == MECHOS_LIST_MODE || iEvLineID == ITEMS_LIST_MODE || iEvLineID == WEAPONS_LIST_MODE) - aciBuildShopList(); - } - else { - aciSellMoveItem(); - } -} - -void aciSellMoveItem(void) -{ - int i,id,fl = 0,index,exclude = 1; - invItem* p,*p1; - invMatrix* m,*m1; - uvsActInt* u,*pu; - - iListElement* prev_item = iShopItem; - - int change_mode = 0,prev_mode = iEvLineID; - - if(!(aScrDisp -> flags & AS_INV_MOVE_ITEM)) return; - - p = aScrDisp -> curItem; - p1 = aScrDisp -> get_iitem(p -> ID); - pu = (uvsActInt*)p -> uvsDataPtr; - - if(!uvsCurrentWorldUnable && p -> partData){ - index = -1; - m = (invMatrix*)aScrDisp -> i_matrixList -> last; - while(m){ - for(i = 0; i < 2; i ++){ - if(m -> uvsDataPtr && m -> type == p -> partData -> baseID[i]) - index = i; - } - m = (invMatrix*)m -> prev; - } - if(index != -1) - fl = 1; - } - if(!fl){ - id = p -> ID; - if(p -> flags & INV_ITEM_NO_PAY) exclude = 0; - if(p -> classID == AS_ITEM_CLASS && prev_mode != ITEMS_MODE && prev_mode != ITEMS_LIST_MODE){ - change_mode = CHANGE_2_ITEMS_MODE; - if(iEvLineID != ITEMS_MODE && iEvLineID != ITEMS_LIST_MODE) - iEvLineID = change_mode; - } - if(p -> classID == AS_WEAPON_CLASS && prev_mode != WEAPONS_MODE && prev_mode != WEAPONS_LIST_MODE){ - change_mode = CHANGE_2_WEAPONS_MODE; - if(iEvLineID != WEAPONS_MODE && iEvLineID != WEAPONS_LIST_MODE) - iEvLineID = change_mode; - } - - aciSell_Item(p); - aScrDisp -> flags ^= AS_INV_MOVE_ITEM; - - if(!exclude || !aScrDisp -> curLocData -> ExcludeItems[id]){ - iShopItem = p1; - } - else { - aciRemoveUvsItem(pu); - iShopItem = prev_item; - switch(prev_mode){ - case ITEMS_MODE: - case ITEMS_LIST_MODE: - change_mode = CHANGE_2_ITEMS_MODE; - break; - case WEAPONS_MODE: - case WEAPONS_LIST_MODE: - change_mode = CHANGE_2_WEAPONS_MODE; - break; - case MECHOS_MODE: - case MECHOS_LIST_MODE: - change_mode = CHANGE_2_MECHOS_MODE; - break; - } - iEvLineID = change_mode; - } - } - else { - m = aScrDisp -> get_imatrix(p -> partData -> baseID[index]); - m1 = aScrDisp -> get_imatrix(p -> partData -> targetID[index]); - if(!m || !m1) - ErrH.Abort("Bad constructor mechos ID..."); - if(m1 -> uvsDataPtr) - ErrH.Abort("Duplicate constructor mechos..."); - - u = (uvsActInt*)m -> uvsDataPtr; - - u -> type = m1 -> type; - m1 -> uvsDataPtr = u; - - m -> uvsDataPtr = NULL; - - iShopItem = (iListElement*)m1; - - u = (uvsActInt*)p -> uvsDataPtr; - u -> delink(GGamer); - delete u; - - p -> uvsDataPtr = NULL; - - if(m1 -> flags & IM_NOT_COMPLETE){ - SOUND_UNICUM_1(); - } - else { - SOUND_UNICUM_2(); - } - - iEvLineID = CHANGE_2_MECHOS_MODE; - aScrDisp -> flags ^= AS_INV_MOVE_ITEM; - } - - aciInitAviID(); - restore_mouse_cursor(); - - if(aScrDisp -> iscr_iP){ - aScrDisp -> iscr_iP -> free_list(); - aScrDisp -> iscr_iP -> set_redraw(); - } - - if(fl) iEvLineID = CHANGE_2_MECHOS_MODE; - - aciInitShopAvi(); -} - -int uvs_aciKillItem(int id,int id1) -{ - int ret = 0; - uvsActInt* u; - invItem* p,*p1,*it; - if(!aScrDisp -> curMatrix) return ret; - p = (invItem*)aScrDisp -> curMatrix -> items -> last; - - if(id1 != -1){ - it = aScrDisp -> get_iitem(id1); - } - - while(p){ - p1 = (invItem*)p -> prev; - if(p -> ID == id){ - if(id1 == -1){ - aScrDisp -> curMatrix -> remove_item(p); - aScrDisp -> free_item(p); - } - else { - it -> clone(p); - u = (uvsActInt*)p -> uvsDataPtr; - u -> type = it -> ID; - } - ret = 1; - } - p = p1; - } - if(aScrDisp -> flags & AS_INV_MOVE_ITEM){ - if(aScrDisp -> curItem -> ID == id){ - if(id1 == -1){ - aScrDisp -> free_item(aScrDisp -> curItem); - aScrDisp -> curItem = NULL; - aScrDisp -> flags ^= AS_INV_MOVE_ITEM; - restore_mouse_cursor(); - } - else { - it -> clone(aScrDisp -> curItem); - u = (uvsActInt*)aScrDisp -> curItem -> uvsDataPtr; - u -> type = it -> ID; - set_mouse_cursor(aScrDisp -> curItem -> frame,aScrDisp -> curItem -> ScreenSizeX,aScrDisp -> curItem -> ScreenSizeY); - } - ret = 1; - } - } - aScrDisp -> curMatrix -> set_redraw(); - if((aScrDisp -> flags & AS_ISCREEN) && GCharItem && GCharItem -> type == id){ - aciML_D -> key_trap(AML_KEY,AML_KILL_ELEECH_CODE); - } - return ret; -} - -int uvs_aciKillOneItem(int id,int x,int y) -{ - int ret = 0; - invItem* p,*p1; - if(!aScrDisp -> curMatrix) return ret; - p = (invItem*)aScrDisp -> curMatrix -> items -> last; - - while(p){ - p1 = (invItem*)p -> prev; - if(p -> ID == id && p -> MatrixX == x && p -> MatrixY == y){ - aScrDisp -> curMatrix -> remove_item(p); - aScrDisp -> free_item(p); - return 1; - } - p = p1; - } - return 0; -} - -void uvs_aciChangeItem(int id_from,int id_to) -{ - invItem* p,*p1,*it; - if(!aScrDisp -> curMatrix) return; - p = (invItem*)aScrDisp -> curMatrix -> items -> last; - if(!(aScrDisp -> flags & AS_ISCREEN)) - it = aScrDisp -> get_item(id_to); - else - it = aScrDisp -> get_iitem(id_to); - - while(p){ - p1 = (invItem*)p -> prev; - if(p -> ID == id_from){ - it -> clone(p); - } - p = p1; - } - aScrDisp -> curMatrix -> set_redraw(); - - if(aScrDisp -> flags & AS_INV_MOVE_ITEM){ - if(aScrDisp -> curItem -> ID == id_from){ - it -> clone(aScrDisp -> curItem); - set_mouse_cursor(aScrDisp -> curItem -> frame,aScrDisp -> curItem -> ScreenSizeX,aScrDisp -> curItem -> ScreenSizeY); - } - } - - if(aScrDisp -> flags & AS_ISCREEN){ - if(!aScrDisp -> secondMatrix) return; - p = (invItem*)aScrDisp -> secondMatrix -> items -> last; - while(p){ - p1 = (invItem*)p -> prev; - if(p -> ID == id_from){ - it -> clone(p); - } - p = p1; - } - aScrDisp -> secondMatrix -> set_redraw(); - } -} - -void uvs_aciChangeOneItem(int id_from,int id_to,int x,int y) -{ - invItem* p,*p1,*it; - if(!aScrDisp -> curMatrix) return; - p = (invItem*)aScrDisp -> curMatrix -> items -> last; - - if(!(aScrDisp -> flags & AS_ISCREEN)) - it = aScrDisp -> get_item(id_to); - else - it = aScrDisp -> get_iitem(id_to); - - while(p){ - p1 = (invItem*)p -> prev; - if(p -> ID == id_from && p -> MatrixX == x && p -> MatrixY == y){ - it -> clone(p); -// if(p -> uvsDataPtr) ((uvsActInt*)p -> uvsDataPtr) -> type = id_to; - return; - } - p = p1; - } - aScrDisp -> curMatrix -> set_redraw(); - - if(aScrDisp -> flags & AS_INV_MOVE_ITEM){ - if(aScrDisp -> curItem -> ID == id_from && aScrDisp -> curItem -> MatrixX == x && aScrDisp -> curItem -> MatrixY == y){ - it -> clone(aScrDisp -> curItem); - set_mouse_cursor(aScrDisp -> curItem -> frame,aScrDisp -> curItem -> ScreenSizeX,aScrDisp -> curItem -> ScreenSizeY); - return; - } - } - - if(aScrDisp -> flags & AS_ISCREEN){ - if(!aScrDisp -> secondMatrix) return; - p = (invItem*)aScrDisp -> secondMatrix -> items -> last; - while(p){ - p1 = (invItem*)p -> prev; - if(p -> ID == id_from && p -> MatrixX == x && p -> MatrixY == y){ - it -> clone(p); - } - p = p1; - } - aScrDisp -> secondMatrix -> set_redraw(); - } -} - -void uvs_aciChangeOneItem(int id_from,int id_to,uvsActInt* ptr) -{ - invItem* p,*p1,*it; - if(!aScrDisp -> curMatrix) return; - p = (invItem*)aScrDisp -> curMatrix -> items -> last; - - it = aScrDisp -> get_iitem(id_to); - - while(p){ - p1 = (invItem*)p -> prev; - if(p -> ID == id_from && p -> uvsDataPtr == ptr){ - it -> clone(p); - return; - } - p = p1; - } - aScrDisp -> curMatrix -> set_redraw(); - - if(aScrDisp -> flags & AS_INV_MOVE_ITEM){ - if(aScrDisp -> curItem -> ID == id_from && aScrDisp -> curItem -> uvsDataPtr == ptr){ - it -> clone(aScrDisp -> curItem); - set_mouse_cursor(aScrDisp -> curItem -> frame,aScrDisp -> curItem -> ScreenSizeX,aScrDisp -> curItem -> ScreenSizeY); - return; - } - } - if(aScrDisp -> flags & AS_ISCREEN){ - if(!aScrDisp -> secondMatrix) return; - p = (invItem*)aScrDisp -> secondMatrix -> items -> last; - while(p){ - p1 = (invItem*)p -> prev; - if(p -> ID == id_from && p -> uvsDataPtr == ptr){ - it -> clone(p); - } - p = p1; - } - aScrDisp -> secondMatrix -> set_redraw(); - } -} - -void aciChangeItem(actintItemData* p) -{ - invItem* p1,*it; - if(!aScrDisp -> curMatrix) return; - - if(!(aScrDisp -> flags & AS_ISCREEN)) - it = aScrDisp -> get_item(p -> type); - else - it = aScrDisp -> get_iitem(p -> type); - - p1 = (invItem*)p -> actintOwner; - it -> clone(p1); - - if(!(aScrDisp -> flags & AS_ISCREEN) && aScrDisp -> curMode == AS_INV_MODE) - aScrDisp -> curMatrix -> set_redraw(); -} - -void aciInitShopList(void) -{ - switch(iEvLineID){ - case MECHOS_LIST_MODE: - iEvLineID = MECHOS_MODE; - aciCloseShopMenu(); - break; - case ITEMS_LIST_MODE: - iEvLineID = ITEMS_MODE; - aciCloseShopMenu(); - break; - case WEAPONS_LIST_MODE: - iEvLineID = WEAPONS_MODE; - aciCloseShopMenu(); - break; - case MECHOS_MODE: - case ITEMS_MODE: - case WEAPONS_MODE: - aciBuildShopList(); - break; - } -} - -void aciCloseShopMenu(void) -{ - fncMenu* mn = aScrDisp -> get_imenu(SHOP_ITEMS_MENU_ID); - if(mn) - mn -> flags &= ~FM_ACTIVE; -} - -void aciShopMenuUp(void) -{ - fncMenu* mn = aScrDisp -> get_imenu(SHOP_ITEMS_MENU_ID); - if(mn && mn -> flags & FM_ACTIVE) - mn -> step_up(); -} - -void aciShopMenuDown(void) -{ - fncMenu* mn = aScrDisp -> get_imenu(SHOP_ITEMS_MENU_ID); - if(mn && mn -> flags & FM_ACTIVE) - mn -> step_down(); -} - -void aciBuildShopList(void) -{ - int i; - - invItem* p; - fncMenu* mn; - invMatrix* m; - fncMenuItem* itm; - - if(!iShopItem) return; - - mn = aScrDisp -> get_imenu(SHOP_ITEMS_MENU_ID); - if(!mn) return; - - aScrDisp -> clear_menu(mn); - - switch(iEvLineID){ - case MECHOS_MODE: - case MECHOS_LIST_MODE: - m = (invMatrix*)aScrDisp -> i_matrixList -> first; - for(i = 0; i < aScrDisp -> i_matrixList -> Size; i ++){ - if(m -> uvsDataPtr){ - if(m -> mech_name){ - itm = aScrDisp -> alloc_menu_item(); - itm -> init_name(m -> mech_name); - itm -> fnc_code = m -> type; - itm -> init(); - mn -> add_item(itm); - } - } - m = (invMatrix*)m -> next; - } - mn -> curFunction = ((invMatrix*)iShopItem) -> type; - iEvLineID = MECHOS_LIST_MODE; - break; - case ITEMS_MODE: - case ITEMS_LIST_MODE: - p = (invItem*)aScrDisp -> i_itemList -> first; - for(i = 0; i < aScrDisp -> i_itemList -> Size; i ++){ - if(p -> uvsDataPtr && p -> classID == AS_ITEM_CLASS){ - if(p->ID_ptr.size()){ - itm = aScrDisp -> alloc_menu_item(); - itm -> init_name(p->ID_ptr.c_str()); - itm -> fnc_code = p -> ID; - itm -> init(); - mn -> add_item(itm); - } - } - p = (invItem*)p -> next; - } - mn -> curFunction = ((invItem*)iShopItem) -> ID; - iEvLineID = ITEMS_LIST_MODE; - break; - case WEAPONS_MODE: - case WEAPONS_LIST_MODE: - p = (invItem*)aScrDisp -> i_itemList -> first; - for(i = 0; i < aScrDisp -> i_itemList -> Size; i ++){ - if(p -> uvsDataPtr && p -> classID == AS_WEAPON_CLASS){ - if(p->ID_ptr.size()){ - itm = aScrDisp -> alloc_menu_item(); - itm -> init_name(p->ID_ptr.c_str()); - itm -> fnc_code = p -> ID; - itm -> init(); - mn -> add_item(itm); - } - } - p = (invItem*)p -> next; - } - mn -> curFunction = ((invItem*)iShopItem) -> ID; - iEvLineID = WEAPONS_LIST_MODE; - break; - } - mn -> set_redraw(); - mn -> flags |= FM_ACTIVE; - - mn -> init_objects(); - - mn -> curItem = mn -> get_fnc_item(mn -> curFunction); - if(!mn -> curItem) - ErrH.Abort("Bad shop menu list..."); - if(mn -> VItems < mn -> items -> Size) - mn -> firstItem = mn -> curItem; - else - mn -> firstItem = (fncMenuItem*)mn -> items -> first; -} - -void aciChooseShopItem(void) -{ - int x,y,id; - - invItem* p; - invMatrix* m; - - fncMenu* mn; - fncMenuItem* itm; - - mn = aScrDisp -> get_imenu(SHOP_ITEMS_MENU_ID); - if(!mn) return; - - itm = mn -> curItem; - - x = iMouseX; - y = iMouseY; - - if(!mn -> check_xy(x,y)) return; - - if(mn -> change(x,y)){ - switch(iEvLineID){ - case MECHOS_LIST_MODE: - m = aScrDisp -> get_imatrix(mn -> curFunction); - iShopItem = (iListElement*)m; - aciInitAviID(); - aciInitShopAvi(); - mn -> flags &= ~FM_ACTIVE; - break; - case ITEMS_LIST_MODE: - p = aScrDisp -> get_iitem(mn -> curFunction); - iShopItem = (iListElement*)p; - aciInitAviID(); - aciInitShopAvi(); - mn -> flags &= ~FM_ACTIVE; - break; - case WEAPONS_LIST_MODE: - p = aScrDisp -> get_iitem(mn -> curFunction); - iShopItem = (iListElement*)p; - aciInitAviID(); - aciInitShopAvi(); - mn -> flags &= ~FM_ACTIVE; - break; - } - } - else { - if(iEvLineID == MECHOS_LIST_MODE || iEvLineID == MECHOS_MODE){ - id = ((invMatrix*)iShopItem) -> type; - if(id != mn -> curFunction){ - aciSetShopItem(mn -> curFunction); - iScrDisp -> end_event(); - } - } - else { - id = ((invItem*)iShopItem) -> ID; - if(id != mn -> curFunction){ - aciSetShopItem(mn -> curFunction); - iScrDisp -> end_event(); - } - } - aciInitAviID(); - aciInitShopAvi(); - if(itm == mn -> curItem) - mn -> flags &= ~FM_ACTIVE; - } -} - -#ifdef _ACI_CHECK_DIALOGS_ -int aciBadPhraseFlag = 0; -#endif - -//TODO need fast malloc and need rewrite! -void aciInitPanel(InfoPanel* p,unsigned char* str) -{ - int i = 0,quit_log = 0,sz = strlen((char*)str),str_len,len,col; - unsigned char* dest_str,*ptr,*tmp_ptr; - - dest_str = new unsigned char[sz + 1]; - ptr = new unsigned char[sz + 1]; - tmp_ptr = ptr; - - str_len = sz; - strcpy((char*)ptr,(char*)str); - col = (aciCurColorScheme[FM_SELECT_BORDER_COL] << 8) | aciCurColorScheme[FM_SELECT_BORDER_COL]; - - while(!quit_log){ - strcpy((char*)dest_str,(char*)tmp_ptr); - - if(p -> flags & IP_RANGE_FONT) - len = aStrLen32(dest_str,ACI_PHRASE_FONT,p->hSpace); - else - len = aStrLen(dest_str,ACI_PHRASE_FONT,p->hSpace); - if(len < p->SizeX){ - if(p -> items -> Size >= p -> MaxStr){ - std::cout<<"Dialog phrase too long..."<add_item((char*)dest_str,-1,col); - sz -= strlen((char*)dest_str); - strcpy((char*)ptr, (char*)str); - if(sz <= 0) { - quit_log = 1; - } else { - tmp_ptr = ptr + (str_len - sz); - } - } - } else { - i = sz; - while(dest_str[i] != ' '){ - i --; - if(i <= 0){ - quit_log = 1; - break; - } - } - if(!quit_log) - tmp_ptr[i] = 0; - } - } - - delete[] dest_str; - delete[] ptr; -} - -void aciStartSpeech(void) -{ - aciML_EventSeq* seq; - int i,unlock_id,prepare2_id,prepare_id,speech_id,end_id,end2_id,lock_id,speech_sz,dropLev = 0; - - InfoPanel* p = aScrDisp -> get_info_panel(ACI_ANSWER_PANEL); - if(!p) return; - - aciSpeechMode = dgMood; - -#ifdef _ACI_ESCAVE_DEBUG_ - if(aci_dgMoodNext != -1){ - aciSpeechMode = aci_dgMoodNext; - aci_dgMoodNext = -1; - } -#endif - unlock_id = AML_UNLOCK0_SEQ + aciSpeechMode; - prepare2_id = AML_PREPARE0_SEQ2 + aciSpeechMode; - prepare_id = AML_PREPARE0_SEQ + aciSpeechMode; - speech_id = AML_SPEECH0_SEQ + aciSpeechMode; - end_id = AML_END0_SEQ + aciSpeechMode; - end2_id = AML_END0_SEQ2 + aciSpeechMode; - lock_id = AML_LOCK0_SEQ + aciSpeechMode; - - speech_sz = p -> items -> Size; - - aciSpeechSeq -> size = 0; - - for(i = 0; i < AML_MAX_DROP_EVENT; i ++) - aciSpeechSeq -> dropLevel[i] = -1; - - if(aciSpeechBegLocked || !aciSpeechStarted){ - seq = aciML_D -> getEventSeq(unlock_id); - if(seq){ - aciSpeechSeq -> mergeSeq(seq); - aciSpeechSeq -> dropLevel[dropLev] = seq -> dropLevel[0]; - dropLev ++; - } - aciSpeechStarted = 1; - } - seq = aciML_D -> getEventSeq(prepare2_id); - if(seq){ - aciSpeechSeq -> mergeSeq(seq); - aciSpeechSeq -> dropLevel[dropLev] = seq -> dropLevel[0]; - dropLev ++; - } - seq = aciML_D -> getEventSeq(prepare_id); - if(seq){ - aciSpeechSeq -> mergeSeq(seq); - aciSpeechSeq -> dropLevel[dropLev] = seq -> dropLevel[0]; - dropLev ++; - } - seq = aciML_D -> getEventSeq(speech_id); - if(seq){ - for(i = 0; i < speech_sz; i ++) - aciSpeechSeq -> mergeSeq(seq); - } - - seq = aciML_D -> getEventSeq(end_id); - if(seq){ - aciSpeechSeq -> mergeSeq(seq); - aciSpeechSeq -> dropLevel[dropLev] = seq -> dropLevel[0]; - dropLev ++; - } - seq = aciML_D -> getEventSeq(end2_id); - if(seq){ - aciSpeechSeq -> mergeSeq(seq); - aciSpeechSeq -> dropLevel[dropLev] = seq -> dropLevel[0]; - dropLev ++; - } - if(aciSpeechEndLocked){ - seq = aciML_D -> getEventSeq(lock_id); - if(seq){ - aciSpeechSeq -> mergeSeq(seq); - aciSpeechSeq -> dropLevel[dropLev] = seq -> dropLevel[0]; - dropLev ++; - } - } - - aciSpeechSeq -> ChannelID = aciML_D -> curDataSet -> SpeechChannel; - aciML_D -> SeqList[0] -> putSeq(aciSpeechSeq); - - aciSpeechBegLocked = aciSpeechEndLocked; -} - -void aciNextPhrase(void) -{ - unsigned char* str; - iScreenObject* obj; - InfoPanel* p = aScrDisp -> get_info_panel(ACI_ANSWER_PANEL); - if(!p || !p -> iScreenOwner) return; - - if(aciEscaveDead){ - aciClearQuestMenu(); - obj = (iScreenObject*)p -> iScreenOwner -> owner; - p -> free_list(); - - str = (unsigned char*)dgD -> getQdead(); - if(str) aciInitPanel(p,str); - p -> set_redraw(); - return; - } - - if(!aciSpeechStarted && dgD -> isEnd()) - aciSpeechEndLocked = aciSpeechBegLocked = aciEndSpeech = 1; - - aciClearQuestMenu(); - obj = (iScreenObject*)p -> iScreenOwner -> owner; - - p -> free_list(); - - str = (unsigned char*)dgD -> getNextPhrase(); - - if(aciEndSpeech){ - if(!dgD -> isEnd()){ - aciEndSpeech = 0; - } - else { - p -> set_redraw(); - return; - } - } - - if(str) - aciInitPanel(p,str); - - aciSpeechEndLocked = dgD -> isEnd(); - - if(str && !aciEscaveEmpty) - aciStartSpeech(); - p -> set_redraw(); -} - -int aciCheckCredits(void) -{ - invItem* p; - invMatrix* m; - uvsActInt* u; - - int cr = aciGetCurCredits(); - - if(iEvLineID == MECHOS_MODE || iEvLineID == MECHOS_LIST_MODE){ - m = (invMatrix*)iShopItem; - u = (uvsActInt*)m -> uvsDataPtr; - - if(m -> flags & IM_NOT_COMPLETE) return 0; - } - - if(aScrDisp -> flags & AS_INV_MOVE_ITEM){ - if(aScrDisp -> curItem -> partData) return 1; - if(!((uvsActInt*)aScrDisp -> curItem -> uvsDataPtr) -> sell_price) return 0; - return 1; - } - - if(iEvLineID == EMPTY_MODE) - return 0; - - if(iEvLineID == MECHOS_MODE || iEvLineID == MECHOS_LIST_MODE){ - if(u -> price > cr + aciGetCurMatrixPrice()) return 0; - } - else { - p = (invItem*)iShopItem; - u = (uvsActInt*)p -> uvsDataPtr; - if(u -> price > cr) return 0; - } - return 1; -} - -int aciCheckItemCredits(void) -{ - int cr = aciGetCurCredits(); - if(aScrDisp -> flags & AS_INV_MOVE_ITEM){ - if(((uvsActInt*)aScrDisp -> curItem -> uvsDataPtr) -> price > cr) return 0; - return 1; - } - return 0; -} - -char* aciGetPrice(iListElement* p,int mode,int sell_mode) -{ - char* ptr; - invItem* it; - invMatrix* m; - uvsActInt* u; - - if(mode == MECHOS_MODE){ - m = (invMatrix*)p; - u = (uvsActInt*)m -> uvsDataPtr; - } - else { - it = (invItem*)p; - u = (uvsActInt*)it -> uvsDataPtr; - } - - aciXConv -> init(); - - if(!u){ - *aciXConv < aciSTR_UNDEFINED_PRICE; - return aciXConv -> address(); - } - - *aciXConv < aciSTR_PRICE; - - if(sell_mode) - *aciXConv <= u -> sell_price < " $"; - else - *aciXConv <= u -> price < " $"; - ptr = aciXConv -> address(); - - return ptr; -} - -void aciInitCurMatrixPtr(void) -{ - aScrDisp -> curMatrix -> uvsDataPtr = GGamerMechos; -} - -int aciGetCurMatrixPrice(void) -{ - int price = 0; - -// invItem* p; - uvsActInt* u; - - if(!aScrDisp -> curMatrix) return 0; - u = (uvsActInt*)aScrDisp -> curMatrix -> uvsDataPtr; - if(!u) ErrH.Abort("Bad CurMatrix..."); - price += u -> sell_price; -/* - p = (invItem*)aScrDisp -> curMatrix -> items -> last; - while(p){ - u = (uvsActInt*)p -> uvsDataPtr; - if(!u) ErrH.Abort("Bad CurMatrix item..."); - price += u -> price; - p = (invItem*)p -> prev; - } -*/ - return price; -} - -void aciBuildQuestList(void) -{ - int cd = 0; - char* p; - if(!aScrDisp -> qMenu) return; - - if(aciEscaveDead || aciEscaveEmpty) return; - - fncMenuItem* itm; - fncMenu* m; - - p = dgD -> findQfirst(); - if(!p) return; - - aScrDisp -> qMenu -> finit(); - aScrDisp -> qMenu -> init(); - - p = dgD -> getQprefix(); - if(p){ - m = new fncMenu; - m -> flags |= FM_RANGE_FONT; - itm = aScrDisp -> alloc_menu_item(); - itm -> init_name(p); - itm -> fnc_code = 0; - - itm -> font = ACI_PHRASE_FONT; - itm -> space = 1; - - itm -> init(); - m -> add_item(itm); - - aScrDisp -> qMenu -> add(m); - } - - p = dgD -> findQfirst(); - if(p){ - m = new fncMenu; - m -> flags |= FM_RANGE_FONT; - while(p){ - itm = aScrDisp -> alloc_menu_item(); - itm -> init_name(p); - itm -> fnc_code = cd; - - itm -> font = ACI_PHRASE_FONT; - itm -> space = 1; - - itm -> init(); - m -> add_item(itm); - - cd ++; - - p = dgD -> findQnext(); - } - aScrDisp -> qMenu -> add(m,1); - } - - p = dgD -> getQpostfix(); - if(p){ - m = new fncMenu; - m -> flags |= FM_RANGE_FONT; - itm = aScrDisp -> alloc_menu_item(); - itm -> init_name(p); - itm -> fnc_code = 0; - - itm -> font = ACI_PHRASE_FONT; - itm -> space = 1; - - itm -> init(); - m -> add_item(itm); - - aScrDisp -> qMenu -> add(m); - } - aScrDisp -> qMenu -> init_redraw(); - aScrDisp -> qMenu -> build(); - aScrDisp -> qMenu -> set_redraw(); -} - -void aciShowBlockPhrase(void) -{ - char* str; - InfoPanel* p = aScrDisp -> get_info_panel(ACI_ANSWER_PANEL); - if(!p) return; - - str = dgD -> getQblock(); - - if(str){ - p -> free_list(); - aciInitPanel(p,(unsigned char*)str); - p -> set_redraw(); - } -} - -void aciAskQuestion(void) -{ - char* str,*subj; - fncMenuSet* m = aScrDisp -> qMenu; - InfoPanel* p = aScrDisp -> get_info_panel(ACI_ANSWER_PANEL); - if(!p || !m) return; - - if(aciEscaveDead || aciEscaveEmpty) return; - - if(!(m -> flags & FMC_DATA_INIT)){ - str = dgD -> getQempty(); - } - else { - subj = m -> get(); - str = dgD -> getAnswer(subj); - } - - if(str){ - p -> free_list(); - aciInitPanel(p,(unsigned char*)str); - p -> set_redraw(); - } - aciStartSpeech(); -} - -void aciEscaveKickOut(void) -{ - char* str; - InfoPanel* p = aScrDisp -> get_info_panel(ACI_ANSWER_PANEL); - if(!p) return; - - str = dgD -> getQout(); - - if(str){ - p -> free_list(); - aciInitPanel(p,(unsigned char*)str); - p -> set_redraw(); - } - aciStartSpeech(); -} - -int aciCheckItemPickUp(actintItemData* p) -{ - invItem* itm = aScrDisp -> get_item(p -> type); - if((itm -> classID == AS_ITEM_CLASS && aciPickupItems) || (itm -> classID == AS_WEAPON_CLASS && aciPickupDevices)) - return 1; - return 0; -} - -void aciSet_aMouse(void) -{ - MouseSizeX = aMouseSizeX; - MouseSizeY = aMouseSizeY; - MouseSize = aMouseSize; - MouseFrames = aMouseFrames; -} - -void aciSet_iMouse(void) -{ - MouseSizeX = iMouseSizeX; - MouseSizeY = iMouseSizeY; - MouseSize = iMouseSize; - MouseFrames = iMouseFrames; -} - -void aciClearQuestMenu(void) -{ - fncMenuSet* m; - m = aScrDisp -> qMenu; - - if(m && m -> flags & FMC_DATA_INIT){ - m -> finit(); - m -> redraw(); - m -> redraw_owner(); - } -} - -void aciOfferEleech(void) -{ - int w_id = aScrDisp -> wMap -> world_ptr[aScrDisp -> curLocData -> WorldID] -> uvsID; - aciML_SendEvent(AML_KEY_TRAP,AML_KEY,AML_ELEECH_CODE); - WaitGameInTown(w_id); -} - -void aciWaitNextPeriod(void) -{ - int w_id = aScrDisp -> wMap -> world_ptr[aScrDisp -> curLocData -> WorldID] -> uvsID; - WaitGameInTown(w_id); -} - -void aciOfferWeezyk(void) -{ - aciML_SendEvent(AML_KEY_TRAP,AML_KEY,AML_ELEECH_CODE); -} - -void aciGetEleech(void) -{ - listElem* el; - uvsActInt* u; - invItem* p,*p1; - if(!GCharItem) return; - u = GCharItem; - - p = aScrDisp -> get_iitem(u -> type); - p1 = aScrDisp -> alloc_item(); - p -> clone(p1); - - if(aScrDisp -> flags & AS_INV_MOVE_ITEM){ - aScrDisp -> flags ^= AS_INV_MOVE_ITEM; - aciSell_Item(aScrDisp -> curItem); - aScrDisp -> curItem = NULL; - } - - aScrDisp -> flags |= AS_INV_MOVE_ITEM; - aScrDisp -> curItem = p1; - set_mouse_cursor(p1 -> frame,p1 -> ScreenSizeX,p1 -> ScreenSizeY); - - el = (listElem*)GGamer; - u -> link(el); - GGamer = (uvsActInt*)el; - p1 -> uvsDataPtr = u; - - GCharItem = NULL; -} - -char* aciGetItemLoad(invItem* p,int mode) -{ - char* ptr; - aciXConv -> init(); - - if(p -> pTemplate){ - switch(mode){ - case 0: - if(p -> flags & INV_ITEM_SHOW_ESCAVE){ - if(p -> item_ptr) - sprintf(aciXConv -> address(),p -> pTemplate,aciGetItemEscave(p -> item_ptr -> data1)); - } - else { - if(p -> item_ptr) - sprintf(aciXConv -> address(),p -> pTemplate,p -> item_ptr -> data1); - } - break; - case 1: - if(p -> flags & INV_ITEM_SHOW_ESCAVE){ - if(p -> uvsDataPtr) - sprintf(aciXConv -> address(),p -> pTemplate,aciGetItemEscave(((uvsActInt*)p -> uvsDataPtr) -> param2)); - } - else { - if(p -> uvsDataPtr) - sprintf(aciXConv -> address(),p -> pTemplate,((uvsActInt*)p -> uvsDataPtr) -> param2); - } - break; - } - } - ptr = aciXConv -> address(); - - return ptr; -} - -void aciAddTeleportMenuItem(int id,int fnc_id) -{ - const char* ptr; - fncMenu* mn; - fncMenuItem* itm; - invMatrix* m; - - mn = aScrDisp -> get_menu(FMENU_TELEPORT_MENU); - if(!mn) return; - - if(id == -1){ - if (lang() == RUSSIAN) { - if (strcmp(aci_curLocationName, (char*)eCmpPodish) == 0) ptr = rCmpPodish; - else if (strcmp(aci_curLocationName, (char*)eCmpVigBoo) == 0) ptr = rCmpVigBoo; - else if (strcmp(aci_curLocationName, (char*)eCmpZeePa) == 0) ptr = rCmpZeePa; - } - else ptr = aci_curLocationName; - } - else { - m = aScrDisp -> get_matrix(id); - ptr = m -> mech_name; - } - - itm = aScrDisp -> alloc_menu_item(); - itm -> init_name(ptr); - itm -> font = FMENU_TARGETS_FONT; - itm -> space = FMENU_TARGETS_SPACE; - itm -> fnc_code = fnc_id; - itm -> flags |= FM_RANGE_FONT; - itm -> init(); - mn -> add_item(itm); - mn -> init_objects(); - - if(mn -> flags & FM_ACTIVE && aScrDisp -> curMode == AS_INFO_MODE) - mn -> set_redraw(); -} - -void aciDeleteTeleportMenuItem(int fnc_id) -{ - fncMenu* m = aScrDisp -> get_menu(FMENU_TELEPORT_MENU); - if(!m) return; - - m -> deactivate_item(fnc_id); - - if(m -> flags & FM_ACTIVE && aScrDisp -> curMode == AS_INFO_MODE) - m -> set_redraw(); -} - -void aciAdd2Targets(char* p) -{ - char* ptr; - - fncMenu* mn; - fncMenuItem* itm; - - mn = aScrDisp -> get_menu(FMENU_TARGETS_MENU); - if(!mn) return; - - itm = aScrDisp -> alloc_menu_item(); - itm -> init_name(p); - itm -> font = FMENU_TARGETS_FONT; - itm -> space = FMENU_TARGETS_SPACE; - itm -> fnc_code = FMENU_OFF; - itm -> init(); - mn -> add_item(itm); - - // rebuild... - ptr = GetCompasTarget(); - - if(ptr) - mn -> curItem = mn -> get_obj(ptr); - else - mn -> curItem = mn -> get_obj(aciSTR_OFF); - - mn -> firstItem = mn -> curItem; - mn -> init_objects(); - - if(mn -> flags & FM_ACTIVE && aScrDisp -> curMode == AS_INFO_MODE) - mn -> set_redraw(); -} - -void aciRefreshTargetsMenu(void) -{ - char* ptr; - fncMenu* mn; - - mn = aScrDisp -> get_menu(FMENU_TARGETS_MENU); - if(!mn) return; - - ptr = GetCompasTarget(); - - if(ptr) - mn -> curItem = mn -> get_obj(ptr); - else - mn -> curItem = mn -> get_obj(aciSTR_OFF); - - mn -> init_objects(); - - if(mn -> flags & FM_ACTIVE && aScrDisp -> curMode == AS_INFO_MODE) - mn -> set_redraw(); -} - -void aciDeleteFromTargets(char* p) -{ - char* ptr; - fncMenu* mn; - fncMenuItem* itm; - - mn = aScrDisp -> get_menu(FMENU_TARGETS_MENU); - if(!mn) return; - - itm = mn -> get_obj(p); - - if(itm == mn -> curItem) - SelectCompasTarget(NULL); - - if(itm){ - mn -> delete_obj(itm); - aScrDisp -> free_menu_item(itm); - } - - // rebuild... - ptr = GetCompasTarget(); - - if(ptr) - mn -> curItem = mn -> get_obj(ptr); - else - mn -> curItem = mn -> get_obj(aciSTR_OFF); - - mn -> firstItem = mn -> curItem; - mn -> init_objects(); - - if(mn -> flags & FM_ACTIVE && aScrDisp -> curMode == AS_INFO_MODE) - mn -> set_redraw(); -} - -void aciChangeAviIndex(void) -{ - switch(aciCurAviIndex){ - case ACI_PICTURE_AVI_ENG: - aciCurAviIndex = (lang() == RUSSIAN) ? ACI_TEXT_AVI_RUS : ACI_TEXT_AVI_ENG; - break; - case ACI_TEXT_AVI_RUS: - case ACI_TEXT_AVI_ENG: - aciCurAviIndex = ACI_PICTURE_AVI_ENG; - break; - } - aciInitAviID(); -} - -void aciShowCamerasMenu(int x,int y,int sx,int sy) -{ - aciBitmapMenu* p = aScrDisp -> get_bmenu(BMENU_CAMERAS_MENU); - if(!p) return; - - if(p -> activeCount){ - p -> curCount --; - if(p -> curCount <= 0){ - p -> go2upmenu(); - return; - } - } - p -> redraw(x,y,sx,sy); -} - -void aciHandleCameraEvent(int code,int data) -{ - aciBitmapMenu* m; - aciBitmapMenuItem* p; - switch(code){ - case BMENU_ITEM_ROT: - camera_rotate_enable = data; - iScrOpt[iCAMERA_TURN]->SetValueINT(data); - if(RAM16 && data){ - camera_moving_xy_enable = camera_moving_z_enable = 0; - camera_slope_enable = 0; - } - break; - case BMENU_ITEM_ZOOM: - camera_moving_xy_enable = camera_moving_z_enable = data; - iScrOpt[iCAMERA_SCALE]->SetValueINT(data); - if(RAM16 && data){ - camera_rotate_enable = 0; - camera_slope_enable = 0; - } - break; - case BMENU_ITEM_PERSP: - camera_slope_enable = data; - iScrOpt[iCAMERA_SLOPE]->SetValueINT(data); - if(RAM16 && data){ - camera_moving_xy_enable = camera_moving_z_enable = 0; - camera_rotate_enable = 0; - } - break; - } - if(RAM16 && data){ - m = aScrDisp -> get_bmenu(BMENU_CAMERAS_MENU); - if(m){ - p = (aciBitmapMenuItem*)m -> items -> last; - while(p){ - if(p -> ID != code) p -> curState = 0; - p = (aciBitmapMenuItem*)p -> prev; - } - } - } - iSaveData(); - -} - -void aciSetCameraMenu(void) -{ - aciBitmapMenu* m; - aciBitmapMenuItem* p; - - m = aScrDisp -> get_bmenu(BMENU_CAMERAS_MENU); - if(m){ - p = (aciBitmapMenuItem*)m -> items -> last; - while(p){ - switch(p -> ID){ - case BMENU_ITEM_ROT: - p -> curState = camera_rotate_enable; - iScrOpt[iCAMERA_TURN]->SetValueINT(camera_rotate_enable); - break; - case BMENU_ITEM_ZOOM: - p -> curState = camera_moving_xy_enable; - iScrOpt[iCAMERA_SCALE]->SetValueINT(camera_moving_xy_enable); - break; - case BMENU_ITEM_PERSP: - p -> curState = camera_slope_enable; - iScrOpt[iCAMERA_SLOPE]->SetValueINT(camera_slope_enable); - break; - } - p = (aciBitmapMenuItem*)p -> prev; - } - } - m -> flags |= BM_REBUILD; - iSaveData(); -} - -void aciPay4Item(invItem* p) -{ - int cr = aciGetCurCredits(); - uvsActInt* u = (uvsActInt*)p -> uvsDataPtr; - cr -= u -> price; - aciUpdateCurCredits(cr); - p -> flags &= ~INV_ITEM_NO_PAY; -} - -void aciHandleSubmenuEvent(int id,fncMenuItem* p) -{ - if(p -> eventPtr){ - aci_SendEvent(p -> eventPtr -> code,p -> eventPtr -> data); - return; - } - switch(id){ - case FMENU_TARGETS_MENU: - if(strcmp(p -> name,aciSTR_OFF)){ - SelectCompasTarget(p -> name); - } - else { - SelectCompasTarget(NULL); - } - break; - case FMENU_TELEPORT_MENU: - aciTeleportEvent = p -> fnc_code; - break; - } -} - -int aciGetCurCycle(void) -{ -#ifdef _ACI_ESCAVE_DEBUG_ - return 1; -#else - return uvsCurrentCycle; -#endif -} - -#ifdef _DEBUG -void aciChangeMouseItem(void) -{ - invItem* temp_item; - - if(aScrDisp -> flags & AS_ISCREEN){ - temp_item = aScrDisp -> get_iitem(aScrDisp -> curItem -> ID + 1); - } - else { - temp_item = aScrDisp -> get_item(aScrDisp -> curItem -> ID + 1); - } - if(!temp_item){ - if(aScrDisp -> flags & AS_ISCREEN){ - temp_item = aScrDisp -> get_iitem(1); - } - else { - temp_item = aScrDisp -> get_item(1); - } - } - temp_item -> clone(aScrDisp -> curItem); - set_mouse_cursor(aScrDisp -> curItem -> frame,aScrDisp -> curItem -> ScreenSizeX,aScrDisp -> curItem -> ScreenSizeY); -} -#endif - -void aciInitMechosInfo(invMatrix* p,InfoPanel* ip) -{ - ip -> free_list(); - if(p){ - ip -> add_item(p -> mech_name,-1,aciCurColorScheme[FM_SELECT_COL]); - if(!uvsCurrentWorldUnable){ - if(GMechos) - ip -> add_item(aciGetPrice((iListElement*)p,MECHOS_MODE,1)); - } - ip -> set_redraw(); - } -} - -int aciCheckSlot(void) -{ - if(!aScrDisp -> curMatrix) return 0; - return aScrDisp -> curMatrix -> check_slot(AS_DEVICE_SLOT); -} - -void aciSaveData(void) -{ - acsSaveData(); -} - -void aciLoadData(void) -{ - acsLoadData(); -} - -void aciPackFile(char* fname) -{ - int sz, sz1; - char* p, *p1; - - XStream fh(fname,XS_IN); - - sz1 = sz = fh.size(); - sz1+=12; - p = new char[sz]; - p1 = new char[sz1]; - fh.read(p,sz); - fh.close(); - - //sz1 = ZIP_compress(p1,sz,p,sz); - /* ZLIB realization (stalkerg)*/ - p1[0] = (char)(8 & 0xFF); //8 it is DEFLATE method - p1[1] = (char)((8 >> 8) & 0xFF); - *(unsigned int*)(p1 + 2) = (unsigned int)sz; - sz1-=2+4; - int stat = compress((Bytef*)(p1+2+4),(uLongf*)&(sz1),(Bytef*)p,sz); - sz1+=2+4; - switch(stat){ - //case Z_OK: std::cout<<"Compress ok."< " <= i < "..."; - } - - aMemStatFile < "\r\n\r\n ---------------------------------------- \r\n"; -} -#endif - -void ibsout(int x,int y,void* ptr, uint8_t *renderBuffer) -{ - int _x,_y,cnt; - int* offs_table = XGR_Obj.yOffsTable; - - unsigned char* vbuf = renderBuffer == NULL ? XGR_VIDEOBUF : renderBuffer; - unsigned char* pbuf = (unsigned char*)ptr; - - cnt = *((int*)pbuf); - pbuf += 4; - while(cnt){ - _x = *((int*)pbuf); - pbuf += 4; - _y = *((int*)pbuf); - pbuf += 4; - - memcpy(vbuf + offs_table[_y + y] + _x + x,pbuf,cnt); - pbuf += cnt; - - cnt = *((int*)pbuf); - pbuf += 4; - } -} - -void ibsout(int x,int y,void* ptr) -{ - ibsout(x, y, ptr, NULL); -} - -void aciPrepareMenus(void) -{ - - aScrDisp -> clean_menus(); - aScrDisp -> prepare_menus(); - aciPrepareWorldsMenu(); -} - -void aciPrepareWorldsMenu(void) -{ - int i; - aciWorldInfo* p1; - if(CurrentWorld == -1) return; - fncMenu* p = aScrDisp -> get_menu(FMENU_WORLDS_MENU); - if(p){ - p -> prepare_items(); - for(i = 0; i < AS_MAX_WORLD; i ++){ - if(!aScrDisp -> wMap -> world_key(i)){ - p -> deactivate_item(1000 + i); - } - } - if(aScrDisp -> flags & AS_WORLDS_INIT){ - p1 = (aciWorldInfo*)aScrDisp -> wMap -> world_list -> last; - while(p1){ - if(p1 -> uvsID == CurrentWorld) p -> deactivate_item(1000 + p1 -> ID); - p1 = (aciWorldInfo*)p1 -> prev; - } - } - } -} - -void aciChangeWorld(int w_id) -{ - int i,cur_id,fl = 0; - aciWorldInfo* p,*p1; - - if(w_id == -1) return; - cur_id = aScrDisp -> wMap -> world_ids[w_id]; - if(cur_id == -1) return; - - p = aScrDisp -> wMap -> world_ptr[cur_id]; - if(!p) return; - - for(i = 0; i < AS_MAX_WORLD; i ++){ - p1 = aScrDisp -> wMap -> world_ptr[i]; - if(p1){ - if(p1 -> flags & AS_ACCESSIBLE_WORLD){ - p1 -> flags &= ~AS_ACCESSIBLE_WORLD; - fl = 1; - } - if(p1 -> flags & AS_CURRENT_WORLD){ - p1 -> flags &= ~AS_CURRENT_WORLD; - p1 -> flags |= AS_VISIBLE_WORLD; - } - } - } - if(fl){ - for(i = 0; i < AS_MAX_WORLD; i ++){ - p1 = aScrDisp -> wMap -> world_ptr[i]; - if(i != cur_id && p1){ - if(p1 -> links[cur_id] || p -> links[i]){ - p1 -> flags |= AS_ACCESSIBLE_WORLD; - } - } - } - } - p -> flags |= AS_CURRENT_WORLD; - aScrDisp -> wMap -> flags |= WMAP_REBUILD_PIC; -} - -void aciInitShopButtons(void) -{ - iScreenObject* obj; - iScreenElement* p,*p1,*p2,*p3,*p4; - - fncMenu* mn = aScrDisp -> get_imenu(SHOP_ITEMS_MENU_ID); - - p = NULL; - p1 = (iScreenElement*)aScrDisp -> curLocData -> objList[ACI_WEAPONS_BUTTON_ID]; - p2 = (iScreenElement*)aScrDisp -> curLocData -> objList[ACI_MECHOS_BUTTON_ID]; - p3 = (iScreenElement*)aScrDisp -> curLocData -> objList[ACI_ITEMS_BUTTON_ID]; - p4 = (iScreenElement*)aScrDisp -> curLocData -> objList[ACI_MENU_BUTTON_ID]; - - if(p1){ - obj = (iScreenObject*)p1 -> owner; - p1 -> change_terrainNum(aScrDisp -> curLocData -> numIndex[ACI_BUTTON_OFF_TYPE]); - obj -> flags |= OBJ_MUST_REDRAW; - } - if(p2){ - obj = (iScreenObject*)p2 -> owner; - p2 -> change_terrainNum(aScrDisp -> curLocData -> numIndex[ACI_BUTTON_OFF_TYPE]); - obj -> flags |= OBJ_MUST_REDRAW; - } - if(p3){ - obj = (iScreenObject*)p3 -> owner; - p3 -> change_terrainNum(aScrDisp -> curLocData -> numIndex[ACI_BUTTON_OFF_TYPE]); - obj -> flags |= OBJ_MUST_REDRAW; - } - if(p4){ - obj = (iScreenObject*)p4 -> owner; - obj -> flags |= OBJ_MUST_REDRAW; - - if(mn && mn -> flags & FM_ACTIVE) - p4 -> change_terrainNum(aScrDisp -> curLocData -> numIndex[ACI_BUTTON_ON_TYPE]); - else - p4 -> change_terrainNum(aScrDisp -> curLocData -> numIndex[ACI_BUTTON_OFF_TYPE]); - } - - switch(iEvLineID){ - case MECHOS_MODE: - case MECHOS_LIST_MODE: - case CHANGE_2_MECHOS_MODE: - p = p2; - break; - case WEAPONS_MODE: - case WEAPONS_LIST_MODE: - case CHANGE_2_WEAPONS_MODE: - p = p1; - break; - case ITEMS_MODE: - case ITEMS_LIST_MODE: - case CHANGE_2_ITEMS_MODE: - p = p3; - break; - } - if(p){ - p -> change_terrainNum(aScrDisp -> curLocData -> numIndex[ACI_BUTTON_ON_TYPE]); - } -} - -void mem_rectangle(int x,int y,int sx,int sy,int bsx,int col_in,int col_out,int mode,void* buf) -{ - int i,index,_sx,_sy; - unsigned char* p = (unsigned char*)buf; - - index = x + y * bsx; - memset(p + index,col_out,sx); - for(i = 0; i < sy; i ++){ - p[index] = p[index + sx - 1] = col_out; - index += bsx; - } - memset(p + index - bsx,col_out,sx); - - if(mode){ - _sx = sx - 2; - _sy = sy - 2; - - if(_sx <= 0 || _sy <= 0) return; - index = (x + 1) + (y + 1) * bsx; - for(i = 0; i < _sy; i ++){ - memset(p + index,col_in,_sx); - index += bsx; - } - } -} - -void aciGetItemCoords(actintItemData* p,int& x,int& y) -{ - invItem* itm = (invItem*)p -> actintOwner; - - x = itm -> MatrixX; - y = itm -> MatrixY; -} - -void aciGetItemCoords(int id,int& x,int& y) -{ - invItem* itm; - if(!aScrDisp -> curMatrix) return; - itm = (invItem*)aScrDisp -> curMatrix -> items -> last; - - while(itm){ - if(itm -> ID == id){ - x = itm -> MatrixX; - y = itm -> MatrixY; - return; - } - itm = (invItem*)itm -> prev; - } -} - -int aciPutItem(int id,int x,int y) -{ - invItem* p,*p1; - if(aScrDisp -> flags & AS_ISCREEN) - p1 = aScrDisp -> get_iitem(id); - else - p1 = aScrDisp -> get_item(id); - - if(!p1) ErrH.Abort("Bad aciPutItem() argument..."); - p = aScrDisp -> alloc_item(); - - p1 -> clone(p); - p -> item_ptr = NULL; - - if(aScrDisp -> curMatrix){ - if(x != -1){ - if(!aScrDisp -> put_item_xy(p,x,y,0)){ - aScrDisp -> free_item(p); - return 0; - } - } - else { - if(!aScrDisp -> put_item_auto(p)){ - aScrDisp -> free_item(p); - return 0; - } - } - return 1; - } - aScrDisp->free_item(p); - return 0; -} - -void aciRemoveItem(actintItemData* d) -{ - aScrDisp -> remove_item(d); -} - -void aciNewMechos(int newID) -{ - if(aScrDisp -> curMatrix) - aScrDisp -> free_matrix(aScrDisp -> curMatrix); - - if(newID != -1) - aScrDisp -> curMatrix = aScrDisp -> alloc_matrix(newID); - else - aScrDisp -> curMatrix = NULL; -} - -void aciPromptData::free_mem(void) -{ - int i; - if(StrBuf){ - for(i = 0; i < NumStr; i ++){ - if(StrBuf[i]) - delete[] StrBuf[i]; - } - delete[] StrBuf; - } - if(TimeBuf) { - delete[] TimeBuf; - } - if(PosX) { - delete[] PosX; - } - if(PosY) { - delete[] PosY; - } - if(ColBuf) { - delete[] ColBuf; - } - - StrBuf = NULL; - TimeBuf = NULL; - - PosX = NULL; - PosY = NULL; - - ColBuf = NULL; - - NumStr = 0; - fontID = -1; -} - -aciPromptData::~aciPromptData(void) -{ - free_mem(); -} - -aciPromptData::aciPromptData(int size) -{ - NumStr = 0; - StrBuf = NULL; - TimeBuf = NULL; - PosX = NULL; - PosY = NULL; - ColBuf = NULL; - align_type = ACI_PROMPT_UP; - CurTimer = 0; - fontID = -1; - - alloc_mem(size); -} - -void aciPromptData::alloc_mem(int size) -{ - int i; - NumStr = size; - StrBuf = new unsigned char*[size]; - TimeBuf = new int[size]; - PosX = new int[size]; - PosY = new int[size]; - ColBuf = new unsigned int[size]; - for(i = 0; i < size; i ++){ - StrBuf[i] = NULL; - TimeBuf[i] = 0; - ColBuf[i] = 0; - } - fontID = -1; -} - -void aciPromptData::copy_data(aciPromptData* src) -{ - int i,sz; - free_mem(); - alloc_mem(src -> NumStr); - - align_type = src -> align_type; - - if(src -> StrBuf){ - for(i = 0; i < NumStr; i ++){ - if(src -> StrBuf[i]){ - sz = strlen((char*)src -> StrBuf[i]) + 1; - StrBuf[i] = new unsigned char[sz]; - strcpy((char*)StrBuf[i],(char*)src -> StrBuf[i]); - TimeBuf[i] = src -> TimeBuf[i]; - ColBuf[i] = src -> ColBuf[i]; - } - } - } - CurTimer = 0; -} - -#define ACI_PROMPT_OFFSET 50 - -#define ACI_PROMPT_FONT 7 -#define ACI_PROMPT_COLOR 175 - -#define ACI_PROMPT_DELTA_X 1 -#define ACI_PROMPT_DELTA_Y 1 -void aciPromptData::redraw(int scr_x,int scr_y,int scr_sx,int scr_sy) -{ - int i,x,y,sy = 0,sx,sz; - if(!StrBuf) return; - - int font = ACI_PROMPT_FONT; - - if(!(aScrDisp -> flags & AS_FULLSCR)){ - font = aScrDisp -> curIbs -> fontID; - } - if(fontID != -1) font = fontID; - - if(align_type == ACI_PROMPT_CENTER){ - for(i = 0; i < NumStr; i ++){ - if(StrBuf[i]){ - sy += aScrFonts[font] -> SizeY + ACI_PROMPT_DELTA_Y; - } - } - y = scr_y + (scr_sy - sy) / 2; - } - else - y = scr_y + ACI_PROMPT_OFFSET; - - for(i = 0; i < NumStr; i ++){ - if(StrBuf[i]){ - sx = aStrLen(StrBuf[i],font,ACI_PROMPT_DELTA_X); - x = scr_x + (scr_sx - sx) / 2; - PosX[i] = x; - PosY[i] = y; - -// if(x < 0) ErrH.Abort("Prompt string out of screen..."); - while(x < 0){ - sz = strlen((char*)StrBuf[i]) - 1; - StrBuf[i][sz] = 0; - sx = aStrLen(StrBuf[i],font,ACI_PROMPT_DELTA_X); - x = scr_x + (scr_sx - sx) / 2; - PosX[i] = x; - PosY[i] = y; - } - - y += aScrFonts[font] -> SizeY + ACI_PROMPT_DELTA_Y; - } - } - aWriteHelpString(NumStr,PosX,PosY,font,StrBuf,CurTimer,ACI_PROMPT_COLOR,1,ColBuf); -} - -void aciPromptData::add_str(int num,unsigned char* p) -{ - int sz; - if(StrBuf[num]) delete[] StrBuf[num]; - sz = strlen((char*)p) + 1; - StrBuf[num] = new unsigned char[sz]; - strcpy((char*)StrBuf[num],(char*)p); -} - -void aciPromptData::quant(void) -{ - int i,sz = 0; - - if(!NumStr) return; - - if (NetworkON) { - CurTimer += 2; - } else { - CurTimer ++; - } - for(i = 0; i < NumStr; i ++){ - if(StrBuf[i]){ - if(CurTimer > TimeBuf[i]){ - delete[] StrBuf[i]; - StrBuf[i] = NULL; - } - else - sz ++; - } - } - if(!sz) free_mem(); -} - -void aciSendPrompt(aciPromptData* p) -{ - aScrDisp -> curPrompt -> copy_data(p); - aScrDisp -> curPrompt -> CurTimer = 0; -} - -void aciActivateItemFunction(int itemID,int fncID) -{ - fncMenu* m = NULL; - invItem* p = aScrDisp -> get_item(itemID); - if(p && p -> menu){ - m = (fncMenu*)p -> menu; - m -> activate_item(fncID + 2000); - } - - if(m && m -> flags & FM_ACTIVE && aScrDisp -> curMode == AS_INFO_MODE) - m -> set_redraw(); -} - -void aciDeactivateItemFunction(int itemID,int fncID) -{ - fncMenu* m = NULL; - invItem* p = aScrDisp -> get_item(itemID); - if(p && p -> menu){ - m = (fncMenu*)p -> menu; - m -> deactivate_item(fncID + 2000); - } - - if(m && m -> flags & FM_ACTIVE && aScrDisp -> curMode == AS_INFO_MODE) - m -> set_redraw(); -} - -int acsQuant(void) -{ - int ret,k,firstQuant = 0; - if(!acsAllocFlag){ - acsAllocFlag = 1; - if(NetworkON) aciKeyboardLocked = 1; - acsScrD -> curScrID = acsScreenID; - acsScrD -> QuantCode = 0; - XGR_MouseObj.DisablePrompt(); - XGR_MouseShow(); - acsScrD -> alloc_mem(); - - if (!(aScrDisp -> flags & AS_ISCREEN)) { acsScrD -> curScr -> ChangeCoords((XGR_MAXX - 640)/2, (XGR_MAXY - 480)/2); } - - EffectsOff(); - firstQuant = 1; - if(acsScrD -> curScrID >= 3){ - aciCloseGate(); - acsScrD -> Quant(0); - aciOpenGate(); - } - KeyBuf -> clear(); - } - while(KeyBuf->size){ - SDL_Event *e = KeyBuf->get(); - if (e->type == SDL_KEYDOWN) { - k = sdlEventToCode(e); - } - if (e->type == SDL_KEYDOWN || e->type == SDL_TEXTINPUT) { - acsScrD->KeyTrap(0, e); - if (e->key.keysym.scancode == SDL_SCANCODE_ESCAPE && !acsScrD -> QuantCode) { - acsScrD -> QuantCode = 1; - } - } - - } - if(aScrDisp -> flags & aMS_MOVED){ - acsScrD -> KeyTrap(iMOUSE_MOVE_CODE, nullptr); - aScrDisp -> flags ^= aMS_MOVED; - if(aciMouseFlagL){ - acsScrD -> KeyTrap(iMOUSE_LEFT_MOVE, nullptr); - } - if(aciMouseFlagR){ - acsScrD -> KeyTrap(iMOUSE_RIGHT_MOVE, nullptr); - } - } - if(aScrDisp -> flags & aMS_LEFT_PRESS){ - acsScrD -> KeyTrap(iMOUSE_LEFT_PRESS_CODE, nullptr); - aScrDisp -> flags ^= aMS_LEFT_PRESS; - } - if(aScrDisp -> flags & aMS_RIGHT_PRESS){ - acsScrD -> KeyTrap(iMOUSE_RIGHT_PRESS_CODE, nullptr); - aScrDisp -> flags ^= aMS_RIGHT_PRESS; - } - if(NetworkON){ - acsScrD -> flags |= ACS_FORCED_REDRAW; - ret = acsScrD -> Quant(actIntLog); - } - else - ret = acsScrD -> Quant(); - - if(firstQuant){ - acsPrepareSlotNameInput(acsCurrentSlotID,acsCurrentSlotNum); - acsScrD -> PrepareInput(acsCurrentSlotID); - } - if(ret){ - acsAllocFlag = 0; - if (!(aScrDisp -> flags & AS_ISCREEN)) { acsScrD -> curScr -> ChangeCoords(-(XGR_MAXX - 640)/2, -(XGR_MAXY - 480)/2); } - acsScrD -> free_mem(); - if(aScrDisp -> flags & AS_FULLSCR && !(aScrDisp -> flags & AS_ISCREEN)){ - XGR_MouseHide(); - } - else - aScrDisp -> flags &= ~AS_FULL_REDRAW; - - iScrDisp -> flags &= ~MS_LEFT_PRESS; - iScrDisp -> flags &= ~MS_RIGHT_PRESS; - iScrDisp -> flags &= ~MS_MOVED; - iHandleExtEvent(iEXT_UPDATE_TUTORIAL_MODE); - iHandleExtEvent(iEXT_UPDATE_SOUND_MODE); - iHandleExtEvent(iEXT_UPDATE_SOUND_VOLUME); - - if(NetworkON) aciKeyboardLocked = 0; - - acsScreenID = 1; - iSaveData(); - KeyBuf -> clear(); - return 1; - } - return 0; -} - -void acsHandleExtEvent(int code,int data0,int data1,int data2) -{ - int val,max_val,i_val,i_max_val; - switch(code){ - case ACS_GLOBAL_EXIT: - if(!(aScrDisp -> flags & AS_ISCREEN)) - GameQuantReturnValue = RTO_LOADING3_ID; - else { - iScrDisp -> flags |= SD_EXIT; - iScrExitCode = 1; - iAbortGameFlag = 1; - } - if(NetworkON) iMultiFlag = 1; - acsScrD -> QuantCode = 1; // resume game pause - if(!GameOverID) - GameOverID = GAME_OVER_ABORT; - break; - case ACS_INIT_TUTORIAL_MODE: - acsSetStrState(ACS_TUTORIAL_MODE,!iGetOptionValue(iTUTORIAL_ON)); - break; - case ACS_SET_TUTORIAL_MODE: - iSetOptionValue(iTUTORIAL_ON,!acsGetStrState(ACS_TUTORIAL_MODE)); - iHandleExtEvent(iEXT_UPDATE_TUTORIAL_MODE); - break; - case ACS_SET_AUTORUN_MODE: - aciAutoRun = acsGetStrState(ACS_AUTORUN_MODE); - iScrOpt[iAUTO_ACCELERATION]->SetValueINT(acsGetStrState(ACS_AUTORUN_MODE)); - break; - case ACS_SET_SOUND_MODE: - iSetOptionValue(iSOUND_ON,!acsGetStrState(ACS_SOUND_MODE)); - iHandleExtEvent(iEXT_UPDATE_SOUND_MODE); - break; - case ACS_SET_MUSIC_MODE: - iSetOptionValue(iMUSIC_ON,!acsGetStrState(ACS_MUSIC_MODE)); - iHandleExtEvent(iEXT_UPDATE_MUSIC_MODE); - break; - case ACS_INIT_AUTORUN_MODE: -// acsSetStrState(ACS_AUTORUN_MODE,aciAutoRun); - aciAutoRun = iGetOptionValue(iAUTO_ACCELERATION); - acsSetStrState(ACS_AUTORUN_MODE,iGetOptionValue(iAUTO_ACCELERATION)); - break; - case ACS_INIT_SOUND_MODE: - acsSetStrState(ACS_SOUND_MODE,!iGetOptionValue(iSOUND_ON)); - break; - case ACS_INIT_SOUND_VOLUME: - acsScrD -> SetScroller(ACS_SOUND_VOLUME,iGetOptionValue(iSOUND_VOLUME_CUR),iGetOptionValue(iSOUND_VOLUME_MAX)); - break; - case ACS_SET_SOUND_VOLUME: - val = acsScrD -> GetObjectValue(ACS_SOUND_VOLUME); - max_val = acsScrD -> GetObjectValue(ACS_SOUND_VOLUME,1); - i_max_val = iGetOptionValue(iSOUND_VOLUME_MAX); - i_val = (val * i_max_val) / max_val; - iSetOptionValue(iSOUND_VOLUME_CUR,i_val); - iHandleExtEvent(iEXT_UPDATE_SOUND_VOLUME); - break; - case ACS_INIT_MUSIC_MODE: - acsSetStrState(ACS_MUSIC_MODE,!iGetOptionValue(iMUSIC_ON)); - break; - case ACS_INIT_MUSIC_VOLUME: - acsScrD -> SetScroller(ACS_MUSIC_VOLUME,iGetOptionValue(iMUSIC_VOLUME_CUR),iGetOptionValue(iMUSIC_VOLUME_MAX)); - break; - case ACS_SET_MUSIC_VOLUME: - val = acsScrD -> GetObjectValue(ACS_MUSIC_VOLUME); - max_val = acsScrD -> GetObjectValue(ACS_MUSIC_VOLUME,1); - i_max_val = iGetOptionValue(iMUSIC_VOLUME_MAX); - i_val = (val * i_max_val) / max_val; - iSetOptionValue(iMUSIC_VOLUME_CUR,i_val); - iHandleExtEvent(iEXT_UPDATE_MUSIC_VOLUME); - break; - case ACS_CHANGE_MUSIC_MODE: - acsChangeStrState(ACS_MUSIC_MODE); - iSetOptionValue(iMUSIC_ON,!acsGetStrState(ACS_MUSIC_MODE)); - iHandleExtEvent(iEXT_UPDATE_MUSIC_MODE); - break; - case ACS_CHANGE_AUTORUN_MODE: - acsChangeStrState(ACS_AUTORUN_MODE); - aciAutoRun = acsGetStrState(ACS_AUTORUN_MODE); - iScrOpt[iAUTO_ACCELERATION]->SetValueINT(acsGetStrState(ACS_AUTORUN_MODE)); - break; - case ACS_CHANGE_SOUND_MODE: - acsChangeStrState(ACS_SOUND_MODE); - iSetOptionValue(iSOUND_ON,!acsGetStrState(ACS_SOUND_MODE)); - iHandleExtEvent(iEXT_UPDATE_SOUND_MODE); - break; - case ACS_CHANGE_TUTORIAL_MODE: - acsChangeStrState(ACS_TUTORIAL_MODE); - iSetOptionValue(iTUTORIAL_ON,!acsGetStrState(ACS_TUTORIAL_MODE)); - iHandleExtEvent(iEXT_UPDATE_TUTORIAL_MODE); - break; - case ACS_INIT_SLOT_NAME: - acsPrepareSlotName(data0,data1); - break; - case ACS_INIT_SLOT_NAME_INPUT: - acsPrepareSlotNameInput(data0,data1); - break; - case ACS_SAVE_GAME: - acsSaveData(); - break; - } -} - -void aciFreeAll(void) -{ - delete aScrDisp; - aScrDisp = NULL; - delete acsScrD; - acsScrD = NULL; - free_cell_frame(); - - if(aIndArrowBML) - delete aIndArrowBML; - if(aIndDataBML) - delete aIndDataBML; - if(aIndBackBML) - delete aIndBackBML; - - aIndArrowBML = NULL; - aIndDataBML = NULL; - aIndBackBML = NULL; - - aciLoadLog = 0; -} - -void acsPrepareSlotName(int id,int slot_num) -{ - int len,time_len; - XBuffer XBuf; - XStream fh(0); - - aciScreenInputField* p = (aciScreenInputField*)acsScrD -> GetObject(id); - if(!p) return; - - XBuf.init(); - XBuf < "savegame/save"; - if(slot_num < 10) XBuf < "0"; - XBuf <= slot_num < ".dat"; - - if(fh.open(XBuf.address(),XS_IN)){ - fh > len; - - time_len = (len >> 16) & 0xFF; - len &= 0xFF; - - memset(p -> string,0,p -> MaxStrLen + 2); - fh.read(p -> string,len); - fh.close(); - } - else - strcpy(p -> string,aciSTR_EMPTY_SLOT); -} - -void acsPrepareSlotNameInput(int id,int slot_num) -{ - int sz; - aciScreenInputField* p = (aciScreenInputField*)acsScrD -> GetObject(id); - if(!p) return; - if(acsScrD -> activeInput){ - acsScrD -> activeInput -> StopEvents(); - acsScrD -> CancelInput(); - } - if(!strcmp(p -> string,aciSTR_EMPTY_SLOT) || !strcmp(p -> string,aciSTR_UNNAMED_SAVE)){ - sz = strlen(p -> string) + 1; - acsBackupStr = new char[sz]; - strcpy(acsBackupStr,p -> string); - memset(p -> string,0,p -> MaxStrLen + 2); - } - acsCurrentSlotID = id; - acsCurrentSlotNum = slot_num; -} - -#if defined(__APPLE__) || __GNUC__ < 9 -void createDirIfNotExist(const char* dirName) { - struct stat info; - if (stat(dirName, &info) != 0) { - std::cout<<"Directory "< activeInput) acsScrD -> DoneInput(); - p = (aciScreenInputField*)acsScrD -> GetObject(acsCurrentSlotID); - ptr = p -> string; - } - createDirIfNotExist("savegame"); - if(slot != -1 && ptr){ - XBuf < "savegame/save"; - if(slot < 10) XBuf < "0"; - XBuf <= slot < ".dat"; - len = strlen(ptr); - for(i = 0; i < len; i ++){ - if(ptr[i] && ptr[i] != ' ') - null_flag = 0; - } - if(null_flag){ - ptr = aciSTR_UNNAMED_SAVE; - len = strlen(ptr); - } - - if(aScrDisp -> flags & AS_INV_MOVE_ITEM && aScrDisp -> curItem -> uvsDataPtr){ - ((uvsActInt*)aScrDisp -> curItem -> uvsDataPtr) -> pos_x = aScrDisp -> curItem -> MatrixX = -1; - ((uvsActInt*)aScrDisp -> curItem -> uvsDataPtr) -> pos_y = aScrDisp -> curItem -> MatrixY = -1; - } - - fh.open(XBuf.address(),XS_OUT); - - aciXConv -> init(); - *aciXConv < aScrDisp -> curLocData -> nameID2 < ", "; - - *aciXConv <= ConTimer.day < ":"; - if(ConTimer.hour < 10) *aciXConv < "0"; - *aciXConv <= ConTimer.hour < ":"; - if(ConTimer.min < 10) *aciXConv < "0"; - *aciXConv <= ConTimer.min < ":"; - if(ConTimer.sec < 10) *aciXConv < "0"; - *aciXConv <= ConTimer.sec; - time_len = aciXConv -> tell(); - - fh < (len | (time_len << 16)); - - fh.write(ptr,len); - - fh.write(aciXConv -> address(),time_len); - - - CurrentWorld = prevWorld; - - uniVangSave(fh); - - aciSaveUVSList(fh,GItem); - aciSaveUVSList(fh,GMechos); - aciSaveUVSList(fh,GGamer); - aciSaveUVSList(fh,GGamerMechos); - aciSaveUVSList(fh,GCharItem); - aciSaveUVSList(fh,GTreasureItem); - - aScrDisp -> save_data(&fh); - - GeneralSystemSave(fh); - dgD -> save(fh); - CurrentWorld = -1; - fh.close(); - -#ifdef _ACI_PACK_SAVES_ - acsCompressData(XBuf.address()); -#endif - } - aciAutoSaveFlag = 0; -} - -void acsLoadData(void) -{ - int slot = iSlotNumber,len,time_len; - XBuffer XBuf; - XStream fh; - - if(slot != -1){ - XBuf < "savegame/save"; - if(slot < 10) XBuf < "0"; - XBuf <= slot < ".dat"; - -#ifdef _ACI_PACK_SAVES_ - acsDecompressData(XBuf.address()); -#endif - std::cout<<"acsLoadData"< len; - time_len = (len >> 16) & 0xFF; - len &= 0xFF; - fh.seek(len + sizeof(int) + time_len,XS_BEG); - uniVangLoad(fh); - - aciLoadUVSList(fh,&GItem,1); - aciLoadUVSList(fh,&GMechos); - aciLoadUVSList(fh,&GGamer,1); - aciLoadUVSList(fh,&GGamerMechos); - aciLoadUVSList(fh,&GCharItem,1); - aciLoadUVSList(fh,>reasureItem,1); - - aScrDisp->load_data(&fh); - //stalkerg Попытемся проверить трюм магазина Рё трюм мехоса РІ РјРёСЂРµ - //Эти трюмы должны совпадать РїРѕ содержимому, Р° иначе РёРіСЂР° будет умирать - if(aScrDisp->curMatrix) { //Существует ли матрица - listElem *el = NULL; - listElem *el2 = NULL; - uvsActInt *new_item = NULL; - uvsActInt *iter_gamer = (uvsActInt*)GGamer; - invItem* p,*p1; - while (iter_gamer) { - bool item_detect = false; - int i, j, index = 0; - for(i = 0; i < aScrDisp->curMatrix->SizeY; i++){ - for(j = 0; j < aScrDisp->curMatrix->SizeX; j++){ - invMatrixCell *cell = aScrDisp->curMatrix->matrix[index]; - /*std::cout<<"GGamer type:"<type - <<" x:"<pos_x - <<" y:"<pos_y - <<" i:"<flags - <<" mcell type:"<type - <<" index:"<flags & AS_BUSY_CELL && cell->item) { - /*std::cout<<"item_type:"<item->ID - <<" MX:"<item->MatrixX - <<" MY:"<item->MatrixY<item->ID == iter_gamer->type && - cell->item->MatrixX == iter_gamer->pos_x && - cell->item->MatrixY == iter_gamer->pos_y - ) { - item_detect = true; - goto end_find; - } - } - index++; - } - } - std::cout<<"Can't find item GGamer type:"<type - <<" pos_x:"<pos_x - <<" pos_y:"<pos_y - <<" and we make it"<flags & AS_ISCREEN) - p = aScrDisp->get_iitem(iter_gamer->type); - else - p = aScrDisp->get_item(iter_gamer->type); - - p1 = aScrDisp->alloc_item(); - p->clone(p1); - aScrDisp->curMatrix->put_item(iter_gamer->pos_x, iter_gamer->pos_y, p1, 1); - end_find: - //Is it duplicate? - if (el != NULL) { - el2 = el; - while (el2) { - uvsActInt *item = dynamic_cast (el2); - if (item->pos_x == iter_gamer->pos_x && item->pos_y == iter_gamer->pos_y && item->type == iter_gamer->type) { - std::cout<<"We find duplicate item GGamer type:"<type - <<" pos_x:"<pos_x - <<" pos_y:"<pos_y - <next; - } - } - new_item = new uvsActInt; - new_item->pos_x = iter_gamer->pos_x; - new_item->pos_y = iter_gamer->pos_y; - new_item->type = iter_gamer->type; - new_item->price = iter_gamer->price; - new_item->sell_price = iter_gamer->sell_price; - new_item->param1 = iter_gamer->param1; - new_item->param2 = iter_gamer->param2; - new_item->link(el); - - next: - iter_gamer = (uvsActInt*)iter_gamer->next; - } - - aciFreeUVSList(GGamer); - GGamer = (uvsActInt*)el; - - } - GeneralSystemLoad(fh); - dgD -> load(fh); - fh.close(); - -#ifdef _ACI_PACK_SAVES_ - acsCompressData(XBuf.address()); -#endif - } -} - -void aciAcceptRubox(void) -{ - aciML_D -> key_trap(AML_RUBOX_CODE,AML_KEY); -} - -void aciGetRubox(void) -{ - uvsActInt* p; - invItem* itm; - listElem* el = (listElem*)GGamer; - if(!aciPutItem(ACI_RUBOX,-1,-1)) ErrH.Abort("aciPutItem() failed..."); - - itm = (invItem*)aScrDisp -> curMatrix -> items -> last; - aScrDisp -> curMatrix -> remove_item(itm); - - if(aScrDisp -> flags & AS_INV_MOVE_ITEM){ - aScrDisp -> flags ^= AS_INV_MOVE_ITEM; - aciSell_Item(aScrDisp -> curItem); - aScrDisp -> curItem = NULL; - } - - aScrDisp -> flags |= AS_INV_MOVE_ITEM; - aScrDisp -> curItem = itm; - set_mouse_cursor(itm -> frame,itm -> ScreenSizeX,itm -> ScreenSizeY); - - p = new uvsActInt; - p -> type = ACI_RUBOX; - itm -> uvsDataPtr = p; - - p -> link(el); - GGamer = (uvsActInt*)el; -} - -void aciAddRubox(void) -{ - uvsActInt* p; - invItem* itm; - listElem* el = (listElem*)GGamer; - if(!aciPutItem(ACI_RUBOX,-1,-1)) ErrH.Abort("aciPutItem() failed..."); - - itm = (invItem*)aScrDisp -> curMatrix -> items -> last; - - p = new uvsActInt; - p -> type = ACI_RUBOX; - itm -> uvsDataPtr = p; - - p -> pos_x = itm -> MatrixX; - p -> pos_y = itm -> MatrixY; - - p -> link(el); - GGamer = (uvsActInt*)el; -} - -void aciExpropriation(void) -{ - if(!aScrDisp -> curMatrix) return; - invItem* itm = (invItem*)aScrDisp -> curMatrix -> items -> last,*itm1; - uvsActInt* ptr = (uvsActInt*)aScrDisp -> curMatrix -> uvsDataPtr; - if(!ptr) ErrH.Abort("Bad sell mechos..."); - while(itm){ - itm1 = (invItem*)itm -> prev; - aScrDisp -> curMatrix -> remove_item(itm); - itm -> flags |= INV_ITEM_NO_PAY; - aciSell_Item(itm); - itm = itm1; - } -} - -void aciChange2Raffa(void) -{ - invMatrix* m,*rf = NULL; - uvsActInt* u,*u1; - listElem* el; - - if(aScrDisp -> curMatrix) aciExpropriation(); - - aScrDisp -> curMatrix = NULL; - if(GGamerMechos){ - //std::cout<<"aciChange2Raffa if(GGamerMechos) "< get_imatrix(GGamerMechos -> type); - if(!m -> uvsDataPtr) { - m -> uvsDataPtr = GGamerMechos; - } - //std::cout<<"aciChange2Raffa el = GMechos "< link(el); - GMechos = (uvsActInt*)el; - //std::cout<<"aciChange2Raffa GMechos = (uvsActInt*)el "< i_matrixList -> last; - while(m){ - //std::cout<<"aciChange2Raffa invMatrix type: "<type< flags & IM_RAFFA){ - if(m -> uvsDataPtr){ - u = (uvsActInt*)m -> uvsDataPtr; - //std::cout<<"aciChange2Raffa GMechos "< delink(GMechos); - u->next = NULL; - u->prev = NULL; - if(((iListElement*)m) == iShopItem) - aciNextShopItem(); - //std::cout<<"aciChange2Raffa GGamerMechos = u "< type); - if(u1) - m -> uvsDataPtr = u1; - else - m -> uvsDataPtr = NULL; - aScrDisp -> curMatrix = aScrDisp -> alloc_matrix(m -> type,1); - aScrDisp -> curMatrix -> uvsDataPtr = u; - return; - } else { - rf = m; - } - } - m = (invMatrix*)m -> prev; - } - if(!rf) - ErrH.Abort("Free mechos not found..."); - - m = rf; - u = new uvsActInt; - u -> type = m -> type; - u -> price = u -> sell_price = 1; - - if(((iListElement*)m) == iShopItem) - aciNextShopItem(); - - //std::cout<<"aciChange2Raffa2 GGamerMechos = u"< type); - if(u1) - m -> uvsDataPtr = u1; - else - m -> uvsDataPtr = NULL; - - aScrDisp -> curMatrix = aScrDisp -> alloc_matrix(m -> type,1); - aScrDisp -> curMatrix -> uvsDataPtr = u; -} - -char* aciGetPlayerName(void) -{ - return iGetOptionValueCHR(iPLAYER_NAME2); -} - -char* aciGetPlayerPassword(void) -{ - return iGetOptionValueCHR(iPLAYER_PASSWORD); -} - -int aciGetPlayerColor(void) -{ - return iGetOptionValue(iPLAYER_COLOR); -} - -void aciClearTeleportMenu(void) -{ - fncMenu* mn; - fncMenuItem* p,*p1; - - mn = aScrDisp -> get_menu(FMENU_TELEPORT_MENU); - if(!mn) return; - - p = (fncMenuItem*)mn -> items -> last; - while(p){ - p1 = (fncMenuItem*)p -> prev; - if(p -> fnc_code != FMENU_OFF){ - mn -> items -> dconnect((iListElement*)p); - aScrDisp -> free_menu_item(p); - } - p = p1; - } - p = (fncMenuItem*)mn -> inactive_items -> last; - while(p){ - p1 = (fncMenuItem*)p -> prev; - if(p -> fnc_code != FMENU_OFF){ - mn -> inactive_items -> dconnect((iListElement*)p); - aScrDisp -> free_menu_item(p); - } - p = p1; - } - mn -> prefix = NULL; - mn -> postfix = NULL; -} - -void aciSaveUVSList(XStream& fh,uvsActInt* p) -{ - uvsActInt* ptr; - int i,list_size = 0; - - ptr = p; - while(ptr){ - list_size ++; - ptr = (uvsActInt*)ptr -> next; - } - - ptr = p; - fh < list_size; - for(i = 0; i < list_size; i ++){ - ptr -> save(fh); - ptr = (uvsActInt*)ptr -> next; - } -} - -void aciFreeUVSList(uvsActInt* p) -{ - uvsActInt* ptr,*ptr1; - ptr = p; - while(ptr){ - ptr1 = (uvsActInt*)ptr -> next; - //std::cout<<"aciFreeUVSList "<type< list_size; - for(i = 0; i < list_size; i ++){ - ptr = new uvsActInt; - ptr -> load(fh,list_type); - //std::cout<<"aciLoadUVSList new "<type<<" price:"<price<<" param1:"<param1<<" param2:"<param2< link(el); - } - *p = (uvsActInt*)el; -} - -#define ACI_FRAG_ADDITIONAL_LINES 4 -#define ACI_FRAG_TIMER 300 -#define ACI_FRAG_FONT 0 - -const unsigned ACI_FRAG_COL0 = (252 | (246 << 8)); -const unsigned ACI_FRAG_COL1 = (143 | (135 << 8)); -const unsigned ACI_FRAG_COL2 = (156 | (151 << 8)); -const unsigned ACI_FRAG_COL3 = (173 | (166 << 8)); -const unsigned ACI_FRAG_COL4 = (200 | (195 << 8)); -const unsigned ACI_FRAG_COL5 = (238 | (233 << 8)); -const unsigned ACI_FRAG_COL6 = (238 | (233 << 8)); -const unsigned ACI_FRAG_COL7 = (238 | (233 << 8)); -const unsigned ACI_FRAG_COL8 = (252 | (246 << 8)); -const unsigned ACI_FRAG_COL9 = (156 | (151 << 8)); - -void aciShowFrags(void) -{ - int i,num; - XBuffer XBuf; - PlayerData* p; - char* world_name; - - static int fragColors[10] = { ACI_FRAG_COL0, ACI_FRAG_COL1, ACI_FRAG_COL2, ACI_FRAG_COL3, ACI_FRAG_COL4, ACI_FRAG_COL5, ACI_FRAG_COL6, ACI_FRAG_COL7, ACI_FRAG_COL8, ACI_FRAG_COL9 }; - - if(!NetworkON || !players_list.size()) return; - if(aScrDisp -> curPrompt -> NumStr){ - aScrDisp -> curPrompt -> free_mem(); - return; - } - - iSortPlayers(1); - - num = iNumPlayers; - if (iCurMultiGame == 0) num += ACI_FRAG_ADDITIONAL_LINES; //Van-War - - aScrDisp -> curPrompt -> alloc_mem(num); - aScrDisp -> curPrompt -> CurTimer = 0; - - aScrDisp -> curPrompt -> fontID = ACI_FRAG_FONT; - - switch(iCurMultiGame){ - case 0: // VAN-WAR... - - for (i = 0; i < ACI_FRAG_ADDITIONAL_LINES; i++) { - XBuf.init(); - switch (i) { - case 0: XBuf < aciSTR_RESTRICTIONS; break; - case 1: XBuf < aciSTR_WINS < " " <= my_server_data.Van_War.MaxKills < ", " < aciSTR_MINUTES < " " <= my_server_data.Van_War.MaxTime; break; - case 2: XBuf < ""; break; - case 3: XBuf < aciSTR_STATISTICS; break; - } - - aScrDisp -> curPrompt -> add_str(i, (unsigned char*)XBuf.address()); - aScrDisp -> curPrompt -> TimeBuf[i] = ACI_FRAG_TIMER; - aScrDisp -> curPrompt -> ColBuf[i] = fragColors[5]; - } - - for(i = 0; i < num - ACI_FRAG_ADDITIONAL_LINES; i ++){ - p = iPlayers[i]; - XBuf.init(); - world_name = aScrDisp -> wMap -> world_ptr[aScrDisp -> wMap -> world_ids[p -> body.world]] -> name; - XBuf < p -> name < " (" < world_name < ") : " < aciSTR_WINS < " " <= p -> body.kills < ", " < aciSTR_LOSSES < " " <= p -> body.deaths; - aScrDisp -> curPrompt -> add_str(i + ACI_FRAG_ADDITIONAL_LINES,(unsigned char*)XBuf.address()); - aScrDisp -> curPrompt -> TimeBuf[i + ACI_FRAG_ADDITIONAL_LINES] = ACI_FRAG_TIMER; - aScrDisp -> curPrompt -> ColBuf[i + ACI_FRAG_ADDITIONAL_LINES] = fragColors[p -> body.color]; - } - break; - case 1: // MECHOSOMA... - for(i = 0; i < num; i ++){ - p = iPlayers[i]; - XBuf.init(); - world_name = aScrDisp -> wMap -> world_ptr[aScrDisp -> wMap -> world_ids[p -> body.world]] -> name; - XBuf < p -> name < " (" < world_name < ") : " < aciSTR_Ware1 < " " <= p -> body.MechosomaStat.ItemCount1 < "/" <= my_server_data.Mechosoma.ProductQuantity1; - XBuf < " " < aciSTR_Ware2 < " " <= p -> body.MechosomaStat.ItemCount2 < "/" <= my_server_data.Mechosoma.ProductQuantity2; - aScrDisp -> curPrompt -> add_str(i,(unsigned char*)XBuf.address()); - aScrDisp -> curPrompt -> TimeBuf[i] = ACI_FRAG_TIMER; - aScrDisp -> curPrompt -> ColBuf[i] = fragColors[p -> body.color]; - } - break; - case 2: // PASSEMBLOSS... - for(i = 0; i < num; i ++){ - p = iPlayers[i]; - XBuf.init(); - world_name = aScrDisp -> wMap -> world_ptr[aScrDisp -> wMap -> world_ids[p -> body.world]] -> name; - XBuf < p -> name < " (" < world_name < ") : " < aciSTR_Checkpoints < " " <= p -> body.PassemblossStat.CheckpointLighting < "/" <= my_server_data.Passembloss.CheckpointsNumber; - aScrDisp -> curPrompt -> add_str(i,(unsigned char*)XBuf.address()); - aScrDisp -> curPrompt -> TimeBuf[i] = ACI_FRAG_TIMER; - aScrDisp -> curPrompt -> ColBuf[i] = fragColors[p -> body.color]; - } - break; - } -} - -#ifdef _DEBUG -void scale_bmp(int sx,int sy,int sx0,int sy0,void* dest,void* src) -{ - int x,y; - unsigned char* dest_buf,*src_buf; - - double ix,iy,dx,dy; - - dest_buf = (unsigned char*)dest; - src_buf = (unsigned char*)src; - - dx = (double)sx0/(double)sx; - dy = (double)sy0/(double)sy; - for(y = 0; y < sy; y ++){ - for(x = 0; x < sx; x ++){ - iy = y * dy; - ix = x * dx; - dest_buf[x + y * sx] = src_buf[round(ix) + (round(iy) * sx0)]; - } - } -} - -void aciResizeItem(double delta) -{ - int x,y; - invItem* p,*p0; - unsigned char* buf; - - double dx,dy; - - p0 = NULL; - - if(!(aScrDisp -> flags & AS_INV_MOVE_ITEM)) return; - p = aScrDisp -> curItem; - - x = p -> ScreenSizeX; - y = p -> ScreenSizeY; - - dy = (double)y * delta; - dx = ((double)x * dy) / (double)y; - x = round(dx); - y = round(dy); - - if(x < 0 || y < 0) return; - buf = new unsigned char[x * y]; - scale_bmp(x,y,p -> ScreenSizeX,p -> ScreenSizeY,buf,p -> frame); - delete p -> frame; - p -> frame = (char*)buf; - p -> ScreenSizeX = x; - p -> ScreenSizeY = y; - set_mouse_cursor((char*)buf,x,y); - - if(aScrDisp -> flags & AS_ISCREEN) - p0 = aScrDisp -> get_iitem(p -> ID); - else - p0 = aScrDisp -> get_item(p -> ID); - - if(p0){ - p0 -> ScreenSizeX = x; - p0 -> ScreenSizeY = y; - p0 -> frame = (char*)buf; - } -} -#endif - -void aciFreeUVS(void) -{ - //std::cout<<"aciFreeUVSList(GItem)"< ret_val = 1; - iScrDisp -> flags |= SD_EXIT; -} - -void aciRedrawParamsPanel(int x,int y,int sx,int sy) -{ - int col0,col1; - InfoPanel* pl = aScrDisp -> get_aci_info_panel(ACI_PARAMS_PANEL); - if(!pl){ - XGR_Rectangle(x,y,sx,sy,0,0,XGR_FILLED); - return; - } - - col0 = (aciCurColorScheme[FM_SELECT_START2] << 8) | aciCurColorScheme[FM_UNSELECT_START]; - col1 = (aciCurColorScheme[FM_SELECT_SIZE2] << 8) | aciCurColorScheme[FM_UNSELECT_SIZE]; - - if(aciCurLuck != aciPrevLuck || aciCurDominance != aciPrevDominance){ - pl -> free_list(); - - pl -> add_item(aciSTR_LUCK); - aciXConv -> init(); - *aciXConv <= aciCurLuck; - if(aciCurLuck < 100) - pl -> add_item(aciXConv -> address()); - else - pl -> add_item(aciXConv -> address(),-1,col0 | (col1 << 16)); - - pl -> add_item(" "); - - pl -> add_item(aciSTR_DOMINANCE); - aciXConv -> init(); - *aciXConv <= aciCurDominance; - if(aciCurDominance < 100) - pl -> add_item(aciXConv -> address()); - else - pl -> add_item(aciXConv -> address(),-1,col0 | (col1 << 16)); - } - pl -> PosX = x; - pl -> PosY = y; - - pl -> SizeX = sx; - pl -> SizeY = sy; - - pl -> flags |= IP_NO_REDRAW; - - pl -> redraw(); -} - -void aciPutTreasureItem(void) -{ - uvsActInt* p; - if(!GTreasureItem) return; - p = GTreasureItem; - while(p){ - aciML_D -> curDataSet -> put_item(p -> type); - p = (uvsActInt*)p -> next; - } -} - -void aciStealItem(int type) -{ - listElem* el; - uvsActInt* u; - invItem* p,*p1; - if(!GTreasureItem) return; - u = GTreasureItem; - while(u){ - if(u -> type == type) break; - u = (uvsActInt*)u -> next; - } - if(!u) return; - - if(u -> type == ACI_BOORAWCHIK) aciEscaveEmpty = 1; - - p = aScrDisp -> get_iitem(u -> type); - p1 = aScrDisp -> alloc_item(); - p -> clone(p1); - - if(aScrDisp -> flags & AS_INV_MOVE_ITEM){ - aScrDisp -> flags ^= AS_INV_MOVE_ITEM; - aciSell_Item(aScrDisp -> curItem); - aScrDisp -> curItem = NULL; - } - - aScrDisp -> flags |= AS_INV_MOVE_ITEM; - aScrDisp -> curItem = p1; - set_mouse_cursor(p1 -> frame,p1 -> ScreenSizeX,p1 -> ScreenSizeY); - - u -> delink(GTreasureItem); - - el = (listElem*)GGamer; - u -> link(el); - GGamer = (uvsActInt*)el; - p1 -> uvsDataPtr = u; -} - -void aciInitPricePanel(InfoPanel* ip,iListElement* p,int mode,int sell_mode) -{ - invItem* it; - invMatrix* m; - uvsActInt* u; - - int col = -1; - - ip -> free_list(); - - if(mode == MECHOS_MODE){ - m = (invMatrix*)p; - u = (uvsActInt*)m -> uvsDataPtr; - if(m -> mech_name) ip -> add_item(m -> mech_name,-1,aciCurColorScheme[FM_SELECT_COL]); - - if(m -> flags & IM_NOT_COMPLETE) - ip -> add_item(aciSTR_BROKEN); - } - else { - it = (invItem*)p; - u = (uvsActInt*)it -> uvsDataPtr; - if(it->ID_ptr.size()) { - ip -> add_item(it->ID_ptr.c_str(),-1,aciCurColorScheme[FM_SELECT_COL]); - } - } - - if(!u) - return; - - aciXConv -> init(); - if(!uvsCurrentWorldUnable){ - if(mode != MECHOS_MODE || !(m -> flags & IM_NOT_COMPLETE)){ - if(sell_mode) - *aciXConv < aciSTR_PRICE <= u -> sell_price < " $"; - else - *aciXConv < aciSTR_PRICE <= u -> price < " $"; - - ip -> add_item(aciXConv -> address(),-1,col); - } - } - - if(mode == MECHOS_MODE){ - m = (invMatrix*)p; - if(!sell_mode && m -> pData){ - aciXConv -> init(); - *aciXConv < aciSTR_ENERGY_SHIELD < " " < (m -> pData + ACI_MECHOS_ENERGY_SHIELD * ACI_MAX_PRM_LEN); - ip -> add_item(aciXConv -> address(),-1,col); - - aciXConv -> init(); - *aciXConv < aciSTR_RESTORING_SPEED < " " < (m -> pData + ACI_MECHOS_RESTORING_SPEED * ACI_MAX_PRM_LEN); - ip -> add_item(aciXConv -> address(),-1,col); - - aciXConv -> init(); - *aciXConv < aciSTR_MECHANIC_ARMOR < " " < (m -> pData + ACI_MECHOS_MECHANIC_ARMOR * ACI_MAX_PRM_LEN) < " " < aciSTR_VELOCITY < " " < (m -> pData + ACI_MECHOS_VELOCITY * ACI_MAX_PRM_LEN); - ip -> add_item(aciXConv -> address(),-1,col); - - aciXConv -> init(); - *aciXConv < aciSTR_SPIRAL_CAPACITY < " " < (m -> pData + ACI_MECHOS_SPIRAL_CAPACITY * ACI_MAX_PRM_LEN); - ip -> add_item(aciXConv -> address(),-1,col); - - aciXConv -> init(); - *aciXConv < aciSTR_AIR_RESERVE < " " < (m -> pData + ACI_MECHOS_AIR_RESERVE * ACI_MAX_PRM_LEN); - ip -> add_item(aciXConv -> address(),-1,col); - } - } - else { - it = (invItem*)p; - if(it -> pData && !sell_mode){ - if(it -> slotType == AS_WEAPON_SLOT || it -> slotType == AS_TWEAPON_SLOT){ - aciXConv -> init(); - *aciXConv < aciSTR_DAMAGE < " " < (it -> pData + ACI_WEAPON_DAMAGE * ACI_MAX_PRM_LEN); - ip -> add_item(aciXConv -> address(),-1,col); - - if(!uvsCurrentWorldUnable){ - aciXConv -> init(); - *aciXConv < aciSTR_LOAD < " " < (it -> pData + ACI_WEAPON_LOAD * ACI_MAX_PRM_LEN); - ip -> add_item(aciXConv -> address(),-1,col); - } - - aciXConv -> init(); - *aciXConv < aciSTR_SHOTS < " " < (it -> pData + ACI_WEAPON_SHOTS_SEC * ACI_MAX_PRM_LEN); - ip -> add_item(aciXConv -> address(),-1,col); - - aciXConv -> init(); - *aciXConv < aciSTR_BURST < " " < (it -> pData + ACI_WEAPON_RANGE * ACI_MAX_PRM_LEN); - ip -> add_item(aciXConv -> address(),-1,col); - } - else { - if(it -> slotType == AS_DEVICE_SLOT){ - if(!uvsCurrentWorldUnable){ - aciXConv -> init(); - *aciXConv < aciSTR_WORKING_TIME < " " < (it -> pData + ACI_DEVICE_WORKING_TIME * ACI_MAX_PRM_LEN) < aciSTR_SECONDS; - ip -> add_item(aciXConv -> address(),-1,col); - } - } - else { - aciXConv -> init(); - *aciXConv < aciSTR_DAMAGE < " " < (it -> pData + ACI_AMMO_DAMAGE * ACI_MAX_PRM_LEN); - ip -> add_item(aciXConv -> address(),-1,col); - - aciXConv -> init(); - *aciXConv < aciSTR_IN_PACK < " " < (it -> pData + ACI_AMMO_IN_PACK * ACI_MAX_PRM_LEN); - ip -> add_item(aciXConv -> address(),-1,col); - } - } - } - } -} - -#define ACI_RACING_X 70 -#define ACI_RACING_Y 70 - -#define ACI_RACING2_X 70 -#define ACI_RACING2_Y 70 - -#define ACI_RACING_X_H 80 -#define ACI_RACING_Y_H 80 - -#define ACI_RACING2_X_H 80 -#define ACI_RACING2_Y_H 80 - -#define ACI_RACING_FONT 7 -#define ACI_RACING_COL 103 -#define ACI_RACING_COL2 111 - -void aciShowRacingPlace(void) -{ - int x,y,dx; - aciXConv -> init(); - *aciXConv < aciCurRaceType < " "; - - if(!(aScrDisp -> flags & AS_FULLSCR)){ - if(actintLowResFlag){ - x = aScrDisp -> curIbs -> PosX + ACI_RACING_X; - y = aScrDisp -> curIbs -> PosY + ACI_RACING_Y; - } - else { - x = aScrDisp -> curIbs -> PosX + ACI_RACING_X_H; - y = aScrDisp -> curIbs -> PosY + ACI_RACING_Y_H; - } - - y = XGR_MAXY - y; - } - else { - if(actintLowResFlag){ - x = ACI_RACING2_X; - y = ACI_RACING2_Y; - } - else { - x = ACI_RACING2_X_H; - y = ACI_RACING2_Y_H; - } - - y = XGR_MAXY - y; - } - - aOutStr(x,y,ACI_RACING_FONT,ACI_RACING_COL,(unsigned char*)aciXConv -> address(),1); - - dx = aStrLen((unsigned char*)aciXConv -> address(),ACI_RACING_FONT,1); - aciXConv -> init(); - *aciXConv < aciCurRaceInfo; - aOutStr(x + dx,y,ACI_RACING_FONT,ACI_RACING_COL2,(unsigned char*)aciXConv -> address(),1); -} - -void aciPrepareText(char* ptr) -{ - int sz = strlen(ptr); - aScrDisp -> ScrTextData -> alloc(ptr,sz); - aScrDisp -> send_event(ACI_SHOW_TEXT); -} - -void aciAutoSave(void) -{ - if(NetworkON || aScrDisp -> curLocData -> WorldID == XPLO_ID) return; - - aciAutoSaveFlag = 1; - acsSaveData(); -} - -#ifdef _DEMO_ -void aciTheEnd(void) -{ - GameQuantReturnValue = RTO_LOADING3_ID; - aciCompleteGameFlag = 1; -} -#endif - -void aciDropMoveItem(void) -{ - if(aScrDisp -> flags & AS_INV_MOVE_ITEM){ - aciSendEvent2itmdsp(ACI_DROP_ITEM,aScrDisp -> curItem -> item_ptr); - aScrDisp -> flags &= ~AS_INV_MOVE_ITEM; - aScrDisp -> free_item(aScrDisp -> curItem); - } -} - -//znfo key handler -void aciCHandler(int key) -{ - return; - int code = 0,cr; - if(NetworkON || key > 256 || key <= 0) return; - - if(aciTreeData) { - code = aciTreeData -> quant(key); - } - switch(code << NetworkON){ - case ACI_ADD_BEEBOS: - cr = aciGetCurCredits(); - cr += 50000; - aciUpdateCurCredits(cr); - if(!(aScrDisp -> flags & AS_ISCREEN)) - SetWorldBeebos(cr); - aciTreeData -> reset(); - SOUND_DROP(); - break; - case ACI_ADD_LUCK: - uvsChangeLuck(); - aciTreeData -> reset(); - SOUND_DROP(); - break; - case ACI_ADD_DOMINANCE: - uvsChangeDominance(); - aciTreeData -> reset(); - SOUND_DROP(); - break; - case ACI_ADD_KEYS: - aciOpenWorldLink(1,0); - aciOpenWorldLink(1,3); - aciOpenWorldLink(1,2); - aciOpenWorldLink(1,4); - - aciOpenWorldLink(0,6); - - aciOpenWorldLink(3,8); - - aciOpenWorldLink(2,9); - aciOpenWorldLink(2,5); - - aciOpenWorldLink(7,7); - aciPrepareWorldsMenu(); - aciTreeData -> reset(); - SOUND_DROP(); - break; - case ACI_COMPLETE_TABUTASK: - aciCompleteTabutask(); - aciTreeData -> reset(); - break; - case ACI_ADD_TABUTASK01: - aciAddTabutask(1); - aciTreeData -> reset(); - break; - case ACI_ADD_TABUTASK02: - aciAddTabutask(2); - aciTreeData -> reset(); - break; - case ACI_ADD_TABUTASK03: - aciAddTabutask(3); - aciTreeData -> reset(); - break; - case ACI_ADD_TABUTASK04: - aciAddTabutask(4); - aciTreeData -> reset(); - break; - case ACI_ADD_TABUTASK05: - aciAddTabutask(5); - aciTreeData -> reset(); - break; - case ACI_ADD_TABUTASK06: - aciAddTabutask(6); - aciTreeData -> reset(); - break; - case ACI_ADD_TABUTASK07: - aciAddTabutask(7); - aciTreeData -> reset(); - break; - case ACI_ADD_TABUTASK08: - aciAddTabutask(8); - aciTreeData -> reset(); - break; - case ACI_ADD_TABUTASK09: - aciAddTabutask(9); - aciTreeData -> reset(); - break; - case ACI_ADD_TABUTASK10: - aciAddTabutask(10); - aciTreeData -> reset(); - break; - case ACI_ADD_TABUTASK11: - aciAddTabutask(11); - aciTreeData -> reset(); - break; - case ACI_ADD_TABUTASK12: - aciAddTabutask(12); - aciTreeData -> reset(); - break; - case ACI_ADD_TABUTASK13: - aciAddTabutask(13); - aciTreeData -> reset(); - break; - case ACI_ADD_TABUTASK14: - aciAddTabutask(14); - aciTreeData -> reset(); - break; - case ACI_ADD_TABUTASK15: - aciAddTabutask(15); - aciTreeData -> reset(); - break; - case ACI_ADD_TABUTASK16: - aciAddTabutask(16); - aciTreeData -> reset(); - break; - case ACI_ADD_TABUTASK17: - aciAddTabutask(17); - aciTreeData -> reset(); - break; - case ACI_ADD_TABUTASK18: - aciAddTabutask(18); - aciTreeData -> reset(); - break; - case ACI_ADD_TABUTASK19: - aciAddTabutask(19); - aciTreeData -> reset(); - break; - case ACI_ADD_TABUTASK20: - aciAddTabutask(20); - aciTreeData -> reset(); - break; - case ACI_TELEPORT_G: - if(!actIntLog){ - SOUND_DROP(); - aci_SendEvent(EV_TELEPORT,0); - } - break; - case ACI_TELEPORT_F: - if(!actIntLog){ - SOUND_DROP(); - aci_SendEvent(EV_TELEPORT,1); - } - break; - case ACI_TELEPORT_N: - if(!actIntLog){ - SOUND_DROP(); - aci_SendEvent(EV_TELEPORT,2); - } - break; - case ACI_TELEPORT_X: - if(!actIntLog){ - SOUND_DROP(); - aci_SendEvent(EV_TELEPORT,3); - } - break; - case ACI_TELEPORT_B: - if(!actIntLog){ - SOUND_DROP(); - aci_SendEvent(EV_TELEPORT,4); - } - break; - case ACI_TELEPORT_K: - if(!actIntLog){ - SOUND_DROP(); - aci_SendEvent(EV_TELEPORT,6); - } - break; - case ACI_TELEPORT_T: - if(!actIntLog){ - SOUND_DROP(); - aci_SendEvent(EV_TELEPORT,7); - } - break; - case ACI_TELEPORT_H: - if(!actIntLog){ - SOUND_DROP(); - aci_SendEvent(EV_TELEPORT,8); - } - break; - case ACI_TELEPORT_W: - if(!actIntLog){ - SOUND_DROP(); - aci_SendEvent(EV_TELEPORT,11); - } - break; - case ACI_TELEPORT_A: - if(!actIntLog){ - SOUND_DROP(); - aci_SendEvent(EV_TELEPORT,12); - } - break; - case ACI_END_GAME0: - if(!actIntLog){ - SOUND_DROP(); - XpeditionOFF(GAME_OVER_INFERNAL_LOCKED); - } - break; - case ACI_END_GAME1: - if(!actIntLog){ - SOUND_DROP(); - XpeditionOFF(GAME_OVER_SPOBS_LOCKED); - } - break; - case ACI_END_GAME2: - if(!actIntLog){ - SOUND_DROP(); - XpeditionOFF(GAME_OVER_ALL_LOCKED); - } - break; - case ACI_END_GAME3: - if(!actIntLog){ - SOUND_DROP(); - XpeditionOFF(GAME_OVER_LUCKY); - } - break; - case ACI_CHANGE_CYCLE: - if(!actIntLog){ - SOUND_DROP(); - uvsChangeCycle(); - } - break; - case ACI_REPAIR: - if(!actIntLog){ - SOUND_DROP(); - FakeOfMight(); - } - break; - } -} - -void aciPutBufSpr(int x,int y,int sx,int sy,int bsx,void* src,void* dest,int col,int col_sz) -{ - int i,j,dest_index,src_index; - unsigned src_col; - unsigned char* src_buf,*dest_buf; - - dest_index = x + y * bsx; - src_index = 0; - - src_buf = (unsigned char*)src; - dest_buf = (unsigned char*)dest; - - if(!col_sz){ - for(i = 0; i < sy; i ++){ - for(j = 0; j < sx; j ++){ - src_col = src_buf[src_index + j]; - if(src_col) - dest_buf[dest_index + j] = col + src_col; - } - dest_index += bsx; - src_index += sx; - } - } - else { - for(i = 0; i < sy; i ++){ - for(j = 0; j < sx; j ++){ - src_col = src_buf[src_index + j]; - if(src_col) - dest_buf[dest_index + j] = col + (src_col >> col_sz); - } - dest_index += bsx; - src_index += sx; - } - } -} - -void aPutChar32(int x,int y,int font,int color,int color_size,int str,int bsx,void* buf) -{ - aciXConv -> init(); - *aciXConv < (char)str < "\0"; - - aPutStr32(x,y,font,color,color_size,aciXConv -> address(),bsx,buf,0); -} - -void aOutText32(int x,int y,int color,void* text,int font,int hspace,int vspace) -{ - int s,xs,ys,offs = 0,sz = strlen((char*)text),X = 0,Y = 0; - int color_size,chr; - - unsigned char* str_buf; - - if(aScrFonts32[font] == NULL) - ErrH.Abort("MISSING FONT..."); - - color_size = (color >> 16) & 0xFF; - color &= 0xFFFF; - - unsigned char* p = aScrFonts32[font] -> data; - xs = aScrFonts32[font] -> SizeX; - ys = aScrFonts32[font] -> SizeY; - - str_buf = (unsigned char*)text; - - X = x; - Y = y; - - for(s = 0; s < sz; s ++){ - chr = str_buf[s]; - if(chr != '\n'){ - if(chr != '\r'){ - X -= aScrFonts32[font] -> LeftOffs[chr]; - offs = xs * ys * chr; - aciPutSpr32(X,Y,xs,ys,p + offs,color,color_size); - X += xs + hspace - aScrFonts32[font] -> RightOffs[chr]; - } - } - else { - X = x; - Y += ys + vspace; - } - } -} - -void aOutText32clip(int x,int y,int color,void* text,int font,int hspace,int vspace) -{ - int s,xs,ys,offs = 0,sz = strlen((char*)text),X = 0,Y = 0; - int color_size,chr; - - unsigned char* str_buf; - - if(aScrFonts32[font] == NULL) - ErrH.Abort("MISSING FONT..."); - - color_size = (color >> 16) & 0xFF; - color &= 0xFFFF; - - unsigned char* p = aScrFonts32[font] -> data; - xs = aScrFonts32[font] -> SizeX; - ys = aScrFonts32[font] -> SizeY; - - str_buf = (unsigned char*)text; - - X = x; - Y = y; - - for(s = 0; s < sz; s ++){ - chr = str_buf[s]; - if(chr != '\n'){ - if(chr != '\r'){ - X -= aScrFonts32[font] -> LeftOffs[chr]; - offs = xs * ys * chr; - aciPutSpr32clip(X,Y,xs,ys,p + offs,color,color_size); - X += xs + hspace - aScrFonts32[font] -> RightOffs[chr]; - } - } - else { - X = x; - Y += ys + vspace; - } - } -} - -int aTextWidth32(void* text,int font,int hspace) -{ - int s,xs,ys,sz = strlen((char*)text),chr; - int len = 0,max_len = 0; - - unsigned char* str_buf; - - if(aScrFonts32[font] == NULL) - ErrH.Abort("MISSING FONT..."); - - xs = aScrFonts32[font] -> SizeX; - ys = aScrFonts32[font] -> SizeY; - - str_buf = (unsigned char*)text; - - for(s = 0; s < sz; s ++){ - chr = str_buf[s]; - if(chr != '\n'){ - if(chr != '\r'){ - len += xs + hspace - aScrFonts32[font] -> RightOffs[chr] - aScrFonts32[font] -> LeftOffs[chr]; - } - } - else { - if(len > max_len) max_len = len; - len = 0; - } - } - if(len > max_len) max_len = len; - return max_len; -} - -int aTextHeight32(void* text,int font,int vspace) -{ - int s,xs,ys,sz = strlen((char*)text),chr; - int len = 0; - - unsigned char* str_buf; - - if(aScrFonts32[font] == NULL) - ErrH.Abort("MISSING FONT..."); - - xs = aScrFonts32[font] -> SizeX; - ys = aScrFonts32[font] -> SizeY; - - str_buf = (unsigned char*)text; - - len = ys + vspace; - - for(s = 0; s < sz; s ++){ - chr = str_buf[s]; - if(chr == '\n'){ - len += ys + vspace; - } - } - return len; -} - -void aciPutSpr32(int x,int y,int sx,int sy,void* buf,int col,int col_sz) -{ - int i,j,index = 0; - unsigned cl; - unsigned char* p = (unsigned char*)buf; - - if(col_sz){ - for(i = 0; i < sy; i ++){ - for(j = 0; j < sx; j ++){ - cl = p[index]; - cl >>= col_sz; - if(cl) - XGR_SetPixelFast(x + j,y + i,col + cl); - index ++; - } - } - } - else { - for(i = 0; i < sy; i ++){ - for(j = 0; j < sx; j ++){ - cl = p[index]; - if(cl) - XGR_SetPixelFast(x + j,y + i,col + cl); - index ++; - } - } - } -} - -void aciPutSpr32clip(int x,int y,int sx,int sy,void* buf,int col,int col_sz) -{ - int i,j,index = 0; - unsigned cl; - unsigned char* p = (unsigned char*)buf; - - if(col_sz){ - for(i = 0; i < sy; i ++){ - for(j = 0; j < sx; j ++){ - cl = p[index]; - cl >>= col_sz; - if(cl) - XGR_SetPixel(x + j,y + i,col + cl); - index ++; - } - } - } - else { - for(i = 0; i < sy; i ++){ - for(j = 0; j < sx; j ++){ - cl = p[index]; - if(cl) - XGR_SetPixel(x + j,y + i,col + cl); - index ++; - } - } - } -} - -void acsCompressData(char* p) -{ - int len,time_len,flags,sz,data; - unsigned long dest_sz, src_sz; - XStream fh; - - char* header,*src_buf,*dest_buf; - - fh.open(p,XS_IN); - sz = fh.size(); - fh > len; - - time_len = (len >> 16) & 0xFF; - flags = (len >> 24) & 0xFF; - len &= 0xFF; - - if(flags & ACI_SAVE_COMPRESSED){ - fh.close(); - return; - } - - dest_sz = src_sz = sz - time_len - len - sizeof(int); - dest_sz*=2; - header = new char[len + time_len]; - src_buf = new char[src_sz]; - dest_buf = new char[dest_sz]; - - fh.read(header,len + time_len); - fh.read(src_buf,src_sz); - fh.close(); - - //std::cout<<"compress src_sz:"<> 8) & 0xFF); - *(unsigned int*)(dest_buf + 2) = (unsigned int)src_sz; - dest_sz-=2+4; - int stat = compress((Bytef*)(dest_buf+2+4),(uLongf*)&(dest_sz),(Bytef*)src_buf,src_sz); - dest_sz+=2+4; - switch(stat){ - //case Z_OK: std::cout<<"Compress ok."< len; - - time_len = (len >> 16) & 0xFF; - flags = (len >> 24) & 0xFF; - len &= 0xFF; - - if(!(flags & ACI_SAVE_COMPRESSED)){ - fh.close(); - return; - } - - src_sz = sz - time_len - len - sizeof(int); - header = new char[len + time_len]; - src_buf = new char[src_sz]; - - fh.read(header,len + time_len); - fh.read(src_buf,src_sz); - fh.close(); - - //dest_sz = ZIP_GetExpandedSize(src_buf); - dest_sz = *(unsigned int*)(src_buf + 2) + 12; //+12 for size need for zlib - dest_buf = new char[dest_sz]; - - //ZIP_expand(dest_buf,dest_sz,src_buf,src_sz); - /* ZLIB realisation (stalkerg)*/ - if(*(short*)(src_buf)) { //if label = 0 not compress - //std::cout<<"acsDecompressData DeCompress "< flags &= ~AS_FULL_REDRAW; - aciPrevJumpCount = -1; -} - -void aciInitStrings(void) -{ - if(lang() != RUSSIAN){ - aciSTR_ON = aciSTR_ON1; - aciSTR_OFF = aciSTR_OFF1; - aciSTR_DAY = aciSTR_DAY1; - aciSTR_UNDEFINED_PRICE = aciSTR_UNDEFINED_PRICE1; - aciSTR_PRICE = aciSTR_PRICE1; - aciSTR_EMPTY_SLOT = aciSTR_EMPTY_SLOT1; - aciSTR_UNNAMED_SAVE = aciSTR_UNNAMED_SAVE1; - aciSTR_AUTOSAVE = aciSTR_AUTOSAVE1; - aciSTR_WINS = aciSTR_WINS1; - aciSTR_LOSSES = aciSTR_LOSSES1; - aciSTR_LUCK = aciSTR_LUCK1; - aciSTR_DOMINANCE = aciSTR_DOMINANCE1; - aciSTR_BROKEN = aciSTR_BROKEN1; - aciSTR_ENERGY_SHIELD = aciSTR_ENERGY_SHIELD1; - aciSTR_RESTORING_SPEED = aciSTR_RESTORING_SPEED1; - aciSTR_MECHANIC_ARMOR = aciSTR_MECHANIC_ARMOR1; - aciSTR_VELOCITY = aciSTR_VELOCITY1; - aciSTR_SPIRAL_CAPACITY = aciSTR_SPIRAL_CAPACITY1; - aciSTR_AIR_RESERVE = aciSTR_AIR_RESERVE1; - aciSTR_DAMAGE = aciSTR_DAMAGE1; - aciSTR_LOAD = aciSTR_LOAD1; - aciSTR_SHOTS = aciSTR_SHOTS1; - aciSTR_BURST = aciSTR_BURST1; - aciSTR_WORKING_TIME = aciSTR_WORKING_TIME1; - aciSTR_SECONDS = aciSTR_SECONDS1; - aciSTR_IN_PACK = aciSTR_IN_PACK1; - aciSTR_NO_CASH = aciSTR_NO_CASH1; - aciSTR_PICKUP_ITEMS_OFF = aciSTR_PICKUP_ITEMS_OFF1; - aciSTR_PICKUP_WEAPONS_OFF = aciSTR_PICKUP_WEAPONS_OFF1; - aciSTR_PutThis = aciSTR_PutThis1; - aciSTR_Ware1 = aciSTR_Ware11; - aciSTR_Ware2 = aciSTR_Ware21; - aciSTR_Checkpoints = aciSTR_Checkpoints1; - - aciSTR_RESTRICTIONS = aciSTR_RESTRICTIONS1; - aciSTR_STATISTICS = aciSTR_STATISTICS1; - aciSTR_MINUTES = aciSTR_MINUTES1; - } - else { - aciSTR_ON = aciSTR_ON2; - aciSTR_OFF = aciSTR_OFF2; - aciSTR_DAY = aciSTR_DAY2; - aciSTR_UNDEFINED_PRICE = aciSTR_UNDEFINED_PRICE2; - aciSTR_PRICE = aciSTR_PRICE2; - aciSTR_EMPTY_SLOT = aciSTR_EMPTY_SLOT2; - aciSTR_UNNAMED_SAVE = aciSTR_UNNAMED_SAVE2; - aciSTR_AUTOSAVE = aciSTR_AUTOSAVE2; - aciSTR_WINS = aciSTR_WINS2; - aciSTR_LOSSES = aciSTR_LOSSES2; - aciSTR_LUCK = aciSTR_LUCK2; - aciSTR_DOMINANCE = aciSTR_DOMINANCE2; - aciSTR_BROKEN = aciSTR_BROKEN2; - aciSTR_ENERGY_SHIELD = aciSTR_ENERGY_SHIELD2; - aciSTR_RESTORING_SPEED = aciSTR_RESTORING_SPEED2; - aciSTR_MECHANIC_ARMOR = aciSTR_MECHANIC_ARMOR2; - aciSTR_VELOCITY = aciSTR_VELOCITY2; - aciSTR_SPIRAL_CAPACITY = aciSTR_SPIRAL_CAPACITY2; - aciSTR_AIR_RESERVE = aciSTR_AIR_RESERVE2; - aciSTR_DAMAGE = aciSTR_DAMAGE2; - aciSTR_LOAD = aciSTR_LOAD2; - aciSTR_SHOTS = aciSTR_SHOTS2; - aciSTR_BURST = aciSTR_BURST2; - aciSTR_WORKING_TIME = aciSTR_WORKING_TIME2; - aciSTR_SECONDS = aciSTR_SECONDS2; - aciSTR_IN_PACK = aciSTR_IN_PACK2; - aciSTR_NO_CASH = aciSTR_NO_CASH2; - aciSTR_PICKUP_ITEMS_OFF = aciSTR_PICKUP_ITEMS_OFF2; - aciSTR_PICKUP_WEAPONS_OFF = aciSTR_PICKUP_WEAPONS_OFF2; - aciSTR_PutThis = aciSTR_PutThis2; - aciSTR_Ware1 = aciSTR_Ware12; - aciSTR_Ware2 = aciSTR_Ware22; - aciSTR_Checkpoints = aciSTR_Checkpoints2; - - aciSTR_RESTRICTIONS = aciSTR_RESTRICTIONS2; - aciSTR_STATISTICS = aciSTR_STATISTICS2; - aciSTR_MINUTES = aciSTR_MINUTES2; - } -} - -char* aciGetItemEscave(int p2) -{ - int id; - aciLocationInfo* locData; - char* ptr = uvsGetNameByID(p2 & 0x0000FFFF,id); - - id = aScrDisp -> get_locdata_id(ptr); - locData = aScrDisp -> get_locdata(id); - if(locData) - return locData -> nameID2; - else - return NULL;//NEED SEE!!! "" -} - -void aciReadItmText(void) -{ - invItem* p; - p = aciItmTextQueue[aciItmTextQueueCur]; - aciItmTextQueueCur ++; - if(aciItmTextQueueCur >= aciItmTextQueueSize) - aciItmTextQueueCur = aciItmTextQueueSize = 0; - if(p && p -> EvCode) - aScrDisp -> send_event(p -> EvCode,0,p -> item_ptr); -} - -void aciInitItmTextQueue(void) -{ - int i; - invItem* p; - for(i = 0; i < ACI_ITEM_QUEUE_MAX; i ++){ - aciItmTextQueue[i] = NULL; - } - aciItmTextQueueSize = aciItmTextQueueCur = 0; - - p = (invItem*)aScrDisp -> curMatrix -> items -> last; - while(p){ - if(aciItmTextQueueSize < ACI_ITEM_QUEUE_MAX && p -> ID == ACI_TABUTASK && (p -> flags & INV_ITEM_NEW)){ - aciItmTextQueue[aciItmTextQueueSize] = p; - aciItmTextQueueSize ++; - } - p = (invItem*)p -> prev; - } - p = (invItem*)aScrDisp -> curMatrix -> items -> last; - while(p){ - if(aciItmTextQueueSize < ACI_ITEM_QUEUE_MAX && (p -> ID == ACI_ELEEPOD || p -> ID == ACI_BEEBOORAT || p -> ID == ACI_ZEEX) && (p -> flags & INV_ITEM_NEW)){ - aciItmTextQueue[aciItmTextQueueSize] = p; - aciItmTextQueueSize ++; - } - p = (invItem*)p -> prev; - } - p = (invItem*)aScrDisp -> curMatrix -> items -> last; - while(p){ - p -> flags &= ~INV_ITEM_NEW; - p = (invItem*)p -> prev; - } -} - -void aciAddTabutask(int num) -{ - invItem* p; - uvsActInt* u; - listElem* el = (listElem*)GItem; - if(!(aScrDisp -> flags & AS_ISCREEN)) return; - - p = aScrDisp -> get_iitem(ACI_TABUTASK); - if(p -> uvsDataPtr){ - u = (uvsActInt*)p -> uvsDataPtr; - } - else { - u = new uvsActInt; - u -> type = ACI_TABUTASK; - p -> uvsDataPtr = u; - - u -> link(el); - GItem = (uvsActInt*)el; - } - uvsTabuCreate(u,num); - SOUND_DROP(); -} - -void aciCompleteTabutask(void) -{ - invItem* p; - if(!aScrDisp -> curMatrix) return; - p = (invItem*)aScrDisp -> curMatrix -> items -> last; - while(p){ - if(p -> ID == ACI_TABUTASK){ - if(aScrDisp -> flags & AS_ISCREEN){ - if(p -> uvsDataPtr) - uvsTabuComplete(((uvsActInt*)p -> uvsDataPtr) -> param2); - } - else { - if(p -> item_ptr) - uvsTabuComplete(p -> item_ptr -> data1); - } - SOUND_DROP(); - return; - } - p = (invItem*)p -> prev; - } -} - -void aciRemoveUvsItem(uvsActInt* ptr) -{ - switch(ptr -> type){ - case ACI_PROTRACTOR: - case ACI_MECHANIC_MESSIAH: - case ACI_FUNCTION83: - case ACI_SPUMMY: - case ACI_BOOT_SECTOR: - case ACI_PEELOT: - case ACI_LEEPURINGA: - case ACI_SANDOLL_PART1: - case ACI_SANDOLL_PART2: - case ACI_LAST_MOGGY_PART1: - case ACI_LAST_MOGGY_PART2: - case ACI_QUEEN_FROG_PART1: - case ACI_QUEEN_FROG_PART2: - case ACI_LAWN_MOWER_PART1: - case ACI_LAWN_MOWER_PART2: - case ACI_WORMASTER_PART1: - case ACI_WORMASTER_PART2: - case ACI_PALOCHKA: - case ACI_PIPKA: - case ACI_NOBOOL: - case ACI_BOORAWCHIK: - case ACI_PEREPONKA: - case ACI_ZEEFICK: - return; - default: - ptr -> delink(GItem); - delete ptr; - break; - } -} - -void aciVMapPrepare(void) -{ - aScrDisp -> curLocData -> init_map_data(); -} - -void aciInitEndGame(int id) -{ - char* ptr; - ShowImageRTO* p = (ShowImageRTO*)xtGetRuntimeObject(RTO_SHOW_IMAGE_ID); - LoadingRTO3* lp = (LoadingRTO3*)xtGetRuntimeObject(RTO_LOADING3_ID); - -// int sz; -// XStream fh; - - if(!aciImgText){ - aciImgText = new aciScreenText; - aciImgText -> MaxStrLen = 55; - aciImgText -> MaxPageStr = 19; - aciImgText -> color = 239 | (1 << 16); - aciImgText -> DeltaY = -2; - aciImgText -> font = 3; - } - switch(GameOverID){ - case GAME_OVER_EXPLOSION: - if(lang() == RUSSIAN) - p -> SetName("img/img7.bmp"); - else - p -> SetName("img/img0.bmp"); - - p -> SetFlag(0,IMG_RTO_CDTRACK_TIME); - break; - case GAME_OVER_INFERNAL_LOCKED: - p -> SetName("img/img1.bmp"); - ptr = dgD -> getInvText(DG_FINAL,3); - if(ptr){ - aciImgText -> alloc(ptr,strlen(ptr)); - p -> SetFlag(0,IMG_RTO_SHOW_TEXT | IMG_RTO_KEEP_IMAGE); - } - p -> SetFlag(0,IMG_RTO_CDTRACK_TIME); - break; - case GAME_OVER_SPOBS_LOCKED: - p -> SetName("img/img2.bmp"); - ptr = dgD -> getInvText(DG_FINAL,4); - if(ptr){ - aciImgText -> alloc(ptr,strlen(ptr)); - p -> SetFlag(0,IMG_RTO_SHOW_TEXT | IMG_RTO_KEEP_IMAGE); - } - p -> SetFlag(0,IMG_RTO_CDTRACK_TIME); - break; - case GAME_OVER_ALL_LOCKED: - p -> SetName("img/img3.bmp"); - ptr = dgD -> getInvText(DG_FINAL,5); - if(ptr){ - aciImgText -> alloc(ptr,strlen(ptr)); - p -> SetFlag(0,IMG_RTO_SHOW_TEXT | IMG_RTO_KEEP_IMAGE); - } - p -> SetFlag(0,IMG_RTO_CDTRACK_TIME); - break; - case GAME_OVER_LUCKY: - p -> SetName("img/img4.bmp"); - ptr = dgD -> getInvText(DG_FINAL,2); - if(ptr){ - aciImgText -> alloc(ptr,strlen(ptr)); - p -> SetFlag(0,IMG_RTO_SHOW_TEXT | IMG_RTO_KEEP_IMAGE); - } - p -> SetFlag(0,IMG_RTO_CDTRACK_TIME); - break; - case GAME_OVER_LAMPASSO: - p -> SetName("img/img5.bmp"); - ptr = dgD -> getInvText(DG_FINAL,1); - if(ptr){ - aciImgText -> alloc(ptr,strlen(ptr)); - p -> SetFlag(0,IMG_RTO_SHOW_TEXT | IMG_RTO_KEEP_IMAGE); - } - p -> SetFlag(0,IMG_RTO_CDTRACK_TIME); - break; - case GAME_OVER_ABORT: - lp -> SetNext(RTO_MAIN_MENU_ID); - break; - case GAME_OVER_NETWORK: - iMultiFlag = 1; - lp -> SetNext(RTO_MAIN_MENU_ID); - break; - default: - lp -> SetNext(RTO_MAIN_MENU_ID); - break; - } - p -> SetFlag(0,IMG_RTO_CD_IMAGE); - GameOverID = 0; -} - -int aciTextQuant(void) -{ - int ret = 0; - ShowImageRTO* p = (ShowImageRTO*)xtGetRuntimeObject(RTO_SHOW_IMAGE_ID); - - if(aciImgText -> flags & ACI_TEXT_INIT){ - ret = 0; - if(ShowImageMouseFlag || ShowImageKeyFlag){ - if(aciImgText -> flags & ACI_TEXT_END) - ret = 1; - else { - aciImgText -> NextPage(); - if(aciImgText -> flags & ACI_TEXT_END){ - if(p -> imageData){ - XGR_PutSpr(0,0,p -> imageSX,p -> imageSY,p -> imageData,XGR_BLACK_FON); - } - else { - XGR_Fill(0); - } - XGR_Flush(0,0,XGR_MAXX,XGR_MAXY); - } - } - - ShowImageMouseFlag = ShowImageKeyFlag = 0; - } - aciImgText -> Quant(); - if(!(aciImgText -> flags & ACI_TEXT_REDRAW)){ - if(p -> imageData){ - XGR_PutSpr(0,0,p -> imageSX,p -> imageSY,p -> imageData,XGR_BLACK_FON); - } - else { - XGR_Fill(0); - } - aciImgText -> redraw(); - XGR_Flush(0,0,XGR_MAXX,XGR_MAXY); - } - } - else { - if(ShowImageMouseFlag || ShowImageKeyFlag) - ret = 1; - } - return ret; -} - -void aciPrepareScreenText(char* ptr,int sz,int max_len) -{ - int i,offs_start,offs_end,offs; - -// XStream fh("text0.dat",XS_OUT); -// fh.write(ptr,sz); -// fh.close(); - - offs_start = offs_end = 0; - while(offs_start < sz - 1){ - while(ptr[offs_end] != '\n'){ - offs_end ++; - if(offs_end >= sz){ - offs_end = sz - 1; - break; - } - } - if(offs_end - offs_start > max_len){ - offs = offs_start + max_len; - for(i = 0; i < max_len; i ++){ - if(ptr[offs] == ' ' || ptr[offs] == '\t'){ - break; - } - offs --; - if(offs <= offs_start){ - break; - } - } - ptr[offs] = '\n'; - if(offs > offs_start){ - offs_start = offs; - offs_end = offs + 1; - } - else { - offs_start = offs_end; - offs_end ++; - } - } - else { - offs_start = offs_end; - offs_end ++; - } - } - -// fh.open("text1.dat",XS_OUT); -// fh.write(ptr,sz); -// fh.close(); -} - -void aciPrepareEndImage(void) -{ - StopCDTRACK(); - ShowImageRTO* p; - - p = (ShowImageRTO*)xtGetRuntimeObject(RTO_SHOW_IMAGE_ID); - p -> SetNumFiles(1); - if(lang() == RUSSIAN) - p -> SetName("img/img8.bmp",0); - else - p -> SetName("img/img6.bmp",0); - p -> SetFlag(0,IMG_RTO_CD_IMAGE); - p -> SetNext(XT_TERMINATE_ID); -} - -char* aciLoadPackedFile(XStream& fh,int& out_sz) //Text decompress -{ - int sz; - char *p,*ptr; - - sz = fh.size(); - p = new char[sz]; - fh.read(p,sz); - - out_sz = *(unsigned int*)(p + 2); - long long_out_sz = out_sz; - ptr = new char[out_sz]; - - //ZIP_expand(ptr,out_sz,p,sz); - /* ZLIB realisation (stalkerg)*/ - if(*(short*)(p)) { //if label = 0 not compress - //std::cout<<"aciLoadPackedFile DeCompress "< menuList -> last; - - while(m){ - if(m -> flags & FM_MAIN_MENU) - m -> delete_item(FMENU_PARAMETERS); - m = (fncMenu*)m -> prev; - } -} - -int sdlEventToCode(SDL_Event *event) { - switch (event->type) { - case SDL_KEYDOWN: - case SDL_KEYUP: - return event->key.keysym.scancode; - case SDL_MOUSEBUTTONDOWN: - case SDL_MOUSEBUTTONUP: - switch (event->button.button) { - case SDL_BUTTON_LEFT: - return iMOUSE_LEFT_PRESS_CODE; - case SDL_BUTTON_RIGHT: - return iMOUSE_RIGHT_PRESS_CODE; - } - case SDL_MOUSEMOTION: - if (event->motion.state & SDL_BUTTON_LMASK) - return iMOUSE_LEFT_MOVE; - else if (event->motion.state & SDL_BUTTON_RMASK) - return iMOUSE_RIGHT_MOVE; - else - return iMOUSE_MOVE_CODE; - } - return -1; -} +/* ---------------------------- INCLUDE SECTION ----------------------------- */ + +#include "../global.h" +#include "../lang.h" +#include + +#if defined(__APPLE__) || __GNUC__ < 9 +#include +#else +#include +#endif + +#include "../runtime.h" + +#include "../network.h" + +#include "../terra/world.h" + +#include "../iscreen/hfont.h" +#include "../iscreen/iscreen.h" +#include "../iscreen/iscript.h" +#include "../iscreen/iml.h" + +#include "item_api.h" +#include "../units/uvsapi.h" +#include "../units/magnum.h" + +#include "../uvs/univang.h" +#include "../uvs/diagen.h" + +#include "a_consts.h" + +#include "actint.h" +#include "credits.h" +#include "aci_str.h" + +#include "mlconsts.h" +#include "mlstruct.h" + +#include "../iscreen/ikeys.h" +#include "../iscreen/zip.h" + +#include "../iscreen/ext_evnt.h" + +#include "../sound/hsound.h" + +#include "aci_evnt.h" +#include "acsconst.h" +#include "aci_scr.h" +#include "chtree.h" + +#if defined(__APPLE__) || __GNUC__ < 9 +#else +namespace fs = std::filesystem; +#endif + +/* ----------------------------- STRUCT SECTION ----------------------------- */ +/* ----------------------------- EXTERN SECTION ----------------------------- */ + +#ifdef _DEMO_ +extern int aciCompleteGameFlag; +#endif + +extern int aciPrevJumpCount; +extern PlayerData** iPlayers; + +extern int dgMood; +extern int iMultiFlag; +extern int aciCurLuck; +extern int aciPrevLuck; +extern const char* iVideoPath; + +extern int aciCurDominance; +extern int aciPrevDominance; + +extern char* acsBackupStr; +extern unsigned char* palbuf; + +extern int RAM16; + +extern int aciPickupItems; +extern int aciPickupDevices; + +extern int iNumPlayers; + +extern int prevWorld; + +extern uvsActInt* GGamer; +extern uvsActInt* GCharItem; + +extern unsigned char* iscrPal; + + +extern int iScreenActive; +extern int iSlotNumber; + +extern int ShowImageKeyFlag; +extern int ShowImageMouseFlag; + +extern uvsContimer ConTimer; + +extern int GameQuantReturnValue; + +extern int aci_SecondMatrixID; +extern int curMatrixID; + +extern actIntDispatcher* aScrDisp; +extern char* aImageBmp; + +extern unsigned char* aCellFrame; +extern unsigned char* actIntPal; + +extern int beebos; +extern int uvsCurrentWorldUnable; + +extern int aCellSize; +extern int iCellSize; +extern int aci_CellSize; + +extern int iMouseX; +extern int iMouseY; + +extern int iEvLineID; + +extern int curMatrix; + +extern int ViewX; +extern int ViewY; + +extern short iMouseSizeX; +extern short iMouseSizeY; +extern short iMouseSize; +extern unsigned char* iMouseFrames; + +extern short aMouseSizeX; +extern short aMouseSizeY; +extern short aMouseSize; +extern unsigned char* aMouseFrames; + +extern short MouseSizeX; +extern short MouseSizeY; +extern short MouseSize; +extern unsigned char* MouseFrames; + +extern unsigned char* aciCurColorScheme; +extern int aciTeleportEvent; + +extern uvsVanger* Gamer; + +extern int MouseSize2; + +extern int camera_moving_xy_enable; +extern int camera_moving_z_enable; + +extern int camera_slope_enable; + +extern int camera_rotate_enable; + +#ifdef _ACTINT_MEMSTAT_ +extern void* memPtr[]; +extern int memIndex; +#endif + +extern int iCurMultiGame; + +/* --------------------------- PROTOTYPE SECTION ---------------------------- */ + +void uvsChangeCycle(void); +void iSortPlayers(int mode = 0); + +void aciInitEndGame(int id); +int aciTextQuant(void); + +void aciAddTabutask(int num); +void aciCompleteTabutask(void); +void aciDisableParametersMenu(void); + +void uvsTabuComplete(int i); +void uvsTabuCreate(uvsActInt* pa, int num); + +void aciReadItmText(void); + +char* uvsGetNameByID(int type, int& ID); +char* aciGetItemEscave(int p2); + +void acsChangeStrState(int id); +void acsSetStrState(int id,int state); +int acsGetStrState(int id); + +int uvsReturnWorldGamerVisit(int where); + +void uvsChangeLuck(void); +void uvsChangeDominance(void); + +void iSoundQuant(int value = 0); + +void i_slake_pal(unsigned char* p,int delta); +void i_evince_pal(unsigned char* p,int delta); + +void aWriteHelpString(int count, int* x, int* y, int font, unsigned char **pstr, int timer, int color, int space, unsigned int *pcolor); + +void EffectsOff(void); + +void iSaveData(void); +void iLoadData(void); + +void acsSaveData(void); +void acsLoadData(void); +void acsCompressData(char* p); +void acsDecompressData(char* p); + +void aciShowFrags(void); + +void aciRedrawParamsPanel(int x,int y,int sx,int sy); + +void aciSaveUVSList(XStream& fh,uvsActInt* p); +void aciLoadUVSList(XStream& fh,uvsActInt** p,int list_type = 0); +void aciFreeUVSList(uvsActInt* p); + +void aciFreeUVS(void); + +void aciPutTreasureItem(void); +void aciStealItem(int type); + +void acsPrepareSlotName(int id,int slot_num); +void acsPrepareSlotNameInput(int id,int slot_num); + +int acsQuant(void); +void acsHandleExtEvent(int code,int data0 = 0,int data1 = 0,int data2 = 0); + +void GeneralSystemLoad(XStream& in); +void GeneralSystemSave(XStream& out); + +void load_map_bmp(int num); +void set_map_to_ibs(ibsObject* ibs); +void set_mouse_cursor(char* p,int sx,int sy); +void restore_mouse_cursor(void); + +void aciInitAviObject(void); +void aciFreeAll(void); +void loadMouseFrames(void); + +void build_cell_frame(void); +void free_cell_frame(void); + +void swap_buf_col(int src,int dest,int sx,int sy,unsigned char* buf); +void mem_putspr(int x,int y,int sx,int sy,int bsx,int bsy,unsigned char* src,unsigned char* dest); +void mem_rectangle(int x,int y,int sx,int sy,int bsx,int col_in,int col_out,int mode,void* buf); +void aParseScript(const char* fname,const char* bname = NULL); +void acsParseScript(const char* fname,const char* bname = NULL); + +void aciChangeWorld(int w_id); +void aciInitWorldIDs(void); +void aciPrepareWorldsMenu(void); + +void aciInitPanel(InfoPanel* p,unsigned char* str); +void aciClearQuestMenu(void); + +void aciInitShopButtons(void); + +void aciSet_aMouse(void); +void aciSet_iMouse(void); + +void aInit(void); +void aRedraw(void); +void aLoadFonts(void); +void aFreeFonts(void); + +void aKeyInit(void); +void aKeyTrap(SDL_Event *k); +void aKeyQuant(void); +void actIntQuant(void); +void aci_iScreenQuant(void); + +void aciSetCameraMenu(void); +void aciHandleCameraEvent(int code,int data); + +void aci_setMatrixBorder(void); +void aci_setScMatrixBorder(void); +void aciAutoMoveItems(void); +void aciSetMechName(void); +void aciSellMoveItem(void); +void aciRemoveUvsItem(uvsActInt* ptr); +void aciSell_Item(invItem* p); +void aciSell_Matrix(invMatrix* p); +void aciInitInfoPanels(void); +int aciCheckSellItem(void); +void aciSetTimePanel(void); +void aciInitEvLineID(void); +void aciChangeList(void); +void aciChangeLineID(void); +void aciInitShopItems(void); + +void aciCloseShopMenu(void); +void aciShopMenuUp(void); +void aciShopMenuDown(void); +void aciBuildShopList(void); +void aciInitShopList(void); +void aciChooseShopItem(void); +void aciSetShopItem(int id); + +void aciNextPhrase(void); +void aciStartSpeech(void); + +void aciEscaveKickOut(void); + +void aciInitMechosInfo(invMatrix* p,InfoPanel* ip); + +void aciOfferEleech(void); +void aciWaitNextPeriod(void); +void aciOfferWeezyk(void); +void aciGetEleech(void); + +void aciNextShopItem(void); +void aciPrevShopItem(void); +void aciInitShopAvi(void); +void aciBuyItem(void); + +void aciOpenGate(void); +void aciCloseGate(void); + +void SelectCompasTarget(const char * n); +char* GetCompasTarget(void); + +int aciCheckCredits(void); + +void aciShowCamerasMenu(int x,int y,int sx,int sy); +void aciHandleSubmenuEvent(int id,fncMenuItem* p); + +int aciGetCurCycle(void); + +void aciInitAviID(void); +void aciChangeAviIndex(void); + +void aciBuildQuestList(void); + +char* aciGetItemLoad(invItem* p,int mode); +char* aciGetPrice(iListElement* p,int mode,int sell_mode); +void aciInitPricePanel(InfoPanel* ip,iListElement* p,int mode,int sell_mode); +int aciGetCurMatrixPrice(void); + +void aciCHandler(int key); + +int aciCheckSlot(void); + +void iScrQuantPrepare(void); +void iScrQuantFinit(void); + +void show_map(int x,int y,int sx,int sy); + +void set_mouse(void); + +void a_calc_tables(void); +void a_buf_line(int x1,int y1,int x2,int y2,int col,int sx,int sy,unsigned char* buf); + +void aMS_init(void); + +void aci_SendEvent(int cd,int dt = 0); + +void aciPackFile(char* fname); +void aciUnPackFile(char* fname); + +void aMS_LeftPress(int, int, int); +void aMS_LeftUnpress(int, int, int); +void aMS_RightPress(int, int, int); +void aMS_RightUnpress(int, int, int); +void aMS_Movement(int, int, int); + +void aciShowRacingPlace(void); + +#ifdef _GENERATE_IND_SHAPE_ +void smooth_shape_quant(int sx,int sy,unsigned char* buf,int src,int dest,int cnd); +#endif + +#ifdef _ACTINT_MEMSTAT_ +void aciDetectLeaks(void); +#endif + +void aciPutBufSpr(int x,int y,int sx,int sy,int bsx,void* src,void* dest,int col,int col_sz); +void aciPutSpr32(int x,int y,int sx,int sy,void* buf,int col,int col_sz); +void aciPutSpr32clip(int x,int y,int sx,int sy,void* buf,int col,int col_sz); +void aOutText32(int x,int y,int color,void* text,int font,int hspace,int vspace); +void aOutText32clip(int x,int y,int color,void* text,int font,int hspace,int vspace); +int aTextWidth32(void* text,int font,int hspace); +int aTextHeight32(void* text,int font,int vspace); + +void aciInitStrings(void); + +void aciInitItmTextQueue(void); + +/* --------------------------- DEFINITION SECTION --------------------------- */ + +#define ACI_ITEM_QUEUE_MAX 5 + +//#define _ACI_CHECK_PHRASES_ +#define _GENERATE_EXIT_ +//#define _ACI_MAP_TESTING_ + +aciFont** aScrFonts32 = NULL; + +#ifdef _ACI_BML_FONTS_ +aciFont** aScrFonts = NULL; +#else +iScreenFont** aScrFonts = NULL; +#endif + +#ifdef _ACI_LOGFILE_ +char* aciLogFileName = "actint/temp/actint.log"; +#endif + + +int aciCurCredits02 = 0; + +int aciRacingFlag = 0; +char* aciCurRaceType = NULL; +char* aciCurRaceInfo = NULL; + +int aciMouseFlagL = 0; +int aciMouseFlagR = 0; + +int aInitFlag = 0; +int actintLowResFlag = 0; +int actintActiveFlag = 0; +int actIntLog = 0; + +int aciGamerColor = 0; + +int aciCurMechosID = 0; + +int* aSinTable = NULL; +int* aCosTable = NULL; + +bmlObject* aIndArrowBML = NULL; +bmlObject* aIndDataBML = NULL; +bmlObject* aIndBackBML = NULL; + +iListElement* iShopItem; + +XBuffer* aciXConv; + +unsigned char* aciDgPrefix = NULL; +unsigned char* aciDgPostfix = NULL; + +aciScreenText* aciImgText = NULL; + +int aciCurAviIndex = 0; +int aciCurAviIndexDelta = 0; +int aciLoadLog = 0; +int aciShopMenuLog = 0; +int aciWorldIndex = -1; + +int acsScreenID = 1; + +int acsCurrentSlotID = ACS_SAVE_SLOT0; +int acsCurrentSlotNum = 0; + +#ifdef _ACTINT_MEMSTAT_ +XStream aMemStatFile("actint/temp/memstat.log",XS_OUT); +int aMemStartIndex = 0; +int aMemEndIndex = 0; +#endif + +int acsAllocFlag = 0; + +int aciSpeechStarted = 0; +int aciSpeechBegLocked = 0; +int aciSpeechEndLocked = 0; +int aciEndSpeech = 0; +int aciSpeechMode = 2; +int aciBreathFlag = 0; +int aciEscaveDead = 0; +int aciEscaveEmpty = 0; +aciML_EventSeq* aciSpeechSeq = NULL; +aciCHTree* aciTreeData = NULL; + +int aciKeyboardLocked = 0; +int aciAutoRun = 0; + +#ifdef _ACI_ESCAVE_DEBUG_ +int aci_dgMoodNext = -1; +#endif + +int aciAutoSaveFlag = 0; + +const char* aciSTR_ON = aciSTR_ON1; +const char* aciSTR_OFF = aciSTR_OFF1; +const char* aciSTR_DAY = aciSTR_DAY1; +const char* aciSTR_UNDEFINED_PRICE = aciSTR_UNDEFINED_PRICE1; +const char* aciSTR_PRICE = aciSTR_PRICE1; +const char* aciSTR_EMPTY_SLOT = aciSTR_EMPTY_SLOT1; +const char* aciSTR_UNNAMED_SAVE = aciSTR_UNNAMED_SAVE1; +const char* aciSTR_AUTOSAVE = aciSTR_AUTOSAVE1; +const char* aciSTR_KILLS = aciSTR_KILLS1; +const char* aciSTR_DEATHS = aciSTR_DEATHS1; +const char* aciSTR_LUCK = aciSTR_LUCK1; +const char* aciSTR_DOMINANCE = aciSTR_DOMINANCE1; +const char* aciSTR_BROKEN = aciSTR_BROKEN1; +const char* aciSTR_ENERGY_SHIELD = aciSTR_ENERGY_SHIELD1; +const char* aciSTR_RESTORING_SPEED = aciSTR_RESTORING_SPEED1; +const char* aciSTR_MECHANIC_ARMOR = aciSTR_MECHANIC_ARMOR1; +const char* aciSTR_VELOCITY = aciSTR_VELOCITY1; +const char* aciSTR_SPIRAL_CAPACITY = aciSTR_SPIRAL_CAPACITY1; +const char* aciSTR_AIR_RESERVE = aciSTR_AIR_RESERVE1; +const char* aciSTR_DAMAGE = aciSTR_DAMAGE1; +const char* aciSTR_LOAD = aciSTR_LOAD1; +const char* aciSTR_SHOTS = aciSTR_SHOTS1; +const char* aciSTR_BURST = aciSTR_BURST1; +const char* aciSTR_WORKING_TIME = aciSTR_WORKING_TIME1; +const char* aciSTR_SECONDS = aciSTR_SECONDS1; +const char* aciSTR_IN_PACK = aciSTR_IN_PACK1; +const char* aciSTR_NO_CASH = aciSTR_NO_CASH1; +const char* aciSTR_PICKUP_ITEMS_OFF = aciSTR_PICKUP_ITEMS_OFF1; +const char* aciSTR_PICKUP_WEAPONS_OFF = aciSTR_PICKUP_WEAPONS_OFF1; +const char* aciSTR_PutThis = aciSTR_PutThis1; +const char* aciSTR_Ware1 = aciSTR_Ware11; +const char* aciSTR_Ware2 = aciSTR_Ware21; +const char* aciSTR_Checkpoints = aciSTR_Checkpoints1; + +const char* aciSTR_RESTRICTIONS = aciSTR_RESTRICTIONS1; +const char* aciSTR_STATISTICS = aciSTR_STATISTICS1; + +const char* aciSTR_KILLS_NEED = aciSTR_KILLS_NEED1; +const char* aciSTR_MINUTES = aciSTR_MINUTES1; + +const char* aciSTR_OAAT = aciSTR_OAAT1; + +int aciItmTextQueueSize = 0; +int aciItmTextQueueCur = 0; +invItem** aciItmTextQueue = NULL; + +#ifdef _ACI_CHECK_PHRASES_ +int aciPhraseStrLen = 0; +int aciPhraseNumStr = 0; +#endif + +extern iScreenOption** iScrOpt; + +void aInit(void) +{ + GameOverID = 0; + aciInitStrings(); + + if(!aIndArrowBML){ + aIndArrowBML = new bmlObject; + aIndArrowBML -> flags |= BML_NO_OFFSETS; + if(actintLowResFlag) + aIndArrowBML -> load("resource/actint/640x480/ind_data/arrow.bml"); + else + aIndArrowBML -> load("resource/actint/800x600/ind_data/arrow.bml"); + } + if(!aIndDataBML){ + aIndDataBML = new bmlObject; + aIndDataBML -> flags |= BML_NO_OFFSETS; + if(actintLowResFlag) + aIndDataBML -> load("resource/actint/640x480/ind_data/data.bml"); + else + aIndDataBML -> load("resource/actint/800x600/ind_data/data.bml"); + } + if(!aIndBackBML){ + aIndBackBML = new bmlObject; + aIndBackBML -> flags |= BMP_FLAG; + if(actintLowResFlag) + aIndBackBML -> load("resource/actint/640x480/ind_data/back.bmp"); + else + aIndBackBML -> load("resource/actint/800x600/ind_data/back.bmp"); + } + if(!aciSpeechSeq){ + aciSpeechSeq = new aciML_EventSeq; + aciSpeechSeq -> alloc_mem(256); + } + + if(!aciCurRaceType) + aciCurRaceType = new char[10]; + + if(!aciCurRaceInfo) + aciCurRaceInfo = new char[10]; + + if(!aciTreeData){ + aciTreeData = new aciCHTree; + aciTreeData -> load("resource/iscreen/ldata/l7/border.xbm"); + } + +#ifdef _BINARY_SCRIPT_ + if(actintLowResFlag){ + if(lang() == RUSSIAN){ + aParseScript("resource/actint/aci_low2.scb"); + acsParseScript("resource/actint/acs_low2.scb"); + } + else { + aParseScript("resource/actint/aci_low.scb"); + acsParseScript("resource/actint/acs_low.scb"); + } + } + else { + if(lang() == RUSSIAN){ + aParseScript("resource/actint/aci_hi2.scb"); + acsParseScript("resource/actint/acs_low2.scb"); + } + else { + aParseScript("resource/actint/aci_hi.scb"); + acsParseScript("resource/actint/acs_low.scb"); + } + } +#else + if(actintLowResFlag){ + if(lang() == RUSSIAN){ + aParseScript("actint/aci_low2.scr","resource/actint/aci_low2.scb"); + acsParseScript("actint/acs_low2.scr","resource/actint/acs_low2.scb"); + } + else { + aParseScript("actint/aci_low.scr","resource/actint/aci_low.scb"); + acsParseScript("actint/acs_low.scr","resource/actint/acs_low.scb"); + } + } + else { + if(lang() == RUSSIAN){ + aParseScript("actint/aci_hi2.scr","resource/actint/aci_hi2.scb"); + acsParseScript("actint/acs_low2.scr","resource/actint/acs_low2.scb"); + } + else { + aParseScript("actint/aci_hi.scr","resource/actint/aci_hi.scb"); + acsParseScript("actint/acs_low.scr","resource/actint/acs_low.scb"); + } + } +#endif + a_calc_tables(); + + if(!NetworkON){ + aciUpdateCurCredits(ACI_STARTUP_CREDITS + beebos); + } + else { + aciDisableParametersMenu(); + } + +#ifdef _ACI_LOGFILE_ + aScrDisp -> logFile.open(aciLogFileName,XS_OUT); + aScrDisp -> logFile < "actIntDispatcher Log File...\r\n"; + aScrDisp -> logFile.close(); +#endif + curMatrixID = 0; + + aciXConv = new XBuffer; + + aciInitWorldIDs(); + aLoadFonts(); + aScrDisp -> init_prompt(); + aScrDisp -> init(); + + aInitFlag = 1; + aMS_init(); + +#ifdef _GENERATE_MATRIX_SHAPES_ + invMatrix* p = (invMatrix*)aScrDisp -> matrixList -> last; + while(p){ + p -> generate_shape(); + p -> generate_floor(); + p = (invMatrix*)p -> prev; + } +#ifdef _GENERATE_EXIT_ + ErrH.Abort("Done..."); +#endif +#endif +#ifdef _GENERATE_iMATRIX_SHAPES_ + aci_CellSize = aCellSize; + aCellSize = iCellSize; + build_cell_frame(); + invMatrix* p = (invMatrix*)aScrDisp -> i_matrixList -> last; + while(p){ + p -> generate_shape(); + p -> generate_floor(); + p = (invMatrix*)p -> prev; + } + aCellSize = aci_CellSize; + build_cell_frame(); +#ifdef _GENERATE_EXIT_ + ErrH.Abort("Done..."); +#endif +#endif + actIntPal = new unsigned char[768]; + if(!aciItmTextQueue) aciItmTextQueue = new invItem*[ACI_ITEM_QUEUE_MAX]; + +#ifdef _FULLSCREEN_MODE_ + aScrDisp -> send_event(EV_FULLSCR_CHANGE); +#endif + +/* +#ifdef _GENERATE_ITEM_DATA_ + aScrDisp -> save_items(); +#ifdef _GENERATE_EXIT_ + ErrH.Abort("Done..."); +#endif +#endif +*/ + +#ifdef _ACTINT_MEMSTAT_ + aciDetectLeaks(); + aMemStatFile.close(); +#endif +} + +void aRedraw(void) +{ + aScrDisp -> flags &= ~AS_FULL_REDRAW; + aScrDisp -> redraw(); +} + +void actIntQuant(void) +{ + actintActiveFlag = 1; + aScrDisp -> KeyQuant(); + aScrDisp -> EventQuant(); +} + +void aLoadFonts(void) +{ + int i; + XBuffer XBuf; + XStream fh; + +#ifdef _ACI_BML_FONTS_ + if(!aScrFonts) + aScrFonts = new aciFont*[AS_NUM_FONTS]; +#else + int sz; + char* buf; + if(!aScrFonts) + aScrFonts = new iScreenFont*[AS_NUM_FONTS]; +#endif + + for(i = 0; i < AS_NUM_FONTS; i ++){ + XBuf.init(); + XBuf < "resource/actint/fonts/sfont"; + if(i < 10) + XBuf < "0"; + +#ifdef _ACI_BML_FONTS_ + XBuf <= i < ".bml"; + aScrFonts[i] = new aciFont; + aScrFonts[i] -> load(XBuf.GetBuf()); + aScrFonts[i] -> calc_offs(); +#else + XBuf <= i < ".fnt"; + fh.open(XBuf,XS_IN); + sz = fh.size(); + + buf = new char[sz]; + fh.read(buf,sz); + fh.close(); + + aScrFonts[i] = new iScreenFont(buf,sz); +#endif + + } +} + +void aLoadFonts32(void) +{ + int i; + XBuffer XBuf; + XStream fh; + + if(!aScrFonts32) + aScrFonts32 = new aciFont*[AS_NUM_FONTS_32]; + + for(i = 0; i < AS_NUM_FONTS_32; i ++){ + XBuf.init(); + XBuf < "resource/actint/fonts/cfont"; + if(i < 10) + XBuf < "0"; + + XBuf <= i < ".bml"; + aScrFonts32[i] = new aciFont; + aScrFonts32[i] -> flags |= ACI_RANGE_FONT; + + aScrFonts32[i] -> load(XBuf.GetBuf()); + aScrFonts32[i] -> calc_offs(); + + } + XGR_SetTextOutFnc(aOutText32); + XGR_SetTextXFnc(aTextWidth32); + XGR_SetTextYFnc(aTextHeight32); +} + +void aFreeFonts(void) +{ + int i; + for(i = 0; i < AS_NUM_FONTS; i ++){ + delete aScrFonts[i]; + } + delete aScrFonts; + aScrFonts = NULL; +/* + for(i = 0; i < AS_NUM_FONTS_32; i ++){ + delete aScrFonts32[i]; + } + delete aScrFonts32; + aScrFonts32 = NULL; +*/ +} + +void aPutNum(int x,int y,int font,int color,int str,int bsx,unsigned char* buf,int space) +{ + char* p; + static XBuffer XBuf; + + XBuf.init(); + XBuf <= str; + p = XBuf.GetBuf(); + + aPutStr(x,y,font,color,(unsigned char*)p,bsx,buf,space); +} + +int aStrLen(unsigned char* str,int font,int space) +{ + int s,sz = strlen((char*)str),len = 0; + for(s = 0; s < sz; s ++) + len += aScrFonts[font] -> SizeX - (aScrFonts[font] -> LeftOffs[str[s]] + aScrFonts[font] -> RightOffs[str[s]]) + space; + return len; +} + +int aStrLen32(void* str,int font,int space) +{ + int s,sz,len = 0; + + unsigned char* str_buf = (unsigned char*)str; + sz = strlen((char*)str_buf); + for(s = 0; s < sz; s ++) + len += aScrFonts32[font] -> SizeX - (aScrFonts32[font] -> LeftOffs[str_buf[s]] + aScrFonts32[font] -> RightOffs[str_buf[s]]) + space; + //printf("aStrLen32: %s %d %d %d -> %d\n", str_buf, sz, font, space, len); + return len; +} + +int aStrHeight(int font) +{ + return aScrFonts[font] -> SizeY; +} + +int aStrHeight32(int font) +{ + return aScrFonts32[font] -> SizeY; +} + +#ifdef _ACI_BML_FONTS_ +#define ACI_COLOR_MASK 0xFF +void aPutStr32(int x,int y,int font,int color,int color_size,void* str,int bsx,void* buf,int space) +{ + int s,xs,ys,offs = 0,sz = strlen((char*)str),X = 0,col,col_sz,col1,col2,col_sz1,col_sz2; + int buf_offs = 0; + + unsigned char* str_buf; + + if(aScrFonts32[font] == NULL) + ErrH.Abort("MISSING FONT..."); + + col1 = color & 0xFF; + col2 = (color >> 16) & 0xFF; + + col_sz1 = color_size & 0xFF; + col_sz2 = (color_size >> 16) & 0xFF; + + unsigned char* p = aScrFonts32[font] -> data; + xs = aScrFonts32[font] -> SizeX; + ys = aScrFonts32[font] -> SizeY; + + str_buf = (unsigned char*)str; + + X = x; + + for(s = 0; s < sz; s ++){ + buf_offs = 0; + X -= aScrFonts32[font] -> LeftOffs[str_buf[s]]; + + offs = xs * ys * str_buf[s]; + if(col2){ + if((str_buf[s] >= 48 && str_buf[s] <= 57) || str_buf[s] == 36){ + col = col2; + col_sz = col_sz2; + } + else { + col = col1; + col_sz = col_sz1; + } + } + else { + col = col1; + col_sz = col_sz1; + } + aciPutBufSpr(X,y,xs,ys,bsx,p + offs,buf,col,col_sz); + X += xs + space - aScrFonts32[font] -> RightOffs[str_buf[s]]; + } +} + +void aPutStr(int x,int y,int font,int color,unsigned char* str,int bsx,unsigned char* buf,int space) +{ + int i,j,s,xs,ys,offs = 0,sz = strlen((char*)str),X = 0,col1,col2,col3,col4; + int buf_index = 0,buf_offs = 0; + + col1 = color & ACI_COLOR_MASK; + col2 = (color >> 8) & ACI_COLOR_MASK; + + col3 = (color >> 16) & ACI_COLOR_MASK; + col4 = (color >> 24) & ACI_COLOR_MASK; + + if(aScrFonts[font] == NULL) + ErrH.Abort("MISSING FONT..."); + + unsigned char* p = aScrFonts[font] -> data; + xs = aScrFonts[font] -> SizeX; + ys = aScrFonts[font] -> SizeY; + + buf_index = x + y * bsx; + + if(col2){ + for(s = 0; s < sz; s ++){ + buf_offs = 0; + offs = ys * str[s]; + + X -= aScrFonts[font] -> LeftOffs[str[s]]; + + offs = xs * ys * str[s]; + if((col3 || col4) && ((str[s] >= 48 && str[s] <= 57) || str[s] == 36)){ + for(i = 0; i < ys; i ++){ + for(j = 0; j < xs; j ++){ + switch(p[offs + j]){ + case 1: + buf[X + j + buf_index + buf_offs] = col3; + break; + case 2: + buf[X + j + buf_index + buf_offs] = col4; + break; + } + } + offs += xs; + buf_offs += bsx; + } + } + else { + for(i = 0; i < ys; i ++){ + for(j = 0; j < xs; j ++){ + switch(p[offs + j]){ + case 1: + buf[X + j + buf_index + buf_offs] = col1; + break; + case 2: + buf[X + j + buf_index + buf_offs] = col2; + break; + } + } + offs += xs; + buf_offs += bsx; + } + } + X += xs + space - aScrFonts[font] -> RightOffs[str[s]]; + } + } + else { + for(s = 0; s < sz; s ++){ + buf_offs = 0; + offs = ys * str[s]; + + X -= aScrFonts[font] -> LeftOffs[str[s]]; + + offs = xs * ys * str[s]; + if(col3 && ((str[s] >= 48 && str[s] <= 57) || str[s] == 36)){ + for(i = 0; i < ys; i ++){ + for(j = 0; j < xs; j ++){ + switch(p[offs + j]){ + case 1: + buf[X + j + buf_index + buf_offs] = col3; + break; + } + } + offs += xs; + buf_offs += bsx; + } + } + else { + for(i = 0; i < ys; i ++){ + for(j = 0; j < xs; j ++){ + switch(p[offs + j]){ + case 1: + buf[X + j + buf_index + buf_offs] = col1; + break; + } + } + offs += xs; + buf_offs += bsx; + } + } + X += xs + space - aScrFonts[font] -> RightOffs[str[s]]; + } + } +} + +void aOutStr(int x,int y,int font,int color,unsigned char* str,int space) +{ + int i,j,s,xs,ys,offs = 0,sz = strlen((char*)str),X = 0,Y = 0,col1,col2; + + unsigned char* palBuf = palbuf; + + col1 = color & ACI_COLOR_MASK; + col2 = (color >> 8) & ACI_COLOR_MASK; + + if(aScrFonts[font] == NULL) + ErrH.Abort("MISSING FONT..."); + + unsigned char* p = aScrFonts[font] -> data; + xs = aScrFonts[font] -> SizeX; + ys = aScrFonts[font] -> SizeY; + + X = x; + + if(col2){ + for(s = 0; s < sz; s ++){ + offs = ys * str[s]; + + X -= aScrFonts[font] -> LeftOffs[str[s]]; + + offs = xs * ys * str[s]; + for(i = 0; i < ys; i ++){ + Y = y + i; + for(j = 0; j < xs; j ++){ + switch(p[offs + j]){ + case 1: + XGR_SetPixel(X + j,Y,col1); + break; + case 2: + XGR_SetPixel(X + j,Y,col2); + break; + } + } + offs += xs; + } + X += xs + space - aScrFonts[font] -> RightOffs[str[s]]; + } + } + else { + for(s = 0; s < sz; s ++){ + offs = ys * str[s]; + + X -= aScrFonts[font] -> LeftOffs[str[s]]; + + offs = xs * ys * str[s]; + for(i = 0; i < ys; i ++){ + Y = y + i; + for(j = 0; j < xs; j ++){ + switch(p[offs + j]){ + case 1: + XGR_SetPixel(X + j,Y,col1); + break; + } + } + offs += xs; + } + X += xs + space - aScrFonts[font] -> RightOffs[str[s]]; + } + } +} + +void aPutChar(int x,int y,int font,int color,int str,int bsx,int bsy,unsigned char* buf) +{ + int i,j,xs,ys,offs = 0,X = 0,col1,col2; + int buf_index = 0,buf_offs = 0; + + col1 = color & ACI_COLOR_MASK; + col2 = (color >> 8) & ACI_COLOR_MASK; + + if(aScrFonts[font] == NULL) + ErrH.Abort("MISSING FONT..."); + + unsigned char* p = aScrFonts[font] -> data; + xs = aScrFonts[font] -> SizeX; + ys = aScrFonts[font] -> SizeY; + + buf_index = x + y * bsx; + + buf_offs = 0; + offs = xs * ys * str; + + if(col2){ + for(i = 0; i < ys; i ++){ + for(j = 0; j < xs; j ++){ + switch(p[offs + j]){ + case 1: + buf[X + j + buf_index + buf_offs] = col1; + break; + case 2: + buf[X + j + buf_index + buf_offs] = col2; + break; + } + } + offs += xs; + buf_offs += bsx; + } + } + else { + for(i = 0; i < ys; i ++){ + for(j = 0; j < xs; j ++){ + switch(p[offs + j]){ + case 1: + buf[X + j + buf_index + buf_offs] = col1; + break; + } + } + offs += xs; + buf_offs += bsx; + } + } +} +#else +void aPutStr(int x,int y,int font,int color,unsigned char* str,int bsx,int bsy,unsigned char* buf,int space) +{ + int i,j,s,xs,ys,offs = 0,sz = strlen((char*)str),X = 0,col = color; + int buf_index = 0,buf_offs = 0; + + if(aScrFonts[font] == NULL) + ErrH.Abort("MISSING FONT..."); + + char* p = aScrFonts[font] -> data; + xs = aScrFonts[font] -> SizeX; + ys = aScrFonts[font] -> SizeY; + + buf_index = x + y * bsx; + + for(s = 0; s < sz; s ++){ + buf_offs = 0; + offs = ys * str[s]; + + col = color; + + X -= aScrFonts[font] -> LeftOffs[str[s]]; + + offs = ys * str[s]; + for(i = 0; i < ys; i ++){ + for(j = 0; j < xs; j ++){ + if(p[offs] & (1 << (7 - j))) + buf[X + j + buf_index + buf_offs] = col; + } + offs ++; + buf_offs += bsx; + } + X += xs + space - aScrFonts[font] -> RightOffs[str[s]]; + } +} + +void aPutChar(int x,int y,int font,int color,int str,int bsx,int bsy,unsigned char* buf) +{ + int i,j,xs,ys,offs = 0,X = 0,col = color; + int buf_index = 0,buf_offs = 0; + + if(aScrFonts[font] == NULL) + ErrH.Abort("MISSING FONT..."); + + char* p = aScrFonts[font] -> data; + xs = aScrFonts[font] -> SizeX; + ys = aScrFonts[font] -> SizeY; + + buf_index = x + y * bsx; + + buf_offs = 0; + offs = ys * str; + + col = color; + + offs = ys * str; + for(i = 0; i < ys; i ++){ + for(j = 0; j < xs; j ++){ + if(p[offs] & (1 << (7 - j))) + buf[X + j + buf_index + buf_offs] = col; + } + offs ++; + buf_offs += bsx; + } +} +#endif + +void aKeyTrap(SDL_Event *k) +{ + if(aInitFlag){ + KeyBuf -> put(k,CUR_KEY_PRESSED); + } +} + +void aKeyQuant(void) +{ + aScrDisp -> KeyQuant(); +} + +void aKeyInit(void) +{ + loadMouseFrames(); + KeyBuf = new KeyBuffer; + set_mouse(); +} + +void aMS_init(void) +{ + XGR_MouseSetPressHandler(XGM_LEFT_BUTTON,aMS_LeftPress); + XGR_MouseSetUnPressHandler(XGM_LEFT_BUTTON,aMS_LeftUnpress); + + XGR_MouseSetPressHandler(XGM_RIGHT_BUTTON,aMS_RightPress); + XGR_MouseSetUnPressHandler(XGM_RIGHT_BUTTON,aMS_RightUnpress); + + XGR_MouseSetMoveHandler(aMS_Movement); + + aciMouseFlagL = aciMouseFlagR = 0; +} + +void aMS_LeftPress(int fl, int x, int y) +{ + if (aScrDisp==NULL) { + return; + } + aScrDisp -> flags |= aMS_LEFT_PRESS; + iMouseX = x; + iMouseY = y; + + aciMouseFlagL = 1; + + XGR_MouseSetSeq(0,1,XGM_PLAY_ONCE,1); +} + +void aMS_Movement(int fl, int x, int y) +{ + if (aScrDisp==NULL) { + return; + } + aScrDisp -> flags |= aMS_MOVED; + iMouseX = x; + iMouseY = y; +} + +void aMS_LeftUnpress(int fl, int x, int y) +{ + iMouseX = x; + iMouseY = y; + + aciMouseFlagL = 0; + + XGR_MouseSetSeq(XGR_MouseCurFrame,XGR_MouseNumFrames - 1,XGM_PLAY_ONCE,1); +} + +void aMS_RightPress(int fl, int x, int y) +{ + if (aScrDisp==NULL) { + return; + } + aScrDisp -> flags |= aMS_RIGHT_PRESS; + iMouseX = x; + iMouseY = y; + + aciMouseFlagR = 1; + + XGR_MouseSetSeq(0,1,XGM_PLAY_ONCE,1); +} + +void aMS_RightUnpress(int fl, int x, int y) +{ + iMouseX = x; + iMouseY = y; + + aciMouseFlagR = 0; + + XGR_MouseSetSeq(XGR_MouseCurFrame,XGR_MouseNumFrames - 1,XGM_PLAY_ONCE,1); +} + +#define MAP_COLOR 200 +#define MAP_COLOR1 166 +#define MAP_COLOR2 143 +#define MAP_COLOR3 111 + +#define MAP_PTR_X 3 +#define MAP_PTR_X2 1 +#define MAP_PTR_XL 6 +#define MAP_PTR_XL2 3 + +#define MAP_CUR_VANGER 0 +#define MAP_VANGER 1 +#define MAP_INSECT 2 + +static int aciMapVngColors[11] = { 254, 143, 156, 175, 200, 200, 239, 230, 224, 254, 156 }; + +void show_map(int x,int y,int sx,int sy) +{ + int i,index,m_index,cx,cy,y0,x_index = 0,_x = 0,_y = 0,vy,sx2,sy2; + int scr_x,scr_y,dx,scr_x0; + + unsigned char* ptr; + bmlObject* p = aScrDisp -> mapObj; + + cx = (ViewX * p -> SizeX) >> MAP_POWER_X; + cy = (ViewY * p -> SizeY) >> MAP_POWER_Y; + + sx2 = sx / 2; + sy2 = sy / 2; + + vy = sy * ((1 << MAP_POWER_Y) / p -> SizeY) / 2; + + y0 = cy - sy2; + if(y0 < 0) y0 += p -> SizeY; + if(y0 >= p -> SizeY) y0 -= p -> SizeY; + + ptr = new unsigned char[sx * sy]; + memset(ptr,0,sx * sy); + + if(cx < sx2){ + dx = sx2 - cx; + + _y = y0; + index = 0; + m_index = y0 * p -> SizeX + p -> SizeX - dx; + for(i = 0; i < sy; i ++){ + memcpy(ptr + index,p -> frames + m_index,dx); + + index += sx; + m_index += p -> SizeX; + + _y ++; + if(_y >= p -> SizeY){ + m_index = p -> SizeX - dx; + _y = 0; + } + } + + _y = y0; + index = dx; + m_index = y0 * p -> SizeX; + for(i = 0; i < sy; i ++){ + memcpy(ptr + index,p -> frames + m_index,sx - dx); + + index += sx; + m_index += p -> SizeX; + + _y ++; + if(_y >= p -> SizeY){ + m_index = 0; + _y = 0; + } + } + } + else { + if(p -> SizeX - cx < sx2){ + dx = sx2 - (p -> SizeX - cx); + + _y = y0; + index = 0; + m_index = y0 * p -> SizeX + p -> SizeX - (sx - dx); + for(i = 0; i < sy; i ++){ + memcpy(ptr + index,p -> frames + m_index,sx - dx); + + index += sx; + m_index += p -> SizeX; + + _y ++; + if(_y >= p -> SizeY){ + m_index = p -> SizeX - (sx - dx); + _y = 0; + } + } + + _y = y0; + index = sx - dx; + m_index = y0 * p -> SizeX; + for(i = 0; i < sy; i ++){ + memcpy(ptr + index,p -> frames + m_index,dx); + + index += sx; + m_index += p -> SizeX; + + _y ++; + if(_y >= p -> SizeY){ + m_index = 0; + _y = 0; + } + } + } + else { + _y = y0; + index = 0; + m_index = y0 * p -> SizeX + cx - sx2; + int max_frames_size = p->SizeX * p->SizeY * p->Size; + for(i = 0; i < sy; i ++){ + if (m_index + sx >= max_frames_size) { + memcpy(ptr + index, p -> frames + m_index, max_frames_size - m_index); + } else { + memcpy(ptr + index, p -> frames + m_index, sx); + } + + index += sx; + m_index += p -> SizeX; + + _y ++; + if(_y >= p -> SizeY){ + m_index = cx - sx2; + _y = 0; + } + } + } + } + XGR_PutSpr(x,y,sx,sy,ptr,XGR_BLACK_FON); + delete[] ptr; + + _y = 0; + + scr_x = sx2; + scr_y = sy2; + +/* + if(scr_x > MAP_PTR_X && scr_x < sx - MAP_PTR_X && scr_y > MAP_PTR_X && scr_y < sy - MAP_PTR_X) + XGR_Rectangle(x + scr_x - MAP_PTR_X2,y + scr_y - MAP_PTR_X2,MAP_PTR_X,MAP_PTR_X,aciMapVngColors[aciGamerColor],aciMapVngColors[aciGamerColor],XGR_FILLED); +*/ + +#ifdef _ACI_MAP_TESTING_ + index = 2; + for(_y = 0; _y < (1 << MAP_POWER_Y); _y += 256){ + for(_x = 0; _x < (1 << MAP_POWER_X); _x += 256){ + scr_x = -1; + scr_x0 = ((_x * p -> SizeX) >> MAP_POWER_X); + + if(cx < sx2){ + if(p -> SizeX - scr_x0 < dx) + scr_x = scr_x0 - (p -> SizeX - dx); + else { + if(scr_x0 < sx - dx) + scr_x = scr_x0 + dx; + else + scr_x = -1; + } + } + else { + if(p -> SizeX - cx < sx2){ + if(p -> SizeX - scr_x0 < sx - dx) + scr_x = scr_x0 - (p -> SizeX - (sx - dx)); + else { + if(scr_x0 < dx) + scr_x = scr_x0 + (sx - dx); + else + scr_x = -1; + } + } + else { + scr_x = scr_x0 - (cx - sx2); + } + } + scr_y = ((_y * p -> SizeY) >> MAP_POWER_Y) - y0; + if(scr_y < 0) + scr_y += p -> SizeY; + + if(scr_x > MAP_PTR_X && scr_x < sx - MAP_PTR_X && scr_y > MAP_PTR_X && scr_y < sy - MAP_PTR_X){ + switch(index){ + case 1: + XGR_Rectangle(x + scr_x - MAP_PTR_X2,y + scr_y - MAP_PTR_X2,MAP_PTR_X,MAP_PTR_X,MAP_COLOR1,MAP_COLOR1,XGR_FILLED); + break; + case 2: + XGR_SetPixel(x + scr_x,y + scr_y,(_y >> 8) & 255); + break; + case 3: + XGR_Rectangle(x + scr_x - MAP_PTR_X2,y + scr_y - MAP_PTR_X2,MAP_PTR_X,MAP_PTR_X,MAP_COLOR3,MAP_COLOR3,XGR_FILLED); + break; + } + } + } + } +#else + index = getObjectPosition(_x,_y); + while(index != -1){ + if(index){ + scr_x = -1; + scr_x0 = ((_x * p -> SizeX) >> MAP_POWER_X); + + if(cx < sx2){ + if(p -> SizeX - scr_x0 < dx) + scr_x = scr_x0 - (p -> SizeX - dx); + else { + if(scr_x0 < sx - dx) + scr_x = scr_x0 + dx; + else + scr_x = -1; + } + } + else { + if(p -> SizeX - cx < sx2){ + if(p -> SizeX - scr_x0 < sx - dx) + scr_x = scr_x0 - (p -> SizeX - (sx - dx)); + else { + if(scr_x0 < dx) + scr_x = scr_x0 + (sx - dx); + else + scr_x = -1; + } + } + else { + scr_x = scr_x0 - (cx - sx2); + } + } + scr_y = ((_y * p -> SizeY) >> MAP_POWER_Y) - y0; + if(scr_y < 0) + scr_y += p -> SizeY; + + if(scr_x > MAP_PTR_X && scr_x < sx - MAP_PTR_X && scr_y > MAP_PTR_X && scr_y < sy - MAP_PTR_X){ + switch(index){ + case 1: + XGR_Rectangle(x + scr_x - MAP_PTR_X2,y + scr_y - MAP_PTR_X2,MAP_PTR_X,MAP_PTR_X,MAP_COLOR1,MAP_COLOR1,XGR_FILLED); + break; +#ifdef _ACI_SHOW_BUGS_ON_MAP_ + case 2: + XGR_SetPixel(x + scr_x,y + scr_y,MAP_COLOR2); + break; +#endif + case 3: + XGR_Rectangle(x + scr_x - MAP_PTR_X2,y + scr_y - MAP_PTR_X2,MAP_PTR_X,MAP_PTR_X,MAP_COLOR3,MAP_COLOR3,XGR_FILLED); + break; + case 4: + XGR_Rectangle(x + scr_x - MAP_PTR_X2,y + scr_y - MAP_PTR_X2,MAP_PTR_X,MAP_PTR_X,aciMapVngColors[0],aciMapVngColors[0],XGR_FILLED); + break; + case 5: + XGR_Rectangle(x + scr_x - MAP_PTR_X2,y + scr_y - MAP_PTR_X2,MAP_PTR_X,MAP_PTR_X,aciMapVngColors[1],aciMapVngColors[1],XGR_FILLED); + break; + case 6: + XGR_Rectangle(x + scr_x - MAP_PTR_X2,y + scr_y - MAP_PTR_X2,MAP_PTR_X,MAP_PTR_X,aciMapVngColors[2],aciMapVngColors[2],XGR_FILLED); + break; + case 7: + XGR_Rectangle(x + scr_x - MAP_PTR_X2,y + scr_y - MAP_PTR_X2,MAP_PTR_X,MAP_PTR_X,aciMapVngColors[3],aciMapVngColors[3],XGR_FILLED); + break; + case 8: + if(scr_x > MAP_PTR_XL && scr_x < sx - MAP_PTR_XL && scr_y > MAP_PTR_XL && scr_y < sy - MAP_PTR_XL) + XGR_Rectangle(x + scr_x - MAP_PTR_XL2,y + scr_y - MAP_PTR_XL2,MAP_PTR_XL,MAP_PTR_XL,aciMapVngColors[3],aciMapVngColors[0],XGR_FILLED); + break; + case 9: + if(scr_x > MAP_PTR_XL && scr_x < sx - MAP_PTR_XL && scr_y > MAP_PTR_XL && scr_y < sy - MAP_PTR_XL) + XGR_Rectangle(x + scr_x - MAP_PTR_XL2,y + scr_y - MAP_PTR_XL2,MAP_PTR_XL,MAP_PTR_XL,aciMapVngColors[3],aciMapVngColors[1],XGR_FILLED); + break; + case 10: + if(scr_x > MAP_PTR_XL && scr_x < sx - MAP_PTR_XL && scr_y > MAP_PTR_XL && scr_y < sy - MAP_PTR_XL) + XGR_Rectangle(x + scr_x - MAP_PTR_XL2,y + scr_y - MAP_PTR_XL2,MAP_PTR_XL,MAP_PTR_XL,aciMapVngColors[3],aciMapVngColors[2],XGR_FILLED); + break; + case 11: + XGR_Rectangle(x + scr_x - MAP_PTR_X2,y + scr_y - MAP_PTR_X2,MAP_PTR_X,MAP_PTR_X,aciMapVngColors[5],aciMapVngColors[5],XGR_FILLED); + break; + case 12: + XGR_Rectangle(x + scr_x - MAP_PTR_X2,y + scr_y - MAP_PTR_X2,MAP_PTR_X,MAP_PTR_X,aciMapVngColors[6],aciMapVngColors[6],XGR_FILLED); + break; + case 13: + XGR_Rectangle(x + scr_x - MAP_PTR_X2,y + scr_y - MAP_PTR_X2,MAP_PTR_X,MAP_PTR_X,aciMapVngColors[7],aciMapVngColors[7],XGR_FILLED); + break; + case 14: + XGR_Rectangle(x + scr_x - MAP_PTR_X2,y + scr_y - MAP_PTR_X2,MAP_PTR_X,MAP_PTR_X,aciMapVngColors[8],aciMapVngColors[8],XGR_FILLED); + break; + case 15: + XGR_Rectangle(x + scr_x - MAP_PTR_X2,y + scr_y - MAP_PTR_X2,MAP_PTR_X,MAP_PTR_X,aciMapVngColors[9],aciMapVngColors[9],XGR_FILLED); + break; + case 16: + XGR_Rectangle(x + scr_x - MAP_PTR_X2,y + scr_y - MAP_PTR_X2,MAP_PTR_X,MAP_PTR_X,aciMapVngColors[10],aciMapVngColors[10],XGR_FILLED); + break; + } + } + } + index = getObjectPosition(_x,_y); + } +#endif +} + +void load_map_bmp(int num) +{ + aScrDisp -> mapObj -> free(); + if(aScrDisp -> wMap -> world_ids[num] == -1 || !(aScrDisp -> map_names[aScrDisp -> wMap -> world_ids[num]])) ErrH.Abort("Map BMP not present..."); + aScrDisp -> mapObj -> load(aScrDisp -> map_names[aScrDisp -> wMap -> world_ids[num]],1); + aScrDisp -> unlock(); + aciPrepareWorldsMenu(); + aciChangeWorld(num); +} + +void change_screen(int mode) +{ + aScrDisp -> change_ibs(mode); + aScrDisp -> flags &= ~AS_FULL_REDRAW; + set_map_to_ibs(aScrDisp->curIbs); +} + +void aciSendEvent2actint(int code,actintItemData* p,int data) +{ + aScrDisp -> send_event(code,data,p); +} + +actintItemData* aciGetLast(void) +{ + invItem* itm; + invItem* p = (invItem*)aScrDisp -> curMatrix -> items -> last; + itm = p; + while(p){ + if(p -> dropCount > itm -> dropCount) + itm = p; + + p = (invItem*)p -> prev; + } + if(itm) + return itm -> item_ptr; + return NULL; +} + +const double _PI128 = 3.14/128.0; +void a_calc_tables(void) +{ + int i; + double phi; + if(!aSinTable && !aCosTable){ + aSinTable = new int[256]; + aCosTable = new int[256]; + + for(i = 0; i < 256; i ++){ + phi = ((double)i) * _PI128; + aSinTable[i] = (int)(sin(phi) * 256.0); + aCosTable[i] = (int)(cos(phi) * 256.0); + } + } +} + +void a_buf_setpixel(int x,int y,int sx,int sy,int col,unsigned char* buf) +{ + buf[x + y * sx] = col; +} + +void a_buf_line(int x1,int y1,int x2,int y2,int col,int sx,int sy,unsigned char* buf) +{ + int dx,dy,xinc,yinc,err,cnt,index,i_xinc,i_yinc; + + dx = x2 - x1; + dy = y2 - y1; + + xinc = (dx > 0) ? 1 : (dx < 0) ? (-1) : 0; + yinc = (dy > 0) ? 1 : (dy < 0) ? (-1) : 0; + + i_xinc = xinc; + i_yinc = (dy > 0) ? sx : (dy < 0) ? (-sx) : 0; + + dx = abs(dx); + dy = abs(dy); + index = x1 + y1 * sx; + if(dx > dy){ + err = dx/2; + cnt = dx + 1; + while(cnt--){ + buf[index] = col; + x1 += xinc; + index += i_xinc; + + err += dy; + if(err >= dx){ + if(cnt) + buf[index] = col; + err -= dx; + y1 += yinc; + index += i_yinc; + } + } + } + else { + err = dy / 2; + cnt = dy + 1; + while(cnt--){ + buf[index] = col; + y1 += yinc; + index += i_yinc; + err += dx; + if(err >= dy){ + if(cnt) + buf[index] = col; + err -= dy; + x1 += xinc; + index += i_xinc; + } + } + } +} + +void a_buf_line2(int x1,int y1,int x2,int y2,int col,int sx,int sy,unsigned char* buf) +{ + int dx,dy,xinc,yinc,err,cnt,index,i_xinc,i_yinc; + + dx = x2 - x1; + dy = y2 - y1; + + xinc = (dx > 0) ? 1 : (dx < 0) ? (-1) : 0; + yinc = (dy > 0) ? 1 : (dy < 0) ? (-1) : 0; + + i_xinc = xinc; + i_yinc = (dy > 0) ? sx : (dy < 0) ? (-sx) : 0; + + dx = abs(dx); + dy = abs(dy); + index = x1 + y1 * sx; + if(dx > dy){ + err = dx/2; + cnt = dx + 1; + while(cnt--){ + buf[index] = col; + x1 += xinc; + index += i_xinc; + + err += dy; + if(err >= dx){ + err -= dx; + y1 += yinc; + index += i_yinc; + } + } + } + else { + err = dy / 2; + cnt = dy + 1; + while(cnt--){ + buf[index] = col; + y1 += yinc; + index += i_yinc; + err += dx; + if(err >= dy){ + err -= dy; + x1 += xinc; + index += i_xinc; + } + } + } +} + +void fill_buf(int fx,int fy,int src_col,int dest_col,int sx,int sy,unsigned char* buf) +{ + int x,y,flag = 1,index; + + buf[fx + fy * sx] = dest_col; + + while(flag){ + index = 0; + flag = 0; + for(y = 0; y < sy; y ++){ + for(x = 0; x < sx; x ++){ + if(buf[index] == src_col){ + if(x && buf[index - 1] == dest_col){ + flag = 1; + buf[index] = dest_col; + } + if(x < sx - 1 && buf[index + 1] == dest_col){ + flag = 1; + buf[index] = dest_col; + } + if(y && buf[index - sx] == dest_col){ + flag = 1; + buf[index] = dest_col; + } + if(y < sy - 1 && buf[index + sx] == dest_col){ + flag = 1; + buf[index] = dest_col; + } + } + index ++; + } + } + } +} + +void free_cell_frame(void) +{ + delete[] aCellFrame; +} + +void build_cell_frame(void) +{ + int dx = aCellSize; + int dxx = dx * dx; + int dx2 = dx >> 1; + int dx4 = dx >> 2; + + unsigned char* cell = new unsigned char[(dx + 1) * (dx + 1)]; + memset(cell,0,(dx + 1) * (dx + 1)); +/* + a_buf_line(dx2,0,dx,dx4,1,dx + 1,dx + 1,cell); + a_buf_line(dx,dx4,dx,dx2 + dx4,1,dx + 1,dx + 1,cell); + a_buf_line(dx,dx2 + dx4,dx2,dx,1,dx + 1,dx + 1,cell); + a_buf_line(dx2,dx,0,dx2 + dx4,1,dx + 1,dx + 1,cell); + a_buf_line(0,dx2 + dx4,0,dx4,1,dx + 1,dx + 1,cell); + a_buf_line(0,dx4,dx2,0,1,dx + 1,dx + 1,cell); +*/ + a_buf_line(dx2,0,dx,dx4,1,dx + 1,dx + 1,cell); + a_buf_line(0,dx - dx4,dx2,dx,1,dx + 1,dx + 1,cell); + + a_buf_line(dx,dx4,dx,dx - dx4,1,dx + 1,dx + 1,cell); + a_buf_line(0,dx - dx4,0,dx4,1,dx + 1,dx + 1,cell); + + a_buf_line(dx,dx - dx4,dx2,dx,1,dx + 1,dx + 1,cell); + a_buf_line(dx2,0,0,dx4,1,dx + 1,dx + 1,cell); + + fill_buf(dx2,dx2,0,2,dx + 1,dx + 1,cell); + + aCellFrame = cell; +} + +void swap_buf_col(int src,int dest,int sx,int sy,unsigned char* buf) +{ + int i,j,index = 0; + for(i = 0; i < sy; i ++){ + for(j = 0; j < sx; j ++){ + if(buf[index] == src) buf[index] = dest; + index ++; + } + } +} + +void mem_putspr(int x,int y,int sx,int sy,int bsx,int bsy,unsigned char* src,unsigned char* dest) +{ + int i,j,index = 0,b_index = 0; + + index = x + y * bsx; + for(i = 0; i < sy; i ++){ + for(j = 0; j < sx; j ++){ + if(src[b_index]) + dest[index + j] = src[b_index]; + b_index ++; + } + index += bsx; + } +} + +void mem_putspr_h(int x,int y,int sx,int sy,int bsx,int bsy,unsigned char* src,unsigned char* dest) +{ + int i,j,index = x + y * bsx,b_index = 0; + int h,h1; + + for(i = 0; i < sy; i ++){ + for(j = 0; j < sx; j ++){ + if(src[b_index]){ + h1 = dest[index + j]; + h = src[b_index]; + if(h > h1) + dest[index + j] = h; + } + b_index ++; + } + index += bsx; + } +} + +void aci_iScreenQuant(void) +{ + aScrDisp -> iKeyQuant(); + aScrDisp -> EventQuant(); + + aciML_D -> quant(); + + aScrDisp -> i_redraw(); + aScrDisp -> i_flush(); +} + +void aci_SendEvent(int cd,int dt) +{ + aScrDisp -> send_event(cd,dt); +} + +void aci_LocationQuantPrepare(void) +{ + aciSpeechBegLocked = aciSpeechEndLocked = 0; + aciSpeechStarted = aciEndSpeech = 0; + aciEscaveDead = aciEscaveEmpty = 0; + aciBreathFlag = 0; + + aScrDisp -> i_init(); + iScrQuantPrepare(); +} + +void aci_LocationQuantFinit(void) +{ + iScrQuantFinit(); + aScrDisp -> i_finit(); + aciKillLinks(); + aScrDisp -> flags &= ~AS_FULL_REDRAW; + aciAutoRun = iGetOptionValue(iAUTO_ACCELERATION); +} + +void loadMouseFrames(void) +{ + XStream fh; + if(actintLowResFlag) + fh.open("resource/actint/640x480/mouse.bml",XS_IN); + else + fh.open("resource/actint/800x600/mouse.bml",XS_IN); + fh > aMouseSizeX > aMouseSizeY > aMouseSize; + aMouseFrames = new unsigned char[aMouseSizeX * aMouseSizeY * aMouseSize]; + fh.read(aMouseFrames,aMouseSizeX * aMouseSizeY * aMouseSize); + fh.close(); + + fh.open("resource/iscreen/mouse.bml"); + fh > iMouseSizeX > iMouseSizeY > iMouseSize; + iMouseFrames = new unsigned char[iMouseSizeX * iMouseSizeY * iMouseSize]; + fh.read(iMouseFrames,iMouseSizeX * iMouseSizeY * iMouseSize); + fh.close(); + + MouseSize2 = iMouseSize/2; +} + +int aciReInitItem(actintItemData* p) +{ + int id; + invItem* it = aScrDisp -> get_item_ptr(p -> type); + if(!it) { + std::cout<<"aciReInitItem !it p:"< item_ptr = p; + p -> actintOwner = it; + + if(it -> slotType != -1){ + id = aScrDisp -> curMatrix -> get_item_slot(it); + if(id != -1) + aciSendEvent2itmdsp(ACI_ACTIVATE_ITEM,p,id); + } + return 1; +} + +int aciReInitItemXY(actintItemData* p,int x,int y) +{ + int id; + invItem* it = aScrDisp->get_item_ptr_xy(p->type, x, y); + if(!it) { + std::cout<<"aciReInitItemXY !it p:"< item_ptr = p; + p -> actintOwner = it; + + if(it -> slotType != -1){ + id = aScrDisp -> curMatrix -> get_item_slot(it); + if(id != -1) + aciSendEvent2itmdsp(ACI_ACTIVATE_ITEM,p,id); + } + return 1; +} + +void aciKillLinks(void) +{ + if(!aScrDisp -> curMatrix) return; + invItem* p = (invItem*)aScrDisp -> curMatrix -> items -> last; + while(p){ + p -> item_ptr = NULL; + p = (invItem*)p -> prev; + } +} + +void aciAutoMoveItems(void) +{ + int i,x,y,sz; + invItem* p,*p1; + if(!aScrDisp -> curMatrix || !aScrDisp -> secondMatrix) + return; + + p = (invItem*)aScrDisp -> curMatrix -> items -> last; + sz = aScrDisp -> curMatrix -> items -> Size; + for(i = 0; i < sz; i ++){ + p1 = (invItem*)p -> prev; + x = p -> MatrixX; + y = p -> MatrixY; + aScrDisp -> curMatrix -> remove_item(p); + if(!aScrDisp -> secondMatrix -> auto_put_item(p)){ + aScrDisp -> curMatrix -> put_item(x,y,p); + } + else { + ((uvsActInt*)p -> uvsDataPtr) -> pos_x = p -> MatrixX; + ((uvsActInt*)p -> uvsDataPtr) -> pos_y = p -> MatrixY; + } + p = p1; + } + SOUND_DROP(); + aScrDisp -> flags &= ~AS_FULL_REDRAW; +} + +void aciSetMechName(void) +{ + iScreenObject* obj; + iStringElement* str; + if(!aScrDisp -> secondMatrix) return; + + obj = (iScreenObject*)aScrDisp -> curLocData -> objList[ACI_MECHOS_ID_OBJ]; + str = (iStringElement*)aScrDisp -> curLocData -> objList[ACI_MECHOS_ID_STR]; + if(!obj || !str) return; + + if(aScrDisp -> secondMatrix -> mech_name) + strcpy(str -> string,aScrDisp -> secondMatrix -> mech_name); + else + strcpy(str -> string," "); + + str -> SizeX = str -> SizeY = 0; + str -> lX = str -> lY = 0; + obj -> init(); +} + +uvsActInt* aciGetMechos(int id) +{ + uvsActInt* p = GMechos; + + while(p){ + if(p -> type == id) + return p; + p = (uvsActInt*)p -> next; + } + return NULL; +} + +uvsActInt* aciGetGamerItem(int id) +{ + uvsActInt* p = GGamer; + + while(p){ + if(p -> type == id) + return p; + p = (uvsActInt*)p -> next; + } + return NULL; +} + +uvsActInt* aciGetShopItem(int id) +{ + uvsActInt* p = GItem; + + while(p){ + if(p -> type == id) + return p; + p = (uvsActInt*)p -> next; + } + return NULL; +} + +void aciSell_Item(invItem* p) +{ + int cr; + invItem* it = aScrDisp -> get_iitem(p -> ID); + uvsActInt* ptr = (uvsActInt*)p -> uvsDataPtr; + listElem* el = (listElem*)GItem; + + if(!ptr) ErrH.Abort("Bad sell item..."); + + ptr -> delink(GGamer); + ptr -> link(el); + GItem = (uvsActInt*)el; + + if(!(p -> flags & INV_ITEM_NO_PAY)) + uvsActIntSell(ptr); + + if(!it -> uvsDataPtr && (!aScrDisp -> curLocData -> ExcludeItems[p -> ID] || (p -> flags & INV_ITEM_NO_PAY))){ + it -> uvsDataPtr = ptr; + } + + if(!(p -> flags & INV_ITEM_NO_PAY)){ + cr = aciGetCurCredits(); + cr += ptr -> sell_price; + aciUpdateCurCredits(cr); + } + + aScrDisp -> free_item(p); +} + +void aciSell_Matrix(invMatrix* p) +{ + int cr; + invItem* itm = (invItem*)p -> items -> last,*itm1; + uvsActInt* ptr = (uvsActInt*)p -> uvsDataPtr; + if(!ptr) ErrH.Abort("Bad sell mechos..."); + while(itm){ + itm1 = (invItem*)itm -> prev; + p -> items -> dconnect((iListElement*)itm); + aciSell_Item(itm); + itm = itm1; + } + cr = aciGetCurCredits(); + cr += ptr -> sell_price; + aciUpdateCurCredits(cr); +} + +int aciCheckSellItem(void) +{ + int x = iMouseX; + iScreenObject* p; + iAVIElement* el = (iAVIElement*)aScrDisp -> curLocData -> objList[ACI_MECHOS_AVI_ID]; + if(!el) return 0; + p = (iScreenObject*)el -> owner; + if(p -> owner) x += ((iScreen*)p -> owner) -> ScreenOffs; + if(p -> CheckXY(x,iMouseY)) return 1; + return 0; +} + +void aciInitInfoPanels(void) +{ + InfoPanel* pl; + CounterPanel* cp; + iBitmapElement* el; + fncMenu* mn; + iScreenObject* obj; + iScreen* scr; + iAVIElement* avi; + + el = (iBitmapElement*)aScrDisp -> curLocData -> s_objList[ACI_QUEST_PANEL_ID]; + pl = aScrDisp -> get_info_panel(ACI_QUEST_PANEL); + if(el && pl){ + obj = (iScreenObject*)el -> owner; + scr = (iScreen*)obj -> owner; + + pl -> PosX = obj -> PosX + el -> lX - scr -> ScreenOffs; + pl -> PosY = obj -> PosY + el -> lY; + + pl -> iScreenOwner = el; + pl -> SizeX = el -> bSizeX; + pl -> SizeY = el -> bSizeY; + + pl -> free_list(); + } + el = (iBitmapElement*)aScrDisp -> curLocData -> s_objList[ACI_ANSWER_PANEL_ID]; + pl = aScrDisp -> get_info_panel(ACI_ANSWER_PANEL); + if(el && pl){ + obj = (iScreenObject*)el -> owner; + scr = (iScreen*)obj -> owner; + + pl -> PosX = obj -> PosX + el -> lX - scr -> ScreenOffs; + pl -> PosY = obj -> PosY + el -> lY; + + pl -> iScreenOwner = el; + pl -> SizeX = el -> bSizeX; + pl -> SizeY = el -> bSizeY; + + pl -> free_list(); + pl -> set_redraw(); + } + el = (iBitmapElement*)aScrDisp -> curLocData -> s_objList[ACI_TIME_PANEL_ID]; + pl = aScrDisp -> get_info_panel(ACI_SHOP_TIME_PANEL); + if(el && pl){ + obj = (iScreenObject*)el -> owner; + scr = (iScreen*)obj -> owner; + + pl -> PosX = obj -> PosX + el -> lX - scr -> ScreenOffs; + pl -> PosY = obj -> PosY + el -> lY; + + pl -> iScreenOwner = el; + pl -> SizeX = el -> bSizeX; + pl -> SizeY = el -> bSizeY; + + pl -> free_list(); + pl -> set_redraw(); + } + el = (iBitmapElement*)aScrDisp -> curLocData -> objList[ACI_PRICE_PANEL_ID]; + pl = aScrDisp -> get_info_panel(ACI_PRICE_PANEL); + if(el && pl){ + obj = (iScreenObject*)el -> owner; + scr = (iScreen*)obj -> owner; + + pl -> PosX = obj -> PosX + el -> lX - scr -> ScreenOffs; + pl -> PosY = obj -> PosY + el -> lY; + + pl -> iScreenOwner = el; + pl -> SizeX = el -> bSizeX; + pl -> SizeY = el -> bSizeY; + + pl -> free_list(); + pl -> set_redraw(); + } + el = (iBitmapElement*)aScrDisp -> curLocData -> objList[ACI_INFO_PANEL_ID]; + pl = aScrDisp -> iscr_iP; + if(el && pl){ + obj = (iScreenObject*)el -> owner; + scr = (iScreen*)obj -> owner; + + pl -> PosX = obj -> PosX + el -> lX - scr -> ScreenOffs; + pl -> PosY = obj -> PosY + el -> lY; + + pl -> iScreenOwner = el; + pl -> SizeX = el -> bSizeX; + pl -> SizeY = el -> bSizeY; + + pl -> free_list(); + pl -> set_redraw(); + } + el = (iBitmapElement*)aScrDisp -> curLocData -> objList[ACI_CREDITS_PANEL_ID]; + cp = aScrDisp -> get_icounter(ACI_CREDITS_PANEL); + if(el && cp){ + obj = (iScreenObject*)el -> owner; + scr = (iScreen*)obj -> owner; + + cp -> PosX = obj -> PosX + el -> lX - scr -> ScreenOffs; + cp -> PosY = obj -> PosY + el -> lY; + + cp -> iScreenOwner = el; + cp -> SizeX = el -> bSizeX; + cp -> SizeY = el -> bSizeY; + } + el = (iBitmapElement*)aScrDisp -> curLocData -> s_objList[ACI_QUEST_PANEL_ID]; + mn = aScrDisp -> get_imenu(ACI_QUEST_MENU); + if(aScrDisp -> qMenu && el){ + obj = (iScreenObject*)el -> owner; + scr = (iScreen*)obj -> owner; + + aScrDisp -> qMenu -> data = el; + + aScrDisp -> qMenu -> ScreenX = obj -> PosX + el -> lX - scr -> ScreenOffs; + aScrDisp -> qMenu -> ScreenY = obj -> PosY + el -> lY; + + aScrDisp -> qMenu -> ScreenSizeX = obj -> SizeX; + aScrDisp -> qMenu -> ScreenSizeY = obj -> SizeY; + } + el = (iBitmapElement*)aScrDisp -> curLocData -> objList[ACI_ITEMS_MENU_ID]; + mn = aScrDisp -> get_imenu(SHOP_ITEMS_MENU_ID); + if(mn && el){ + obj = (iScreenObject*)el -> owner; + scr = (iScreen*)obj -> owner; + + mn -> iScreenOwner = el; + + mn -> SizeX = el -> bSizeX; + mn -> SizeY = el -> bSizeY; + + mn -> PosX = obj -> PosX + el -> lX - scr -> ScreenOffs; + mn -> PosY = obj -> PosY + el -> lY; + + aScrDisp -> clear_menu(mn); + } + avi = (iAVIElement*)aScrDisp -> curLocData -> objList[ACI_MECHOS_AVI_ID]; + if(avi){ + obj = (iScreenObject*)avi -> owner; + if(obj -> flags & OBJ_TRIGGER){ + ((iTriggerObject*)obj) -> state = 0; + ((iTriggerObject*)obj) -> trigger_init(); + } + } +} + +void aciInitAviObject(void) +{ + fncMenu* mn; + iScreenObject* obj; + iAVIElement* avi; + + avi = (iAVIElement*)aScrDisp -> curLocData -> objList[ACI_MECHOS_AVI_ID]; + if(avi){ + obj = (iScreenObject*)avi -> owner; + if(obj -> flags & OBJ_TRIGGER){ + ((iTriggerObject*)obj) -> state = 0; + ((iTriggerObject*)obj) -> trigger_init(); + } + } + mn = aScrDisp -> get_imenu(SHOP_ITEMS_MENU_ID); + if(mn) mn -> flags &= ~FM_ACTIVE; + + switch(iEvLineID){ + case MECHOS_LIST_MODE: + iEvLineID = MECHOS_MODE; + break; + case ITEMS_LIST_MODE: + iEvLineID = ITEMS_MODE; + break; + case WEAPONS_LIST_MODE: + iEvLineID = WEAPONS_MODE; + break; + } + aciCurAviIndex = ACI_PICTURE_AVI_ENG; +} + +void redraw_fnc(int x,int y,int sx,int sy,int fnc) +{ + switch(fnc){ + case FMENU_MAP: + show_map(x,y,sx,sy); + break; + case FMENU_WMAP: + if(aScrDisp -> wMap){ + aScrDisp -> wMap -> redraw(x + ((sx - aScrDisp -> wMap -> SizeX) >> 1),y + ((sy - aScrDisp -> wMap -> SizeY) >> 1)); + } + else { + XGR_Rectangle(x,y,sx,sy,0,0,XGR_FILLED); + } + break; + case FMENU_TARGETS: + break; + case FMENU_CAMERAS: + aciShowCamerasMenu(x,y,sx,sy); + break; + case FMENU_PARAMETERS: + aciRedrawParamsPanel(x,y,sx,sy); + break; + default: + XGR_Rectangle(x,y,sx,sy,0,0,XGR_FILLED); + break; + } +} + +void aciSetTimePanel(void) +{ + char* p; + int d,h,m,s; + + InfoPanel* iPl; + if(aScrDisp -> flags & AS_ISCREEN) + iPl = aScrDisp -> get_info_panel(ACI_SHOP_TIME_PANEL); + else + iPl = aScrDisp -> get_aci_info_panel(ACI_TIME_PANEL); + + if(!iPl) return; + + ConTimer.sTime.init(); + + if(NetworkON){ + GetNetworkGameTime(d,h,m,s); + } + else { + d = ConTimer.day; + h = ConTimer.hour; + m = ConTimer.min; + s = ConTimer.sec; + } + + if(d < 100) ConTimer.sTime < " "; + if(d < 10) ConTimer.sTime < " "; + + ConTimer.sTime <= d < " "; + if(h < 10) ConTimer.sTime < "0"; + ConTimer.sTime <= h < ":"; + if(m < 10) ConTimer.sTime < "0"; + ConTimer.sTime <= m < ":"; + if(s < 10) ConTimer.sTime < "0"; + ConTimer.sTime <= s; + + p = ConTimer.sTime.GetBuf(); + + iPl -> free_list(); + iPl -> add_item(aciSTR_DAY); + iPl -> add_item(p,-1,(aciCurColorScheme[FM_SELECT_BORDER_COL] << 8) | aciCurColorScheme[FM_SELECT_COL]); + + if(aScrDisp -> flags & AS_ISCREEN) + iPl -> set_redraw(); +} + +void aciInitEvLineID(void) +{ + fncMenu* mn; + iTriggerObject* p = (iTriggerObject*)aScrDisp -> curLocData -> objList[ACI_TRIGGER_ID]; + if(!p) return; + + if(GMechos){ + p -> state = 2; + p -> init_state(); + } + else { + p -> state = 0; + p -> init_state(); + } + iEvLineID = p -> state + 1; + + p = (iTriggerObject*)aScrDisp -> curLocData -> objList[ACI_AVI_OBJ_ID]; + if(p){ + mn = aScrDisp -> get_imenu(SHOP_ITEMS_MENU_ID); + if(mn) mn -> flags &= ~FM_ACTIVE; + p -> state = 0; + p -> init_state(); + } + switch(uvsBunchNumber){ + case 2: + aciCurAviIndexDelta = 0; + break; + case 0: + aciCurAviIndexDelta = ACI_PICTURE_AVI_ENG2; + break; + case 1: + aciCurAviIndexDelta = ACI_PICTURE_AVI_ENG3; + break; + } +} + +void aciInitWorldIDs(void) +{ + int i; + signed char* ids; + uvsWorld* wrld; + aciWorldInfo* a_wrld; + if(!aScrDisp -> wMap) return; + ids = aScrDisp -> wMap -> world_ids; + + memset(ids,-1,AS_MAX_WORLD); + + for(i = 0; i < WORLD_MAX; i ++){ + wrld = WorldTable[i]; + a_wrld = aScrDisp -> wMap -> get_world_p(wrld -> name); + if(a_wrld){ + ids[i] = a_wrld -> ID; + a_wrld -> uvsID = i; + } + } + aScrDisp -> flags |= AS_WORLDS_INIT; +// aciPrepareWorldsMenu(); +} + +void aciWorldLinksON(void) +{ + int i,cur_id; + aciWorldInfo* p,*p1; + + if(CurrentWorld == -1) return; + + cur_id = aScrDisp -> wMap -> world_ids[CurrentWorld]; + if(cur_id == -1) return; + + p = aScrDisp -> wMap -> world_ptr[cur_id]; + if(!p) return; + + for(i = 0; i < AS_MAX_WORLD; i ++){ + p1 = aScrDisp -> wMap -> world_ptr[i]; + if(i != cur_id && p1){ + if(p1 -> links[cur_id] || p -> links[i]){ + p1 -> flags |= AS_ACCESSIBLE_WORLD; + } + } + if(p1 && uvsReturnWorldGamerVisit(p1 -> uvsID)){ + p1 -> flags |= AS_EXPLORED_WORLD; + } + } + aScrDisp -> wMap -> flags |= WMAP_REBUILD_PIC; +} + +void aciWorldExploredInfo(void) +{ + int i; + aciWorldInfo* p1; + + for(i = 0; i < AS_MAX_WORLD; i ++){ + p1 = aScrDisp -> wMap -> world_ptr[i]; + if(p1 && uvsReturnWorldGamerVisit(p1 -> uvsID)){ + p1 -> flags |= AS_EXPLORED_WORLD; + } + } +} + +void aciWorldLinksOFF(void) +{ + int i; + aciWorldInfo* p; + + for(i = 0; i < AS_MAX_WORLD; i ++){ + p = aScrDisp -> wMap -> world_ptr[i]; + if(p){ + p -> flags &= ~AS_ACCESSIBLE_WORLD; + } + } + aScrDisp -> wMap -> flags |= WMAP_REBUILD_PIC; +} + +void aciOpenWorldLink(int w1,int w2) +{ + int id1,id2; + aciWorldInfo* p1,*p2; + + id1 = aScrDisp -> wMap -> world_ids[w1]; + id2 = aScrDisp -> wMap -> world_ids[w2]; + + if(id1 == -1 || id2 == -1) ErrH.Abort("Bad world ID..."); + + p1 = aScrDisp -> wMap -> world_ptr[id1]; + p2 = aScrDisp -> wMap -> world_ptr[id2]; + + if(!p1 || !p2) ErrH.Abort("Bad world ptr..."); + + p1 -> links[id2] = 1; + if(id1 != id2 && p2 -> links[id1]) p2 -> links[id1] = 0; + aScrDisp -> wMap -> flags |= WMAP_REBUILD_PIC; + aciPrevJumpCount = -1; +} + +int aciWorldLinkExist(int w1,int w2,int sp_flag) +{ + int id1,id2; + aciWorldInfo* p1,*p2; + + id1 = aScrDisp -> wMap -> world_ids[w1]; + id2 = aScrDisp -> wMap -> world_ids[w2]; + + if(id1 == -1 || id2 == -1) ErrH.Abort("Bad world ID..."); + + p1 = aScrDisp -> wMap -> world_ptr[id1]; + p2 = aScrDisp -> wMap -> world_ptr[id2]; + + if(!p1 || !p2) ErrH.Abort("Bad world ptr..."); + + if(p1 -> links[id2] || p2 -> links[id1]){ + if(!sp_flag || (p1 -> flags & AS_ACCESSIBLE_WORLD || p2 -> flags & AS_ACCESSIBLE_WORLD)){ + return 1; + } + } + + return 0; +} + +void aciInitAviID(void) +{ + invItem* p; + invMatrix* m; + iAVIElement* avi; + + InfoPanel* ip = aScrDisp -> get_info_panel(ACI_PRICE_PANEL); + + avi = (iAVIElement*)aScrDisp -> curLocData -> objList[ACI_MECHOS_AVI_ID]; + if(!avi) return; + + if(ip){ + ip -> free_list(); + ip -> set_redraw(); + } + + if(!iShopItem){ + aciXConv -> init(); + *aciXConv < iVideoPath < "empty.avi"; + strcpy(avi -> avi_name,aciXConv -> address()); + iEvLineID = EMPTY_MODE; + return; + } + + if(iEvLineID == MECHOS_MODE || iEvLineID == MECHOS_LIST_MODE || iEvLineID == CHANGE_2_MECHOS_MODE){ + m = (invMatrix*)iShopItem; + aci_SecondMatrixID = m -> type; + if(!aciCurAviIndex){ + if(m -> avi_ids && m -> avi_ids[aciCurAviIndex + aciCurAviIndexDelta]){ + strcpy(avi -> avi_name,m -> avi_ids[aciCurAviIndex + aciCurAviIndexDelta]); + } + } + else { + if(m -> avi_ids && m -> avi_ids[aciCurAviIndex]){ + strcpy(avi -> avi_name,m -> avi_ids[aciCurAviIndex]); + } + } + if(ip && m -> mech_name){ + aciInitPricePanel(ip,(iListElement*)m,MECHOS_MODE,0); + +// ip -> add_item(m -> mech_name,-1,aciCurColorScheme[FM_SELECT_COL]); +// ip -> add_item(aciGetPrice((iListElement*)m,MECHOS_MODE,0),-1,aciCurColorScheme[FM_SELECT_COL]); + } + } + else { + p = (invItem*)iShopItem; + if(p -> avi_ids && p -> avi_ids[aciCurAviIndex]){ + strcpy(avi -> avi_name,p -> avi_ids[aciCurAviIndex]); + } + if(ip){ + aciInitPricePanel(ip,(iListElement*)p,ITEMS_MODE,0); + } + } +} + +void aciInitShopAvi(void) +{ + iAVIElement* avi; + + avi = (iAVIElement*)aScrDisp -> curLocData -> objList[ACI_MECHOS_AVI_ID]; + if(!avi) return; + + avi -> change_avi(avi -> avi_name); + avi -> init_size(); + avi -> init_align(); +} + +void aciNextShopItem(void) +{ + invItem* p,*fp; + invMatrix* m,*fm; + if(!iShopItem){ + aciInitEvLineID(); + aciChangeList(); + return; + } + + aciShopMenuDown(); + + switch(iEvLineID){ + case MECHOS_MODE: + case MECHOS_LIST_MODE: + fm = (invMatrix*)iShopItem; + m = (invMatrix*)fm -> next; + if(m != fm){ + while(!m -> uvsDataPtr){ + m = (invMatrix*)m -> next; + if(m == fm) break; + } + if(!m -> uvsDataPtr){ + iShopItem = NULL; + } + else { + iShopItem = (iListElement*)m; + aciCurMechosID = m -> type; + } + } + break; + case ITEMS_MODE: + case ITEMS_LIST_MODE: + case CHANGE_2_ITEMS_MODE: + fp = (invItem*)iShopItem; + p = (invItem*)fp -> next; + if(p != fp){ + while(!p -> uvsDataPtr || p -> classID != AS_ITEM_CLASS){ + p = (invItem*)p -> next; + if(p == fp) break; + } + if(!p -> uvsDataPtr || p -> classID != AS_ITEM_CLASS) + iShopItem = NULL; + else + iShopItem = (iListElement*)p; + } + break; + case WEAPONS_MODE: + case WEAPONS_LIST_MODE: + case CHANGE_2_WEAPONS_MODE: + fp = (invItem*)iShopItem; + p = (invItem*)fp -> next; + if(p != fp){ + while(!p -> uvsDataPtr || p -> classID != AS_WEAPON_CLASS){ + p = (invItem*)p -> next; + if(p == fp) break; + } + if(!p -> uvsDataPtr || p -> classID != AS_WEAPON_CLASS) + iShopItem = NULL; + else + iShopItem = (iListElement*)p; + } + break; + } + aciInitAviID(); +} + +void aciSetShopItem(int id) +{ + invItem* p; + invMatrix* m; + if(!iShopItem){ + aciInitEvLineID(); + aciChangeList(); + return; + } + + switch(iEvLineID){ + case MECHOS_MODE: + case MECHOS_LIST_MODE: + case CHANGE_2_MECHOS_MODE: + m = (invMatrix*)aScrDisp -> i_matrixList -> last; + while(m){ + if(m -> type == id){ + iShopItem = (iListElement*)m; + aciCurMechosID = m -> type; + break; + } + m = (invMatrix*)m -> prev; + } + if(!m) iShopItem = NULL; + break; + case ITEMS_MODE: + case ITEMS_LIST_MODE: + case CHANGE_2_ITEMS_MODE: + case WEAPONS_MODE: + case WEAPONS_LIST_MODE: + case CHANGE_2_WEAPONS_MODE: + p = (invItem*)aScrDisp -> i_itemList -> last; + while(p){ + if(p -> ID == id){ + iShopItem = (iListElement*)p; + break; + } + p = (invItem*)p -> prev; + } + if(!p) iShopItem = NULL; + break; + } + aciInitAviID(); +} + +void aciPrevShopItem(void) +{ + invItem* p,*fp; + invMatrix* m,*fm; + + if(!iShopItem){ + aciInitEvLineID(); + aciChangeList(); + return; + } + + aciShopMenuUp(); + + switch(iEvLineID){ + case MECHOS_MODE: + case MECHOS_LIST_MODE: + fm = (invMatrix*)iShopItem; + m = (invMatrix*)fm -> prev; + if(!m) m = (invMatrix*)aScrDisp -> i_matrixList -> last; + while(!m -> uvsDataPtr){ + m = (invMatrix*)m -> prev; + if(!m) m = (invMatrix*)aScrDisp -> i_matrixList -> last; + if(m == fm) break; + } + if(!m -> uvsDataPtr){ + iShopItem = NULL; + } + else { + iShopItem = (iListElement*)m; + aciCurMechosID = m -> type; + } + break; + case ITEMS_MODE: + case ITEMS_LIST_MODE: + case CHANGE_2_ITEMS_MODE: + fp = (invItem*)iShopItem; + p = (invItem*)fp -> prev; + if(!p) p = (invItem*)aScrDisp -> i_itemList -> last; + if(p != fp){ + while(!p -> uvsDataPtr || p -> classID != AS_ITEM_CLASS){ + p = (invItem*)p -> prev; + if(!p) p = (invItem*)aScrDisp -> i_itemList -> last; + if(p == fp) break; + } + if(!p -> uvsDataPtr || p -> classID != AS_ITEM_CLASS) + iShopItem = NULL; + else + iShopItem = (iListElement*)p; + } + break; + case WEAPONS_MODE: + case WEAPONS_LIST_MODE: + case CHANGE_2_WEAPONS_MODE: + fp = (invItem*)iShopItem; + p = (invItem*)fp -> prev; + if(!p) p = (invItem*)aScrDisp -> i_itemList -> last; + if(p != fp){ + while(!p -> uvsDataPtr || p -> classID != AS_WEAPON_CLASS){ + p = (invItem*)p -> prev; + if(!p) p = (invItem*)aScrDisp -> i_itemList -> last; + if(p == fp) break; + } + if(!p -> uvsDataPtr || p -> classID != AS_WEAPON_CLASS) + iShopItem = NULL; + else + iShopItem = (iListElement*)p; + } + break; + } + aciInitAviID(); +} + +void aciChangeList(void) +{ + invItem* p,*fp; + invMatrix* m,*fm; + + switch(iEvLineID){ + case MECHOS_MODE: + case MECHOS_LIST_MODE: + fm = m = (invMatrix*)aScrDisp -> i_matrixList -> first; + while(!m -> uvsDataPtr){ + m = (invMatrix*)m -> next; + if(m == fm) break; + } + if(!m -> uvsDataPtr){ + iShopItem = NULL; + } + else { + iShopItem = (iListElement*)m; + aciCurMechosID = m -> type; + } + break; + case ITEMS_MODE: + case ITEMS_LIST_MODE: + fp = p = (invItem*)aScrDisp -> i_itemList -> first; + while(!p -> uvsDataPtr || p -> classID != AS_ITEM_CLASS){ + p = (invItem*)p -> next; + if(p == fp) break; + } + if(!p -> uvsDataPtr || p -> classID != AS_ITEM_CLASS) + iShopItem = NULL; + else + iShopItem = (iListElement*)p; + break; + case WEAPONS_MODE: + case WEAPONS_LIST_MODE: + fp = p = (invItem*)aScrDisp -> i_itemList -> first; + while(!p -> uvsDataPtr || p -> classID != AS_WEAPON_CLASS){ + p = (invItem*)p -> next; + if(p == fp) break; + } + if(!p -> uvsDataPtr || p -> classID != AS_WEAPON_CLASS) + iShopItem = NULL; + else + iShopItem = (iListElement*)p; + break; + } + aciInitAviID(); + if(iEvLineID == MECHOS_LIST_MODE || iEvLineID == ITEMS_LIST_MODE || iEvLineID == WEAPONS_LIST_MODE) + aciBuildShopList(); +} + +void aciInitShopItems(void) +{ + invItem* p; + invMatrix* m; + uvsActInt* u; + +#ifdef _ACI_LOGFILE_ + aScrDisp -> logFile.open(aciLogFileName,XS_OUT | XS_APPEND | XS_NOREPLACE); + aScrDisp -> logFile < "\r\nLocation: " < aci_curLocationName; +#endif + + p = (invItem*)aScrDisp -> i_itemList -> last; + while(p){ + p -> uvsDataPtr = NULL; + p = (invItem*)p -> prev; + } + + m = (invMatrix*)aScrDisp -> i_matrixList -> last; + while(m){ + m -> uvsDataPtr = NULL; + m = (invMatrix*)m -> prev; + } + + if(aScrDisp -> curMatrix){ + p = (invItem*)aScrDisp -> curMatrix -> items -> last; + while(p){ + p -> uvsDataPtr = NULL; + p = (invItem*)p -> prev; + } + } + +#ifdef _ACI_LOGFILE_ + aScrDisp -> logFile < "\r\n\r\nShopItems :\r\n"; +#endif + + u = GMechos; + while(u){ + m = aScrDisp -> get_imatrix(u -> type); + if(m && !m -> uvsDataPtr) + m -> uvsDataPtr = u; +#ifdef _ACI_LOGFILE_ + aScrDisp -> logFile < "\r\nMechos \"" < m -> mech_name < "\""; +#endif + + u = (uvsActInt*)u -> next; + } + u = GItem; + while(u){ + p = aScrDisp -> get_iitem(u -> type); + if(p && !p -> uvsDataPtr) + p -> uvsDataPtr = u; + +#ifdef _ACI_LOGFILE_ + aScrDisp -> logFile < "\r\nItem \"" < p -> ID_ptr < "\""; +#endif + + u = (uvsActInt*)u -> next; + } + + if(aScrDisp -> curMatrix){ + +#ifdef _ACI_LOGFILE_ + aScrDisp -> logFile < "\r\n\r\nGamerItems :\r\n"; +#endif + p = (invItem*)aScrDisp -> curMatrix -> items -> last; + while(p){ + p -> uvsDataPtr = NULL; +#ifdef _ACI_LOGFILE_ + aScrDisp -> logFile < "\r\n" < p -> ID_ptr; +#endif + p = (invItem*)p -> prev; + } + u = GGamer; + while(u){ + p = (invItem*)aScrDisp -> curMatrix -> items -> last; + while(p){ + if(!p -> uvsDataPtr && p -> ID == u -> type && p -> MatrixX == u -> pos_x && p -> MatrixY == u -> pos_y){ + p -> uvsDataPtr = u; + break; + } + p = (invItem*)p -> prev; + } + u = (uvsActInt*)u -> next; + } + p = (invItem*)aScrDisp -> curMatrix -> items -> last; + while(p){ + if(!p -> uvsDataPtr) + ErrH.Abort("aciInitShopItems failed..."); + p = (invItem*)p -> prev; + } + aScrDisp -> curMatrix -> uvsDataPtr = GGamerMechos; + } + aciChangeList(); +#ifdef _ACI_LOGFILE_ + aScrDisp -> logFile.close(); +#endif +} + +void aciChangeLineID(void) +{ + switch(iEvLineID){ + case CHANGE_2_MECHOS_MODE: + iEvLineID = MECHOS_MODE; + break; + case CHANGE_2_WEAPONS_MODE: + iEvLineID = WEAPONS_MODE; + break; + case CHANGE_2_ITEMS_MODE: + iEvLineID = ITEMS_MODE; + break; + case MECHOS_LIST_MODE: + iEvLineID = MECHOS_MODE; + break; + case ITEMS_LIST_MODE: + iEvLineID = ITEMS_MODE; + break; + case WEAPONS_LIST_MODE: + iEvLineID = WEAPONS_MODE; + break; + } +} + +void aciBuyItem(void) +{ + int cr; + invItem* p,*p1; + invMatrix* m,*m1; + uvsActInt* u,*u1; + listElem* el; + + if(!(aScrDisp -> flags & AS_INV_MOVE_ITEM)){ + if(iShopItem){ + if(iEvLineID == MECHOS_MODE || iEvLineID == MECHOS_LIST_MODE){ + m = (invMatrix*)iShopItem; + u = (uvsActInt*)m -> uvsDataPtr; + + if(!u) ErrH.Abort("Bad shop item..."); + u -> delink(GMechos); + if(aScrDisp -> curMatrix){ + if(GGamerMechos){ + el = GMechos; + //std::cout<<"GGamerMechos -> link(el)"< link(el); + GMechos = (uvsActInt*)el; + } + + m1 = aScrDisp -> get_imatrix(aScrDisp -> curMatrix -> type); + if(!m1 -> uvsDataPtr) m1 -> uvsDataPtr = GGamerMechos; + + iShopItem = (iListElement*)m1; + } + else { + aciNextShopItem(); + } + //std::cout<<"aciBuyItem GGamerMechos = u"< price; + aciUpdateCurCredits(cr); + + u1 = aciGetMechos(m -> type); + if(u1) + m -> uvsDataPtr = u1; + else + m -> uvsDataPtr = NULL; + + } + else { + if(aScrDisp -> flags & AS_INV_MOVE_ITEM) return; + + p = (invItem*)iShopItem; + p1 = aScrDisp -> alloc_item(); + p -> clone(p1); + + aScrDisp -> curItem = p1; + set_mouse_cursor(p1 -> frame,p1 -> ScreenSizeX,p1 -> ScreenSizeY); + + aScrDisp -> flags |= AS_INV_MOVE_ITEM; + + el = (listElem*)GGamer; + u = (uvsActInt*)p -> uvsDataPtr; + if(!u) ErrH.Abort("Null uvsDataPtr..."); + u -> delink(GItem); + u -> link(el); + GGamer = (uvsActInt*)el; + p1 -> uvsDataPtr = u; + p1 -> flags |= INV_ITEM_NO_PAY; + p1 -> flags |= INV_ITEM_NEW; + + u -> pos_x = u -> pos_y = -1; + p1 -> MatrixX = p1 -> MatrixY = -1; + + if(aScrDisp -> iscr_iP){ + aciInitPricePanel(aScrDisp -> iscr_iP,(iListElement*)p1,ITEMS_MODE,1); + aScrDisp -> iscr_iP -> set_redraw(); + } + + u1 = aciGetShopItem(u -> type); + if(u1 && !aScrDisp -> curLocData -> ExcludeItems[u1 -> type]){ + p -> uvsDataPtr = u1; + } + else { + p -> uvsDataPtr = NULL; + aciNextShopItem(); + } + } + } + aciInitAviID(); + if(iEvLineID == MECHOS_LIST_MODE || iEvLineID == ITEMS_LIST_MODE || iEvLineID == WEAPONS_LIST_MODE) + aciBuildShopList(); + } + else { + aciSellMoveItem(); + } +} + +void aciSellMoveItem(void) +{ + int i,id,fl = 0,index,exclude = 1; + invItem* p,*p1; + invMatrix* m,*m1; + uvsActInt* u,*pu; + + iListElement* prev_item = iShopItem; + + int change_mode = 0,prev_mode = iEvLineID; + + if(!(aScrDisp -> flags & AS_INV_MOVE_ITEM)) return; + + p = aScrDisp -> curItem; + p1 = aScrDisp -> get_iitem(p -> ID); + pu = (uvsActInt*)p -> uvsDataPtr; + + if(!uvsCurrentWorldUnable && p -> partData){ + index = -1; + m = (invMatrix*)aScrDisp -> i_matrixList -> last; + while(m){ + for(i = 0; i < 2; i ++){ + if(m -> uvsDataPtr && m -> type == p -> partData -> baseID[i]) + index = i; + } + m = (invMatrix*)m -> prev; + } + if(index != -1) + fl = 1; + } + if(!fl){ + id = p -> ID; + if(p -> flags & INV_ITEM_NO_PAY) exclude = 0; + if(p -> classID == AS_ITEM_CLASS && prev_mode != ITEMS_MODE && prev_mode != ITEMS_LIST_MODE){ + change_mode = CHANGE_2_ITEMS_MODE; + if(iEvLineID != ITEMS_MODE && iEvLineID != ITEMS_LIST_MODE) + iEvLineID = change_mode; + } + if(p -> classID == AS_WEAPON_CLASS && prev_mode != WEAPONS_MODE && prev_mode != WEAPONS_LIST_MODE){ + change_mode = CHANGE_2_WEAPONS_MODE; + if(iEvLineID != WEAPONS_MODE && iEvLineID != WEAPONS_LIST_MODE) + iEvLineID = change_mode; + } + + aciSell_Item(p); + aScrDisp -> flags ^= AS_INV_MOVE_ITEM; + + if(!exclude || !aScrDisp -> curLocData -> ExcludeItems[id]){ + iShopItem = p1; + } + else { + aciRemoveUvsItem(pu); + iShopItem = prev_item; + switch(prev_mode){ + case ITEMS_MODE: + case ITEMS_LIST_MODE: + change_mode = CHANGE_2_ITEMS_MODE; + break; + case WEAPONS_MODE: + case WEAPONS_LIST_MODE: + change_mode = CHANGE_2_WEAPONS_MODE; + break; + case MECHOS_MODE: + case MECHOS_LIST_MODE: + change_mode = CHANGE_2_MECHOS_MODE; + break; + } + iEvLineID = change_mode; + } + } + else { + m = aScrDisp -> get_imatrix(p -> partData -> baseID[index]); + m1 = aScrDisp -> get_imatrix(p -> partData -> targetID[index]); + if(!m || !m1) + ErrH.Abort("Bad constructor mechos ID..."); + if(m1 -> uvsDataPtr) + ErrH.Abort("Duplicate constructor mechos..."); + + u = (uvsActInt*)m -> uvsDataPtr; + + u -> type = m1 -> type; + m1 -> uvsDataPtr = u; + + m -> uvsDataPtr = NULL; + + iShopItem = (iListElement*)m1; + + u = (uvsActInt*)p -> uvsDataPtr; + u -> delink(GGamer); + delete u; + + p -> uvsDataPtr = NULL; + + if(m1 -> flags & IM_NOT_COMPLETE){ + SOUND_UNICUM_1(); + } + else { + SOUND_UNICUM_2(); + } + + iEvLineID = CHANGE_2_MECHOS_MODE; + aScrDisp -> flags ^= AS_INV_MOVE_ITEM; + } + + aciInitAviID(); + restore_mouse_cursor(); + + if(aScrDisp -> iscr_iP){ + aScrDisp -> iscr_iP -> free_list(); + aScrDisp -> iscr_iP -> set_redraw(); + } + + if(fl) iEvLineID = CHANGE_2_MECHOS_MODE; + + aciInitShopAvi(); +} + +int uvs_aciKillItem(int id,int id1) +{ + int ret = 0; + uvsActInt* u; + invItem* p,*p1,*it; + if(!aScrDisp -> curMatrix) return ret; + p = (invItem*)aScrDisp -> curMatrix -> items -> last; + + if(id1 != -1){ + it = aScrDisp -> get_iitem(id1); + } + + while(p){ + p1 = (invItem*)p -> prev; + if(p -> ID == id){ + if(id1 == -1){ + aScrDisp -> curMatrix -> remove_item(p); + aScrDisp -> free_item(p); + } + else { + it -> clone(p); + u = (uvsActInt*)p -> uvsDataPtr; + u -> type = it -> ID; + } + ret = 1; + } + p = p1; + } + if(aScrDisp -> flags & AS_INV_MOVE_ITEM){ + if(aScrDisp -> curItem -> ID == id){ + if(id1 == -1){ + aScrDisp -> free_item(aScrDisp -> curItem); + aScrDisp -> curItem = NULL; + aScrDisp -> flags ^= AS_INV_MOVE_ITEM; + restore_mouse_cursor(); + } + else { + it -> clone(aScrDisp -> curItem); + u = (uvsActInt*)aScrDisp -> curItem -> uvsDataPtr; + u -> type = it -> ID; + set_mouse_cursor(aScrDisp -> curItem -> frame,aScrDisp -> curItem -> ScreenSizeX,aScrDisp -> curItem -> ScreenSizeY); + } + ret = 1; + } + } + aScrDisp -> curMatrix -> set_redraw(); + if((aScrDisp -> flags & AS_ISCREEN) && GCharItem && GCharItem -> type == id){ + aciML_D -> key_trap(AML_KEY,AML_KILL_ELEECH_CODE); + } + return ret; +} + +int uvs_aciKillOneItem(int id,int x,int y) +{ + int ret = 0; + invItem* p,*p1; + if(!aScrDisp -> curMatrix) return ret; + p = (invItem*)aScrDisp -> curMatrix -> items -> last; + + while(p){ + p1 = (invItem*)p -> prev; + if(p -> ID == id && p -> MatrixX == x && p -> MatrixY == y){ + aScrDisp -> curMatrix -> remove_item(p); + aScrDisp -> free_item(p); + return 1; + } + p = p1; + } + return 0; +} + +void uvs_aciChangeItem(int id_from,int id_to) +{ + invItem* p,*p1,*it; + if(!aScrDisp -> curMatrix) return; + p = (invItem*)aScrDisp -> curMatrix -> items -> last; + if(!(aScrDisp -> flags & AS_ISCREEN)) + it = aScrDisp -> get_item(id_to); + else + it = aScrDisp -> get_iitem(id_to); + + while(p){ + p1 = (invItem*)p -> prev; + if(p -> ID == id_from){ + it -> clone(p); + } + p = p1; + } + aScrDisp -> curMatrix -> set_redraw(); + + if(aScrDisp -> flags & AS_INV_MOVE_ITEM){ + if(aScrDisp -> curItem -> ID == id_from){ + it -> clone(aScrDisp -> curItem); + set_mouse_cursor(aScrDisp -> curItem -> frame,aScrDisp -> curItem -> ScreenSizeX,aScrDisp -> curItem -> ScreenSizeY); + } + } + + if(aScrDisp -> flags & AS_ISCREEN){ + if(!aScrDisp -> secondMatrix) return; + p = (invItem*)aScrDisp -> secondMatrix -> items -> last; + while(p){ + p1 = (invItem*)p -> prev; + if(p -> ID == id_from){ + it -> clone(p); + } + p = p1; + } + aScrDisp -> secondMatrix -> set_redraw(); + } +} + +void uvs_aciChangeOneItem(int id_from,int id_to,int x,int y) +{ + invItem* p,*p1,*it; + if(!aScrDisp -> curMatrix) return; + p = (invItem*)aScrDisp -> curMatrix -> items -> last; + + if(!(aScrDisp -> flags & AS_ISCREEN)) + it = aScrDisp -> get_item(id_to); + else + it = aScrDisp -> get_iitem(id_to); + + while(p){ + p1 = (invItem*)p -> prev; + if(p -> ID == id_from && p -> MatrixX == x && p -> MatrixY == y){ + it -> clone(p); +// if(p -> uvsDataPtr) ((uvsActInt*)p -> uvsDataPtr) -> type = id_to; + return; + } + p = p1; + } + aScrDisp -> curMatrix -> set_redraw(); + + if(aScrDisp -> flags & AS_INV_MOVE_ITEM){ + if(aScrDisp -> curItem -> ID == id_from && aScrDisp -> curItem -> MatrixX == x && aScrDisp -> curItem -> MatrixY == y){ + it -> clone(aScrDisp -> curItem); + set_mouse_cursor(aScrDisp -> curItem -> frame,aScrDisp -> curItem -> ScreenSizeX,aScrDisp -> curItem -> ScreenSizeY); + return; + } + } + + if(aScrDisp -> flags & AS_ISCREEN){ + if(!aScrDisp -> secondMatrix) return; + p = (invItem*)aScrDisp -> secondMatrix -> items -> last; + while(p){ + p1 = (invItem*)p -> prev; + if(p -> ID == id_from && p -> MatrixX == x && p -> MatrixY == y){ + it -> clone(p); + } + p = p1; + } + aScrDisp -> secondMatrix -> set_redraw(); + } +} + +void uvs_aciChangeOneItem(int id_from,int id_to,uvsActInt* ptr) +{ + invItem* p,*p1,*it; + if(!aScrDisp -> curMatrix) return; + p = (invItem*)aScrDisp -> curMatrix -> items -> last; + + it = aScrDisp -> get_iitem(id_to); + + while(p){ + p1 = (invItem*)p -> prev; + if(p -> ID == id_from && p -> uvsDataPtr == ptr){ + it -> clone(p); + return; + } + p = p1; + } + aScrDisp -> curMatrix -> set_redraw(); + + if(aScrDisp -> flags & AS_INV_MOVE_ITEM){ + if(aScrDisp -> curItem -> ID == id_from && aScrDisp -> curItem -> uvsDataPtr == ptr){ + it -> clone(aScrDisp -> curItem); + set_mouse_cursor(aScrDisp -> curItem -> frame,aScrDisp -> curItem -> ScreenSizeX,aScrDisp -> curItem -> ScreenSizeY); + return; + } + } + if(aScrDisp -> flags & AS_ISCREEN){ + if(!aScrDisp -> secondMatrix) return; + p = (invItem*)aScrDisp -> secondMatrix -> items -> last; + while(p){ + p1 = (invItem*)p -> prev; + if(p -> ID == id_from && p -> uvsDataPtr == ptr){ + it -> clone(p); + } + p = p1; + } + aScrDisp -> secondMatrix -> set_redraw(); + } +} + +void aciChangeItem(actintItemData* p) +{ + invItem* p1,*it; + if(!aScrDisp -> curMatrix) return; + + if(!(aScrDisp -> flags & AS_ISCREEN)) + it = aScrDisp -> get_item(p -> type); + else + it = aScrDisp -> get_iitem(p -> type); + + p1 = (invItem*)p -> actintOwner; + it -> clone(p1); + + if(!(aScrDisp -> flags & AS_ISCREEN) && aScrDisp -> curMode == AS_INV_MODE) + aScrDisp -> curMatrix -> set_redraw(); +} + +void aciInitShopList(void) +{ + switch(iEvLineID){ + case MECHOS_LIST_MODE: + iEvLineID = MECHOS_MODE; + aciCloseShopMenu(); + break; + case ITEMS_LIST_MODE: + iEvLineID = ITEMS_MODE; + aciCloseShopMenu(); + break; + case WEAPONS_LIST_MODE: + iEvLineID = WEAPONS_MODE; + aciCloseShopMenu(); + break; + case MECHOS_MODE: + case ITEMS_MODE: + case WEAPONS_MODE: + aciBuildShopList(); + break; + } +} + +void aciCloseShopMenu(void) +{ + fncMenu* mn = aScrDisp -> get_imenu(SHOP_ITEMS_MENU_ID); + if(mn) + mn -> flags &= ~FM_ACTIVE; +} + +void aciShopMenuUp(void) +{ + fncMenu* mn = aScrDisp -> get_imenu(SHOP_ITEMS_MENU_ID); + if(mn && mn -> flags & FM_ACTIVE) + mn -> step_up(); +} + +void aciShopMenuDown(void) +{ + fncMenu* mn = aScrDisp -> get_imenu(SHOP_ITEMS_MENU_ID); + if(mn && mn -> flags & FM_ACTIVE) + mn -> step_down(); +} + +void aciBuildShopList(void) +{ + int i; + + invItem* p; + fncMenu* mn; + invMatrix* m; + fncMenuItem* itm; + + if(!iShopItem) return; + + mn = aScrDisp -> get_imenu(SHOP_ITEMS_MENU_ID); + if(!mn) return; + + aScrDisp -> clear_menu(mn); + + switch(iEvLineID){ + case MECHOS_MODE: + case MECHOS_LIST_MODE: + m = (invMatrix*)aScrDisp -> i_matrixList -> first; + for(i = 0; i < aScrDisp -> i_matrixList -> Size; i ++){ + if(m -> uvsDataPtr){ + if(m -> mech_name){ + itm = aScrDisp -> alloc_menu_item(); + itm -> init_name(m -> mech_name); + itm -> fnc_code = m -> type; + itm -> init(); + mn -> add_item(itm); + } + } + m = (invMatrix*)m -> next; + } + mn -> curFunction = ((invMatrix*)iShopItem) -> type; + iEvLineID = MECHOS_LIST_MODE; + break; + case ITEMS_MODE: + case ITEMS_LIST_MODE: + p = (invItem*)aScrDisp -> i_itemList -> first; + for(i = 0; i < aScrDisp -> i_itemList -> Size; i ++){ + if(p -> uvsDataPtr && p -> classID == AS_ITEM_CLASS){ + if(p->ID_ptr.size()){ + itm = aScrDisp -> alloc_menu_item(); + itm -> init_name(p->ID_ptr.c_str()); + itm -> fnc_code = p -> ID; + itm -> init(); + mn -> add_item(itm); + } + } + p = (invItem*)p -> next; + } + mn -> curFunction = ((invItem*)iShopItem) -> ID; + iEvLineID = ITEMS_LIST_MODE; + break; + case WEAPONS_MODE: + case WEAPONS_LIST_MODE: + p = (invItem*)aScrDisp -> i_itemList -> first; + for(i = 0; i < aScrDisp -> i_itemList -> Size; i ++){ + if(p -> uvsDataPtr && p -> classID == AS_WEAPON_CLASS){ + if(p->ID_ptr.size()){ + itm = aScrDisp -> alloc_menu_item(); + itm -> init_name(p->ID_ptr.c_str()); + itm -> fnc_code = p -> ID; + itm -> init(); + mn -> add_item(itm); + } + } + p = (invItem*)p -> next; + } + mn -> curFunction = ((invItem*)iShopItem) -> ID; + iEvLineID = WEAPONS_LIST_MODE; + break; + } + mn -> set_redraw(); + mn -> flags |= FM_ACTIVE; + + mn -> init_objects(); + + mn -> curItem = mn -> get_fnc_item(mn -> curFunction); + if(!mn -> curItem) + ErrH.Abort("Bad shop menu list..."); + if(mn -> VItems < mn -> items -> Size) + mn -> firstItem = mn -> curItem; + else + mn -> firstItem = (fncMenuItem*)mn -> items -> first; +} + +void aciChooseShopItem(void) +{ + int x,y,id; + + invItem* p; + invMatrix* m; + + fncMenu* mn; + fncMenuItem* itm; + + mn = aScrDisp -> get_imenu(SHOP_ITEMS_MENU_ID); + if(!mn) return; + + itm = mn -> curItem; + + x = iMouseX; + y = iMouseY; + + if(!mn -> check_xy(x,y)) return; + + if(mn -> change(x,y)){ + switch(iEvLineID){ + case MECHOS_LIST_MODE: + m = aScrDisp -> get_imatrix(mn -> curFunction); + iShopItem = (iListElement*)m; + aciInitAviID(); + aciInitShopAvi(); + mn -> flags &= ~FM_ACTIVE; + break; + case ITEMS_LIST_MODE: + p = aScrDisp -> get_iitem(mn -> curFunction); + iShopItem = (iListElement*)p; + aciInitAviID(); + aciInitShopAvi(); + mn -> flags &= ~FM_ACTIVE; + break; + case WEAPONS_LIST_MODE: + p = aScrDisp -> get_iitem(mn -> curFunction); + iShopItem = (iListElement*)p; + aciInitAviID(); + aciInitShopAvi(); + mn -> flags &= ~FM_ACTIVE; + break; + } + } + else { + if(iEvLineID == MECHOS_LIST_MODE || iEvLineID == MECHOS_MODE){ + id = ((invMatrix*)iShopItem) -> type; + if(id != mn -> curFunction){ + aciSetShopItem(mn -> curFunction); + iScrDisp -> end_event(); + } + } + else { + id = ((invItem*)iShopItem) -> ID; + if(id != mn -> curFunction){ + aciSetShopItem(mn -> curFunction); + iScrDisp -> end_event(); + } + } + aciInitAviID(); + aciInitShopAvi(); + if(itm == mn -> curItem) + mn -> flags &= ~FM_ACTIVE; + } +} + +#ifdef _ACI_CHECK_DIALOGS_ +int aciBadPhraseFlag = 0; +#endif + +//TODO need fast malloc and need rewrite! +void aciInitPanel(InfoPanel* p,unsigned char* str) +{ + int i = 0,quit_log = 0,sz = strlen((char*)str),str_len,len,col; + unsigned char* dest_str,*ptr,*tmp_ptr; + + dest_str = new unsigned char[sz + 1]; + ptr = new unsigned char[sz + 1]; + tmp_ptr = ptr; + + str_len = sz; + strcpy((char*)ptr,(char*)str); + col = (aciCurColorScheme[FM_SELECT_BORDER_COL] << 8) | aciCurColorScheme[FM_SELECT_BORDER_COL]; + + while(!quit_log){ + strcpy((char*)dest_str,(char*)tmp_ptr); + + if(p -> flags & IP_RANGE_FONT) + len = aStrLen32(dest_str,ACI_PHRASE_FONT,p->hSpace); + else + len = aStrLen(dest_str,ACI_PHRASE_FONT,p->hSpace); + if(len < p->SizeX){ + if(p -> items -> Size >= p -> MaxStr){ + std::cout<<"Dialog phrase too long..."<add_item((char*)dest_str,-1,col); + sz -= strlen((char*)dest_str); + strcpy((char*)ptr, (char*)str); + if(sz <= 0) { + quit_log = 1; + } else { + tmp_ptr = ptr + (str_len - sz); + } + } + } else { + i = sz; + while(dest_str[i] != ' '){ + i --; + if(i <= 0){ + quit_log = 1; + break; + } + } + if(!quit_log) + tmp_ptr[i] = 0; + } + } + + delete[] dest_str; + delete[] ptr; +} + +void aciStartSpeech(void) +{ + aciML_EventSeq* seq; + int i,unlock_id,prepare2_id,prepare_id,speech_id,end_id,end2_id,lock_id,speech_sz,dropLev = 0; + + InfoPanel* p = aScrDisp -> get_info_panel(ACI_ANSWER_PANEL); + if(!p) return; + + aciSpeechMode = dgMood; + +#ifdef _ACI_ESCAVE_DEBUG_ + if(aci_dgMoodNext != -1){ + aciSpeechMode = aci_dgMoodNext; + aci_dgMoodNext = -1; + } +#endif + unlock_id = AML_UNLOCK0_SEQ + aciSpeechMode; + prepare2_id = AML_PREPARE0_SEQ2 + aciSpeechMode; + prepare_id = AML_PREPARE0_SEQ + aciSpeechMode; + speech_id = AML_SPEECH0_SEQ + aciSpeechMode; + end_id = AML_END0_SEQ + aciSpeechMode; + end2_id = AML_END0_SEQ2 + aciSpeechMode; + lock_id = AML_LOCK0_SEQ + aciSpeechMode; + + speech_sz = p -> items -> Size; + + aciSpeechSeq -> size = 0; + + for(i = 0; i < AML_MAX_DROP_EVENT; i ++) + aciSpeechSeq -> dropLevel[i] = -1; + + if(aciSpeechBegLocked || !aciSpeechStarted){ + seq = aciML_D -> getEventSeq(unlock_id); + if(seq){ + aciSpeechSeq -> mergeSeq(seq); + aciSpeechSeq -> dropLevel[dropLev] = seq -> dropLevel[0]; + dropLev ++; + } + aciSpeechStarted = 1; + } + seq = aciML_D -> getEventSeq(prepare2_id); + if(seq){ + aciSpeechSeq -> mergeSeq(seq); + aciSpeechSeq -> dropLevel[dropLev] = seq -> dropLevel[0]; + dropLev ++; + } + seq = aciML_D -> getEventSeq(prepare_id); + if(seq){ + aciSpeechSeq -> mergeSeq(seq); + aciSpeechSeq -> dropLevel[dropLev] = seq -> dropLevel[0]; + dropLev ++; + } + seq = aciML_D -> getEventSeq(speech_id); + if(seq){ + for(i = 0; i < speech_sz; i ++) + aciSpeechSeq -> mergeSeq(seq); + } + + seq = aciML_D -> getEventSeq(end_id); + if(seq){ + aciSpeechSeq -> mergeSeq(seq); + aciSpeechSeq -> dropLevel[dropLev] = seq -> dropLevel[0]; + dropLev ++; + } + seq = aciML_D -> getEventSeq(end2_id); + if(seq){ + aciSpeechSeq -> mergeSeq(seq); + aciSpeechSeq -> dropLevel[dropLev] = seq -> dropLevel[0]; + dropLev ++; + } + if(aciSpeechEndLocked){ + seq = aciML_D -> getEventSeq(lock_id); + if(seq){ + aciSpeechSeq -> mergeSeq(seq); + aciSpeechSeq -> dropLevel[dropLev] = seq -> dropLevel[0]; + dropLev ++; + } + } + + aciSpeechSeq -> ChannelID = aciML_D -> curDataSet -> SpeechChannel; + aciML_D -> SeqList[0] -> putSeq(aciSpeechSeq); + + aciSpeechBegLocked = aciSpeechEndLocked; +} + +void aciNextPhrase(void) +{ + unsigned char* str; + iScreenObject* obj; + InfoPanel* p = aScrDisp -> get_info_panel(ACI_ANSWER_PANEL); + if(!p || !p -> iScreenOwner) return; + + if(aciEscaveDead){ + aciClearQuestMenu(); + obj = (iScreenObject*)p -> iScreenOwner -> owner; + p -> free_list(); + + str = (unsigned char*)dgD -> getQdead(); + if(str) aciInitPanel(p,str); + p -> set_redraw(); + return; + } + + if(!aciSpeechStarted && dgD -> isEnd()) + aciSpeechEndLocked = aciSpeechBegLocked = aciEndSpeech = 1; + + aciClearQuestMenu(); + obj = (iScreenObject*)p -> iScreenOwner -> owner; + + p -> free_list(); + + str = (unsigned char*)dgD -> getNextPhrase(); + + if(aciEndSpeech){ + if(!dgD -> isEnd()){ + aciEndSpeech = 0; + } + else { + p -> set_redraw(); + return; + } + } + + if(str) + aciInitPanel(p,str); + + aciSpeechEndLocked = dgD -> isEnd(); + + if(str && !aciEscaveEmpty) + aciStartSpeech(); + p -> set_redraw(); +} + +int aciCheckCredits(void) +{ + invItem* p; + invMatrix* m; + uvsActInt* u; + + int cr = aciGetCurCredits(); + + if(iEvLineID == MECHOS_MODE || iEvLineID == MECHOS_LIST_MODE){ + m = (invMatrix*)iShopItem; + u = (uvsActInt*)m -> uvsDataPtr; + + if(m -> flags & IM_NOT_COMPLETE) return 0; + } + + if(aScrDisp -> flags & AS_INV_MOVE_ITEM){ + if(aScrDisp -> curItem -> partData) return 1; + if(!((uvsActInt*)aScrDisp -> curItem -> uvsDataPtr) -> sell_price) return 0; + return 1; + } + + if(iEvLineID == EMPTY_MODE) + return 0; + + if(iEvLineID == MECHOS_MODE || iEvLineID == MECHOS_LIST_MODE){ + if(u -> price > cr + aciGetCurMatrixPrice()) return 0; + } + else { + p = (invItem*)iShopItem; + u = (uvsActInt*)p -> uvsDataPtr; + if(u -> price > cr) return 0; + } + return 1; +} + +int aciCheckItemCredits(void) +{ + int cr = aciGetCurCredits(); + if(aScrDisp -> flags & AS_INV_MOVE_ITEM){ + if(((uvsActInt*)aScrDisp -> curItem -> uvsDataPtr) -> price > cr) return 0; + return 1; + } + return 0; +} + +char* aciGetPrice(iListElement* p,int mode,int sell_mode) +{ + char* ptr; + invItem* it; + invMatrix* m; + uvsActInt* u; + + if(mode == MECHOS_MODE){ + m = (invMatrix*)p; + u = (uvsActInt*)m -> uvsDataPtr; + } + else { + it = (invItem*)p; + u = (uvsActInt*)it -> uvsDataPtr; + } + + aciXConv -> init(); + + if(!u){ + *aciXConv < aciSTR_UNDEFINED_PRICE; + return aciXConv -> address(); + } + + *aciXConv < aciSTR_PRICE; + + if(sell_mode) + *aciXConv <= u -> sell_price < " $"; + else + *aciXConv <= u -> price < " $"; + ptr = aciXConv -> address(); + + return ptr; +} + +void aciInitCurMatrixPtr(void) +{ + aScrDisp -> curMatrix -> uvsDataPtr = GGamerMechos; +} + +int aciGetCurMatrixPrice(void) +{ + int price = 0; + +// invItem* p; + uvsActInt* u; + + if(!aScrDisp -> curMatrix) return 0; + u = (uvsActInt*)aScrDisp -> curMatrix -> uvsDataPtr; + if(!u) ErrH.Abort("Bad CurMatrix..."); + price += u -> sell_price; +/* + p = (invItem*)aScrDisp -> curMatrix -> items -> last; + while(p){ + u = (uvsActInt*)p -> uvsDataPtr; + if(!u) ErrH.Abort("Bad CurMatrix item..."); + price += u -> price; + p = (invItem*)p -> prev; + } +*/ + return price; +} + +void aciBuildQuestList(void) +{ + int cd = 0; + char* p; + if(!aScrDisp -> qMenu) return; + + if(aciEscaveDead || aciEscaveEmpty) return; + + fncMenuItem* itm; + fncMenu* m; + + p = dgD -> findQfirst(); + if(!p) return; + + aScrDisp -> qMenu -> finit(); + aScrDisp -> qMenu -> init(); + + p = dgD -> getQprefix(); + if(p){ + m = new fncMenu; + m -> flags |= FM_RANGE_FONT; + itm = aScrDisp -> alloc_menu_item(); + itm -> init_name(p); + itm -> fnc_code = 0; + + itm -> font = ACI_PHRASE_FONT; + itm -> space = 1; + + itm -> init(); + m -> add_item(itm); + + aScrDisp -> qMenu -> add(m); + } + + p = dgD -> findQfirst(); + if(p){ + m = new fncMenu; + m -> flags |= FM_RANGE_FONT; + while(p){ + itm = aScrDisp -> alloc_menu_item(); + itm -> init_name(p); + itm -> fnc_code = cd; + + itm -> font = ACI_PHRASE_FONT; + itm -> space = 1; + + itm -> init(); + m -> add_item(itm); + + cd ++; + + p = dgD -> findQnext(); + } + aScrDisp -> qMenu -> add(m,1); + } + + p = dgD -> getQpostfix(); + if(p){ + m = new fncMenu; + m -> flags |= FM_RANGE_FONT; + itm = aScrDisp -> alloc_menu_item(); + itm -> init_name(p); + itm -> fnc_code = 0; + + itm -> font = ACI_PHRASE_FONT; + itm -> space = 1; + + itm -> init(); + m -> add_item(itm); + + aScrDisp -> qMenu -> add(m); + } + aScrDisp -> qMenu -> init_redraw(); + aScrDisp -> qMenu -> build(); + aScrDisp -> qMenu -> set_redraw(); +} + +void aciShowBlockPhrase(void) +{ + char* str; + InfoPanel* p = aScrDisp -> get_info_panel(ACI_ANSWER_PANEL); + if(!p) return; + + str = dgD -> getQblock(); + + if(str){ + p -> free_list(); + aciInitPanel(p,(unsigned char*)str); + p -> set_redraw(); + } +} + +void aciAskQuestion(void) +{ + char* str,*subj; + fncMenuSet* m = aScrDisp -> qMenu; + InfoPanel* p = aScrDisp -> get_info_panel(ACI_ANSWER_PANEL); + if(!p || !m) return; + + if(aciEscaveDead || aciEscaveEmpty) return; + + if(!(m -> flags & FMC_DATA_INIT)){ + str = dgD -> getQempty(); + } + else { + subj = m -> get(); + str = dgD -> getAnswer(subj); + } + + if(str){ + p -> free_list(); + aciInitPanel(p,(unsigned char*)str); + p -> set_redraw(); + } + aciStartSpeech(); +} + +void aciEscaveKickOut(void) +{ + char* str; + InfoPanel* p = aScrDisp -> get_info_panel(ACI_ANSWER_PANEL); + if(!p) return; + + str = dgD -> getQout(); + + if(str){ + p -> free_list(); + aciInitPanel(p,(unsigned char*)str); + p -> set_redraw(); + } + aciStartSpeech(); +} + +int aciCheckItemPickUp(actintItemData* p) +{ + invItem* itm = aScrDisp -> get_item(p -> type); + if((itm -> classID == AS_ITEM_CLASS && aciPickupItems) || (itm -> classID == AS_WEAPON_CLASS && aciPickupDevices)) + return 1; + return 0; +} + +void aciSet_aMouse(void) +{ + MouseSizeX = aMouseSizeX; + MouseSizeY = aMouseSizeY; + MouseSize = aMouseSize; + MouseFrames = aMouseFrames; +} + +void aciSet_iMouse(void) +{ + MouseSizeX = iMouseSizeX; + MouseSizeY = iMouseSizeY; + MouseSize = iMouseSize; + MouseFrames = iMouseFrames; +} + +void aciClearQuestMenu(void) +{ + fncMenuSet* m; + m = aScrDisp -> qMenu; + + if(m && m -> flags & FMC_DATA_INIT){ + m -> finit(); + m -> redraw(); + m -> redraw_owner(); + } +} + +void aciOfferEleech(void) +{ + int w_id = aScrDisp -> wMap -> world_ptr[aScrDisp -> curLocData -> WorldID] -> uvsID; + aciML_SendEvent(AML_KEY_TRAP,AML_KEY,AML_ELEECH_CODE); + WaitGameInTown(w_id); +} + +void aciWaitNextPeriod(void) +{ + int w_id = aScrDisp -> wMap -> world_ptr[aScrDisp -> curLocData -> WorldID] -> uvsID; + WaitGameInTown(w_id); +} + +void aciOfferWeezyk(void) +{ + aciML_SendEvent(AML_KEY_TRAP,AML_KEY,AML_ELEECH_CODE); +} + +void aciGetEleech(void) +{ + listElem* el; + uvsActInt* u; + invItem* p,*p1; + if(!GCharItem) return; + u = GCharItem; + + p = aScrDisp -> get_iitem(u -> type); + p1 = aScrDisp -> alloc_item(); + p -> clone(p1); + + if(aScrDisp -> flags & AS_INV_MOVE_ITEM){ + aScrDisp -> flags ^= AS_INV_MOVE_ITEM; + aciSell_Item(aScrDisp -> curItem); + aScrDisp -> curItem = NULL; + } + + aScrDisp -> flags |= AS_INV_MOVE_ITEM; + aScrDisp -> curItem = p1; + set_mouse_cursor(p1 -> frame,p1 -> ScreenSizeX,p1 -> ScreenSizeY); + + el = (listElem*)GGamer; + u -> link(el); + GGamer = (uvsActInt*)el; + p1 -> uvsDataPtr = u; + + GCharItem = NULL; +} + +char* aciGetItemLoad(invItem* p,int mode) +{ + char* ptr; + aciXConv -> init(); + + if(p -> pTemplate){ + switch(mode){ + case 0: + if(p -> flags & INV_ITEM_SHOW_ESCAVE){ + if(p -> item_ptr) + sprintf(aciXConv -> address(),p -> pTemplate,aciGetItemEscave(p -> item_ptr -> data1)); + } + else { + if(p -> item_ptr) + sprintf(aciXConv -> address(),p -> pTemplate,p -> item_ptr -> data1); + } + break; + case 1: + if(p -> flags & INV_ITEM_SHOW_ESCAVE){ + if(p -> uvsDataPtr) + sprintf(aciXConv -> address(),p -> pTemplate,aciGetItemEscave(((uvsActInt*)p -> uvsDataPtr) -> param2)); + } + else { + if(p -> uvsDataPtr) + sprintf(aciXConv -> address(),p -> pTemplate,((uvsActInt*)p -> uvsDataPtr) -> param2); + } + break; + } + } + ptr = aciXConv -> address(); + + return ptr; +} + +void aciAddTeleportMenuItem(int id,int fnc_id) +{ + const char* ptr; + fncMenu* mn; + fncMenuItem* itm; + invMatrix* m; + + mn = aScrDisp -> get_menu(FMENU_TELEPORT_MENU); + if(!mn) return; + + if(id == -1){ + if (lang() == RUSSIAN) { + if (strcmp(aci_curLocationName, (char*)eCmpPodish) == 0) ptr = rCmpPodish; + else if (strcmp(aci_curLocationName, (char*)eCmpVigBoo) == 0) ptr = rCmpVigBoo; + else if (strcmp(aci_curLocationName, (char*)eCmpZeePa) == 0) ptr = rCmpZeePa; + } + else ptr = aci_curLocationName; + } + else { + m = aScrDisp -> get_matrix(id); + ptr = m -> mech_name; + } + + itm = aScrDisp -> alloc_menu_item(); + itm -> init_name(ptr); + itm -> font = FMENU_TARGETS_FONT; + itm -> space = FMENU_TARGETS_SPACE; + itm -> fnc_code = fnc_id; + itm -> flags |= FM_RANGE_FONT; + itm -> init(); + mn -> add_item(itm); + mn -> init_objects(); + + if(mn -> flags & FM_ACTIVE && aScrDisp -> curMode == AS_INFO_MODE) + mn -> set_redraw(); +} + +void aciDeleteTeleportMenuItem(int fnc_id) +{ + fncMenu* m = aScrDisp -> get_menu(FMENU_TELEPORT_MENU); + if(!m) return; + + m -> deactivate_item(fnc_id); + + if(m -> flags & FM_ACTIVE && aScrDisp -> curMode == AS_INFO_MODE) + m -> set_redraw(); +} + +void aciAdd2Targets(char* p) +{ + char* ptr; + + fncMenu* mn; + fncMenuItem* itm; + + mn = aScrDisp -> get_menu(FMENU_TARGETS_MENU); + if(!mn) return; + + itm = aScrDisp -> alloc_menu_item(); + itm -> init_name(p); + itm -> font = FMENU_TARGETS_FONT; + itm -> space = FMENU_TARGETS_SPACE; + itm -> fnc_code = FMENU_OFF; + itm -> init(); + mn -> add_item(itm); + + // rebuild... + ptr = GetCompasTarget(); + + if(ptr) + mn -> curItem = mn -> get_obj(ptr); + else + mn -> curItem = mn -> get_obj(aciSTR_OFF); + + mn -> firstItem = mn -> curItem; + mn -> init_objects(); + + if(mn -> flags & FM_ACTIVE && aScrDisp -> curMode == AS_INFO_MODE) + mn -> set_redraw(); +} + +void aciRefreshTargetsMenu(void) +{ + char* ptr; + fncMenu* mn; + + mn = aScrDisp -> get_menu(FMENU_TARGETS_MENU); + if(!mn) return; + + ptr = GetCompasTarget(); + + if(ptr) + mn -> curItem = mn -> get_obj(ptr); + else + mn -> curItem = mn -> get_obj(aciSTR_OFF); + + mn -> init_objects(); + + if(mn -> flags & FM_ACTIVE && aScrDisp -> curMode == AS_INFO_MODE) + mn -> set_redraw(); +} + +void aciDeleteFromTargets(char* p) +{ + char* ptr; + fncMenu* mn; + fncMenuItem* itm; + + mn = aScrDisp -> get_menu(FMENU_TARGETS_MENU); + if(!mn) return; + + itm = mn -> get_obj(p); + + if(itm == mn -> curItem) + SelectCompasTarget(NULL); + + if(itm){ + mn -> delete_obj(itm); + aScrDisp -> free_menu_item(itm); + } + + // rebuild... + ptr = GetCompasTarget(); + + if(ptr) + mn -> curItem = mn -> get_obj(ptr); + else + mn -> curItem = mn -> get_obj(aciSTR_OFF); + + mn -> firstItem = mn -> curItem; + mn -> init_objects(); + + if(mn -> flags & FM_ACTIVE && aScrDisp -> curMode == AS_INFO_MODE) + mn -> set_redraw(); +} + +void aciChangeAviIndex(void) +{ + switch(aciCurAviIndex){ + case ACI_PICTURE_AVI_ENG: + aciCurAviIndex = (lang() == RUSSIAN) ? ACI_TEXT_AVI_RUS : ACI_TEXT_AVI_ENG; + break; + case ACI_TEXT_AVI_RUS: + case ACI_TEXT_AVI_ENG: + aciCurAviIndex = ACI_PICTURE_AVI_ENG; + break; + } + aciInitAviID(); +} + +void aciShowCamerasMenu(int x,int y,int sx,int sy) +{ + aciBitmapMenu* p = aScrDisp -> get_bmenu(BMENU_CAMERAS_MENU); + if(!p) return; + + if(p -> activeCount){ + p -> curCount --; + if(p -> curCount <= 0){ + p -> go2upmenu(); + return; + } + } + p -> redraw(x,y,sx,sy); +} + +void aciHandleCameraEvent(int code,int data) +{ + aciBitmapMenu* m; + aciBitmapMenuItem* p; + switch(code){ + case BMENU_ITEM_ROT: + camera_rotate_enable = data; + iScrOpt[iCAMERA_TURN]->SetValueINT(data); + if(RAM16 && data){ + camera_moving_xy_enable = camera_moving_z_enable = 0; + camera_slope_enable = 0; + } + break; + case BMENU_ITEM_ZOOM: + camera_moving_xy_enable = camera_moving_z_enable = data; + iScrOpt[iCAMERA_SCALE]->SetValueINT(data); + if(RAM16 && data){ + camera_rotate_enable = 0; + camera_slope_enable = 0; + } + break; + case BMENU_ITEM_PERSP: + camera_slope_enable = data; + iScrOpt[iCAMERA_SLOPE]->SetValueINT(data); + if(RAM16 && data){ + camera_moving_xy_enable = camera_moving_z_enable = 0; + camera_rotate_enable = 0; + } + break; + } + if(RAM16 && data){ + m = aScrDisp -> get_bmenu(BMENU_CAMERAS_MENU); + if(m){ + p = (aciBitmapMenuItem*)m -> items -> last; + while(p){ + if(p -> ID != code) p -> curState = 0; + p = (aciBitmapMenuItem*)p -> prev; + } + } + } + iSaveData(); + +} + +void aciSetCameraMenu(void) +{ + aciBitmapMenu* m; + aciBitmapMenuItem* p; + + m = aScrDisp -> get_bmenu(BMENU_CAMERAS_MENU); + if(m){ + p = (aciBitmapMenuItem*)m -> items -> last; + while(p){ + switch(p -> ID){ + case BMENU_ITEM_ROT: + p -> curState = camera_rotate_enable; + iScrOpt[iCAMERA_TURN]->SetValueINT(camera_rotate_enable); + break; + case BMENU_ITEM_ZOOM: + p -> curState = camera_moving_xy_enable; + iScrOpt[iCAMERA_SCALE]->SetValueINT(camera_moving_xy_enable); + break; + case BMENU_ITEM_PERSP: + p -> curState = camera_slope_enable; + iScrOpt[iCAMERA_SLOPE]->SetValueINT(camera_slope_enable); + break; + } + p = (aciBitmapMenuItem*)p -> prev; + } + } + m -> flags |= BM_REBUILD; + iSaveData(); +} + +void aciPay4Item(invItem* p) +{ + int cr = aciGetCurCredits(); + uvsActInt* u = (uvsActInt*)p -> uvsDataPtr; + cr -= u -> price; + aciUpdateCurCredits(cr); + p -> flags &= ~INV_ITEM_NO_PAY; +} + +void aciHandleSubmenuEvent(int id,fncMenuItem* p) +{ + if(p -> eventPtr){ + aci_SendEvent(p -> eventPtr -> code,p -> eventPtr -> data); + return; + } + switch(id){ + case FMENU_TARGETS_MENU: + if(strcmp(p -> name,aciSTR_OFF)){ + SelectCompasTarget(p -> name); + } + else { + SelectCompasTarget(NULL); + } + break; + case FMENU_TELEPORT_MENU: + aciTeleportEvent = p -> fnc_code; + break; + } +} + +int aciGetCurCycle(void) +{ +#ifdef _ACI_ESCAVE_DEBUG_ + return 1; +#else + return uvsCurrentCycle; +#endif +} + +#ifdef _DEBUG +void aciChangeMouseItem(void) +{ + invItem* temp_item; + + if(aScrDisp -> flags & AS_ISCREEN){ + temp_item = aScrDisp -> get_iitem(aScrDisp -> curItem -> ID + 1); + } + else { + temp_item = aScrDisp -> get_item(aScrDisp -> curItem -> ID + 1); + } + if(!temp_item){ + if(aScrDisp -> flags & AS_ISCREEN){ + temp_item = aScrDisp -> get_iitem(1); + } + else { + temp_item = aScrDisp -> get_item(1); + } + } + temp_item -> clone(aScrDisp -> curItem); + set_mouse_cursor(aScrDisp -> curItem -> frame,aScrDisp -> curItem -> ScreenSizeX,aScrDisp -> curItem -> ScreenSizeY); +} +#endif + +void aciInitMechosInfo(invMatrix* p,InfoPanel* ip) +{ + ip -> free_list(); + if(p){ + ip -> add_item(p -> mech_name,-1,aciCurColorScheme[FM_SELECT_COL]); + if(!uvsCurrentWorldUnable){ + if(GMechos) + ip -> add_item(aciGetPrice((iListElement*)p,MECHOS_MODE,1)); + } + ip -> set_redraw(); + } +} + +int aciCheckSlot(void) +{ + if(!aScrDisp -> curMatrix) return 0; + return aScrDisp -> curMatrix -> check_slot(AS_DEVICE_SLOT); +} + +void aciSaveData(void) +{ + acsSaveData(); +} + +void aciLoadData(void) +{ + acsLoadData(); +} + +void aciPackFile(char* fname) +{ + int sz, sz1; + char* p, *p1; + + XStream fh(fname,XS_IN); + + sz1 = sz = fh.size(); + sz1+=12; + p = new char[sz]; + p1 = new char[sz1]; + fh.read(p,sz); + fh.close(); + + //sz1 = ZIP_compress(p1,sz,p,sz); + /* ZLIB realization (stalkerg)*/ + p1[0] = (char)(8 & 0xFF); //8 it is DEFLATE method + p1[1] = (char)((8 >> 8) & 0xFF); + *(unsigned int*)(p1 + 2) = (unsigned int)sz; + sz1-=2+4; + int stat = compress((Bytef*)(p1+2+4),(uLongf*)&(sz1),(Bytef*)p,sz); + sz1+=2+4; + switch(stat){ + //case Z_OK: std::cout<<"Compress ok."< " <= i < "..."; + } + + aMemStatFile < "\r\n\r\n ---------------------------------------- \r\n"; +} +#endif + +void ibsout(int x,int y,void* ptr, uint8_t *renderBuffer) +{ + int _x,_y,cnt; + int* offs_table = XGR_Obj.yOffsTable; + + unsigned char* vbuf = renderBuffer == NULL ? XGR_VIDEOBUF : renderBuffer; + unsigned char* pbuf = (unsigned char*)ptr; + + cnt = *((int*)pbuf); + pbuf += 4; + while(cnt){ + _x = *((int*)pbuf); + pbuf += 4; + _y = *((int*)pbuf); + pbuf += 4; + + memcpy(vbuf + offs_table[_y + y] + _x + x,pbuf,cnt); + pbuf += cnt; + + cnt = *((int*)pbuf); + pbuf += 4; + } +} + +void ibsout(int x,int y,void* ptr) +{ + ibsout(x, y, ptr, NULL); +} + +void aciPrepareMenus(void) +{ + + aScrDisp -> clean_menus(); + aScrDisp -> prepare_menus(); + aciPrepareWorldsMenu(); +} + +void aciPrepareWorldsMenu(void) +{ + int i; + aciWorldInfo* p1; + if(CurrentWorld == -1) return; + fncMenu* p = aScrDisp -> get_menu(FMENU_WORLDS_MENU); + if(p){ + p -> prepare_items(); + for(i = 0; i < AS_MAX_WORLD; i ++){ + if(!aScrDisp -> wMap -> world_key(i)){ + p -> deactivate_item(1000 + i); + } + } + if(aScrDisp -> flags & AS_WORLDS_INIT){ + p1 = (aciWorldInfo*)aScrDisp -> wMap -> world_list -> last; + while(p1){ + if(p1 -> uvsID == CurrentWorld) p -> deactivate_item(1000 + p1 -> ID); + p1 = (aciWorldInfo*)p1 -> prev; + } + } + } +} + +void aciChangeWorld(int w_id) +{ + int i,cur_id,fl = 0; + aciWorldInfo* p,*p1; + + if(w_id == -1) return; + cur_id = aScrDisp -> wMap -> world_ids[w_id]; + if(cur_id == -1) return; + + p = aScrDisp -> wMap -> world_ptr[cur_id]; + if(!p) return; + + for(i = 0; i < AS_MAX_WORLD; i ++){ + p1 = aScrDisp -> wMap -> world_ptr[i]; + if(p1){ + if(p1 -> flags & AS_ACCESSIBLE_WORLD){ + p1 -> flags &= ~AS_ACCESSIBLE_WORLD; + fl = 1; + } + if(p1 -> flags & AS_CURRENT_WORLD){ + p1 -> flags &= ~AS_CURRENT_WORLD; + p1 -> flags |= AS_VISIBLE_WORLD; + } + } + } + if(fl){ + for(i = 0; i < AS_MAX_WORLD; i ++){ + p1 = aScrDisp -> wMap -> world_ptr[i]; + if(i != cur_id && p1){ + if(p1 -> links[cur_id] || p -> links[i]){ + p1 -> flags |= AS_ACCESSIBLE_WORLD; + } + } + } + } + p -> flags |= AS_CURRENT_WORLD; + aScrDisp -> wMap -> flags |= WMAP_REBUILD_PIC; +} + +void aciInitShopButtons(void) +{ + iScreenObject* obj; + iScreenElement* p,*p1,*p2,*p3,*p4; + + fncMenu* mn = aScrDisp -> get_imenu(SHOP_ITEMS_MENU_ID); + + p = NULL; + p1 = (iScreenElement*)aScrDisp -> curLocData -> objList[ACI_WEAPONS_BUTTON_ID]; + p2 = (iScreenElement*)aScrDisp -> curLocData -> objList[ACI_MECHOS_BUTTON_ID]; + p3 = (iScreenElement*)aScrDisp -> curLocData -> objList[ACI_ITEMS_BUTTON_ID]; + p4 = (iScreenElement*)aScrDisp -> curLocData -> objList[ACI_MENU_BUTTON_ID]; + + if(p1){ + obj = (iScreenObject*)p1 -> owner; + p1 -> change_terrainNum(aScrDisp -> curLocData -> numIndex[ACI_BUTTON_OFF_TYPE]); + obj -> flags |= OBJ_MUST_REDRAW; + } + if(p2){ + obj = (iScreenObject*)p2 -> owner; + p2 -> change_terrainNum(aScrDisp -> curLocData -> numIndex[ACI_BUTTON_OFF_TYPE]); + obj -> flags |= OBJ_MUST_REDRAW; + } + if(p3){ + obj = (iScreenObject*)p3 -> owner; + p3 -> change_terrainNum(aScrDisp -> curLocData -> numIndex[ACI_BUTTON_OFF_TYPE]); + obj -> flags |= OBJ_MUST_REDRAW; + } + if(p4){ + obj = (iScreenObject*)p4 -> owner; + obj -> flags |= OBJ_MUST_REDRAW; + + if(mn && mn -> flags & FM_ACTIVE) + p4 -> change_terrainNum(aScrDisp -> curLocData -> numIndex[ACI_BUTTON_ON_TYPE]); + else + p4 -> change_terrainNum(aScrDisp -> curLocData -> numIndex[ACI_BUTTON_OFF_TYPE]); + } + + switch(iEvLineID){ + case MECHOS_MODE: + case MECHOS_LIST_MODE: + case CHANGE_2_MECHOS_MODE: + p = p2; + break; + case WEAPONS_MODE: + case WEAPONS_LIST_MODE: + case CHANGE_2_WEAPONS_MODE: + p = p1; + break; + case ITEMS_MODE: + case ITEMS_LIST_MODE: + case CHANGE_2_ITEMS_MODE: + p = p3; + break; + } + if(p){ + p -> change_terrainNum(aScrDisp -> curLocData -> numIndex[ACI_BUTTON_ON_TYPE]); + } +} + +void mem_rectangle(int x,int y,int sx,int sy,int bsx,int col_in,int col_out,int mode,void* buf) +{ + int i,index,_sx,_sy; + unsigned char* p = (unsigned char*)buf; + + index = x + y * bsx; + memset(p + index,col_out,sx); + for(i = 0; i < sy; i ++){ + p[index] = p[index + sx - 1] = col_out; + index += bsx; + } + memset(p + index - bsx,col_out,sx); + + if(mode){ + _sx = sx - 2; + _sy = sy - 2; + + if(_sx <= 0 || _sy <= 0) return; + index = (x + 1) + (y + 1) * bsx; + for(i = 0; i < _sy; i ++){ + memset(p + index,col_in,_sx); + index += bsx; + } + } +} + +void aciGetItemCoords(actintItemData* p,int& x,int& y) +{ + invItem* itm = (invItem*)p -> actintOwner; + + x = itm -> MatrixX; + y = itm -> MatrixY; +} + +void aciGetItemCoords(int id,int& x,int& y) +{ + invItem* itm; + if(!aScrDisp -> curMatrix) return; + itm = (invItem*)aScrDisp -> curMatrix -> items -> last; + + while(itm){ + if(itm -> ID == id){ + x = itm -> MatrixX; + y = itm -> MatrixY; + return; + } + itm = (invItem*)itm -> prev; + } +} + +int aciPutItem(int id,int x,int y) +{ + invItem* p,*p1; + if(aScrDisp -> flags & AS_ISCREEN) + p1 = aScrDisp -> get_iitem(id); + else + p1 = aScrDisp -> get_item(id); + + if(!p1) ErrH.Abort("Bad aciPutItem() argument..."); + p = aScrDisp -> alloc_item(); + + p1 -> clone(p); + p -> item_ptr = NULL; + + if(aScrDisp -> curMatrix){ + if(x != -1){ + if(!aScrDisp -> put_item_xy(p,x,y,0)){ + aScrDisp -> free_item(p); + return 0; + } + } + else { + if(!aScrDisp -> put_item_auto(p)){ + aScrDisp -> free_item(p); + return 0; + } + } + return 1; + } + aScrDisp->free_item(p); + return 0; +} + +void aciRemoveItem(actintItemData* d) +{ + aScrDisp -> remove_item(d); +} + +void aciNewMechos(int newID) +{ + if(aScrDisp -> curMatrix) + aScrDisp -> free_matrix(aScrDisp -> curMatrix); + + if(newID != -1) + aScrDisp -> curMatrix = aScrDisp -> alloc_matrix(newID); + else + aScrDisp -> curMatrix = NULL; +} + +void aciPromptData::free_mem(void) +{ + int i; + if(StrBuf){ + for(i = 0; i < NumStr; i ++){ + if(StrBuf[i]) + delete[] StrBuf[i]; + } + delete[] StrBuf; + } + if(TimeBuf) { + delete[] TimeBuf; + } + if(PosX) { + delete[] PosX; + } + if(PosY) { + delete[] PosY; + } + if(ColBuf) { + delete[] ColBuf; + } + + StrBuf = NULL; + TimeBuf = NULL; + + PosX = NULL; + PosY = NULL; + + ColBuf = NULL; + + NumStr = 0; + fontID = -1; +} + +aciPromptData::~aciPromptData(void) +{ + free_mem(); +} + +aciPromptData::aciPromptData(int size) +{ + NumStr = 0; + StrBuf = NULL; + TimeBuf = NULL; + PosX = NULL; + PosY = NULL; + ColBuf = NULL; + align_type = ACI_PROMPT_UP; + CurTimer = 0; + fontID = -1; + + alloc_mem(size); +} + +void aciPromptData::alloc_mem(int size) +{ + int i; + NumStr = size; + StrBuf = new unsigned char*[size]; + TimeBuf = new int[size]; + PosX = new int[size]; + PosY = new int[size]; + ColBuf = new unsigned int[size]; + for(i = 0; i < size; i ++){ + StrBuf[i] = NULL; + TimeBuf[i] = 0; + ColBuf[i] = 0; + } + fontID = -1; +} + +void aciPromptData::copy_data(aciPromptData* src) +{ + int i,sz; + free_mem(); + alloc_mem(src -> NumStr); + + align_type = src -> align_type; + + if(src -> StrBuf){ + for(i = 0; i < NumStr; i ++){ + if(src -> StrBuf[i]){ + sz = strlen((char*)src -> StrBuf[i]) + 1; + StrBuf[i] = new unsigned char[sz]; + strcpy((char*)StrBuf[i],(char*)src -> StrBuf[i]); + TimeBuf[i] = src -> TimeBuf[i]; + ColBuf[i] = src -> ColBuf[i]; + } + } + } + CurTimer = 0; +} + +#define ACI_PROMPT_OFFSET 50 + +#define ACI_PROMPT_FONT 7 +#define ACI_PROMPT_COLOR 175 + +#define ACI_PROMPT_DELTA_X 1 +#define ACI_PROMPT_DELTA_Y 1 +void aciPromptData::redraw(int scr_x,int scr_y,int scr_sx,int scr_sy) +{ + int i,x,y,sy = 0,sx,sz; + if(!StrBuf) return; + + int font = ACI_PROMPT_FONT; + + if(!(aScrDisp -> flags & AS_FULLSCR)){ + font = aScrDisp -> curIbs -> fontID; + } + if(fontID != -1) font = fontID; + + if(align_type == ACI_PROMPT_CENTER){ + for(i = 0; i < NumStr; i ++){ + if(StrBuf[i]){ + sy += aScrFonts[font] -> SizeY + ACI_PROMPT_DELTA_Y; + } + } + y = scr_y + (scr_sy - sy) / 2; + } + else + y = scr_y + ACI_PROMPT_OFFSET; + + for(i = 0; i < NumStr; i ++){ + if(StrBuf[i]){ + sx = aStrLen(StrBuf[i],font,ACI_PROMPT_DELTA_X); + x = scr_x + (scr_sx - sx) / 2; + PosX[i] = x; + PosY[i] = y; + +// if(x < 0) ErrH.Abort("Prompt string out of screen..."); + while(x < 0){ + sz = strlen((char*)StrBuf[i]) - 1; + StrBuf[i][sz] = 0; + sx = aStrLen(StrBuf[i],font,ACI_PROMPT_DELTA_X); + x = scr_x + (scr_sx - sx) / 2; + PosX[i] = x; + PosY[i] = y; + } + + y += aScrFonts[font] -> SizeY + ACI_PROMPT_DELTA_Y; + } + } + aWriteHelpString(NumStr,PosX,PosY,font,StrBuf,CurTimer,ACI_PROMPT_COLOR,1,ColBuf); +} + +void aciPromptData::add_str(int num,unsigned char* p) +{ + int sz; + if(StrBuf[num]) delete[] StrBuf[num]; + sz = strlen((char*)p) + 1; + StrBuf[num] = new unsigned char[sz]; + strcpy((char*)StrBuf[num],(char*)p); +} + +void aciPromptData::quant(void) +{ + int i,sz = 0; + + if(!NumStr) return; + + if (NetworkON) { + CurTimer += 2; + } else { + CurTimer ++; + } + for(i = 0; i < NumStr; i ++){ + if(StrBuf[i]){ + if(CurTimer > TimeBuf[i]){ + delete[] StrBuf[i]; + StrBuf[i] = NULL; + } + else + sz ++; + } + } + if(!sz) free_mem(); +} + +void aciSendPrompt(aciPromptData* p) +{ + aScrDisp -> curPrompt -> copy_data(p); + aScrDisp -> curPrompt -> CurTimer = 0; +} + +void aciActivateItemFunction(int itemID,int fncID) +{ + fncMenu* m = NULL; + invItem* p = aScrDisp -> get_item(itemID); + if(p && p -> menu){ + m = (fncMenu*)p -> menu; + m -> activate_item(fncID + 2000); + } + + if(m && m -> flags & FM_ACTIVE && aScrDisp -> curMode == AS_INFO_MODE) + m -> set_redraw(); +} + +void aciDeactivateItemFunction(int itemID,int fncID) +{ + fncMenu* m = NULL; + invItem* p = aScrDisp -> get_item(itemID); + if(p && p -> menu){ + m = (fncMenu*)p -> menu; + m -> deactivate_item(fncID + 2000); + } + + if(m && m -> flags & FM_ACTIVE && aScrDisp -> curMode == AS_INFO_MODE) + m -> set_redraw(); +} + +int acsQuant(void) +{ + int ret,k,firstQuant = 0; + if(!acsAllocFlag){ + acsAllocFlag = 1; + if(NetworkON) aciKeyboardLocked = 1; + acsScrD -> curScrID = acsScreenID; + acsScrD -> QuantCode = 0; + XGR_MouseObj.DisablePrompt(); + XGR_MouseShow(); + acsScrD -> alloc_mem(); + + if (!(aScrDisp -> flags & AS_ISCREEN)) { acsScrD -> curScr -> ChangeCoords((XGR_MAXX - 640)/2, (XGR_MAXY - 480)/2); } + + EffectsOff(); + firstQuant = 1; + if(acsScrD -> curScrID >= 3){ + aciCloseGate(); + acsScrD -> Quant(0); + aciOpenGate(); + } + KeyBuf -> clear(); + } + while(KeyBuf->size){ + SDL_Event *e = KeyBuf->get(); + if (e->type == SDL_KEYDOWN) { + k = sdlEventToCode(e); + } + if (e->type == SDL_KEYDOWN || e->type == SDL_TEXTINPUT) { + acsScrD->KeyTrap(0, e); + if (e->key.keysym.scancode == SDL_SCANCODE_ESCAPE && !acsScrD -> QuantCode) { + acsScrD -> QuantCode = 1; + } + } + + } + if(aScrDisp -> flags & aMS_MOVED){ + acsScrD -> KeyTrap(iMOUSE_MOVE_CODE, nullptr); + aScrDisp -> flags ^= aMS_MOVED; + if(aciMouseFlagL){ + acsScrD -> KeyTrap(iMOUSE_LEFT_MOVE, nullptr); + } + if(aciMouseFlagR){ + acsScrD -> KeyTrap(iMOUSE_RIGHT_MOVE, nullptr); + } + } + if(aScrDisp -> flags & aMS_LEFT_PRESS){ + acsScrD -> KeyTrap(iMOUSE_LEFT_PRESS_CODE, nullptr); + aScrDisp -> flags ^= aMS_LEFT_PRESS; + } + if(aScrDisp -> flags & aMS_RIGHT_PRESS){ + acsScrD -> KeyTrap(iMOUSE_RIGHT_PRESS_CODE, nullptr); + aScrDisp -> flags ^= aMS_RIGHT_PRESS; + } + if(NetworkON){ + acsScrD -> flags |= ACS_FORCED_REDRAW; + ret = acsScrD -> Quant(actIntLog); + } + else + ret = acsScrD -> Quant(); + + if(firstQuant){ + acsPrepareSlotNameInput(acsCurrentSlotID,acsCurrentSlotNum); + acsScrD -> PrepareInput(acsCurrentSlotID); + } + if(ret){ + acsAllocFlag = 0; + if (!(aScrDisp -> flags & AS_ISCREEN)) { acsScrD -> curScr -> ChangeCoords(-(XGR_MAXX - 640)/2, -(XGR_MAXY - 480)/2); } + acsScrD -> free_mem(); + if(aScrDisp -> flags & AS_FULLSCR && !(aScrDisp -> flags & AS_ISCREEN)){ + XGR_MouseHide(); + } + else + aScrDisp -> flags &= ~AS_FULL_REDRAW; + + iScrDisp -> flags &= ~MS_LEFT_PRESS; + iScrDisp -> flags &= ~MS_RIGHT_PRESS; + iScrDisp -> flags &= ~MS_MOVED; + iHandleExtEvent(iEXT_UPDATE_TUTORIAL_MODE); + iHandleExtEvent(iEXT_UPDATE_SOUND_MODE); + iHandleExtEvent(iEXT_UPDATE_SOUND_VOLUME); + + if(NetworkON) aciKeyboardLocked = 0; + + acsScreenID = 1; + iSaveData(); + KeyBuf -> clear(); + return 1; + } + return 0; +} + +void acsHandleExtEvent(int code,int data0,int data1,int data2) +{ + int val,max_val,i_val,i_max_val; + switch(code){ + case ACS_GLOBAL_EXIT: + if(!(aScrDisp -> flags & AS_ISCREEN)) + GameQuantReturnValue = RTO_LOADING3_ID; + else { + iScrDisp -> flags |= SD_EXIT; + iScrExitCode = 1; + iAbortGameFlag = 1; + } + if(NetworkON) iMultiFlag = 1; + acsScrD -> QuantCode = 1; // resume game pause + if(!GameOverID) + GameOverID = GAME_OVER_ABORT; + break; + case ACS_INIT_TUTORIAL_MODE: + acsSetStrState(ACS_TUTORIAL_MODE,!iGetOptionValue(iTUTORIAL_ON)); + break; + case ACS_SET_TUTORIAL_MODE: + iSetOptionValue(iTUTORIAL_ON,!acsGetStrState(ACS_TUTORIAL_MODE)); + iHandleExtEvent(iEXT_UPDATE_TUTORIAL_MODE); + break; + case ACS_SET_AUTORUN_MODE: + aciAutoRun = acsGetStrState(ACS_AUTORUN_MODE); + iScrOpt[iAUTO_ACCELERATION]->SetValueINT(acsGetStrState(ACS_AUTORUN_MODE)); + break; + case ACS_SET_SOUND_MODE: + iSetOptionValue(iSOUND_ON,!acsGetStrState(ACS_SOUND_MODE)); + iHandleExtEvent(iEXT_UPDATE_SOUND_MODE); + break; + case ACS_SET_MUSIC_MODE: + iSetOptionValue(iMUSIC_ON,!acsGetStrState(ACS_MUSIC_MODE)); + iHandleExtEvent(iEXT_UPDATE_MUSIC_MODE); + break; + case ACS_INIT_AUTORUN_MODE: +// acsSetStrState(ACS_AUTORUN_MODE,aciAutoRun); + aciAutoRun = iGetOptionValue(iAUTO_ACCELERATION); + acsSetStrState(ACS_AUTORUN_MODE,iGetOptionValue(iAUTO_ACCELERATION)); + break; + case ACS_INIT_SOUND_MODE: + acsSetStrState(ACS_SOUND_MODE,!iGetOptionValue(iSOUND_ON)); + break; + case ACS_INIT_SOUND_VOLUME: + acsScrD -> SetScroller(ACS_SOUND_VOLUME,iGetOptionValue(iSOUND_VOLUME_CUR),iGetOptionValue(iSOUND_VOLUME_MAX)); + break; + case ACS_SET_SOUND_VOLUME: + val = acsScrD -> GetObjectValue(ACS_SOUND_VOLUME); + max_val = acsScrD -> GetObjectValue(ACS_SOUND_VOLUME,1); + i_max_val = iGetOptionValue(iSOUND_VOLUME_MAX); + i_val = (val * i_max_val) / max_val; + iSetOptionValue(iSOUND_VOLUME_CUR,i_val); + iHandleExtEvent(iEXT_UPDATE_SOUND_VOLUME); + break; + case ACS_INIT_MUSIC_MODE: + acsSetStrState(ACS_MUSIC_MODE,!iGetOptionValue(iMUSIC_ON)); + break; + case ACS_INIT_MUSIC_VOLUME: + acsScrD -> SetScroller(ACS_MUSIC_VOLUME,iGetOptionValue(iMUSIC_VOLUME_CUR),iGetOptionValue(iMUSIC_VOLUME_MAX)); + break; + case ACS_SET_MUSIC_VOLUME: + val = acsScrD -> GetObjectValue(ACS_MUSIC_VOLUME); + max_val = acsScrD -> GetObjectValue(ACS_MUSIC_VOLUME,1); + i_max_val = iGetOptionValue(iMUSIC_VOLUME_MAX); + i_val = (val * i_max_val) / max_val; + iSetOptionValue(iMUSIC_VOLUME_CUR,i_val); + iHandleExtEvent(iEXT_UPDATE_MUSIC_VOLUME); + break; + case ACS_CHANGE_MUSIC_MODE: + acsChangeStrState(ACS_MUSIC_MODE); + iSetOptionValue(iMUSIC_ON,!acsGetStrState(ACS_MUSIC_MODE)); + iHandleExtEvent(iEXT_UPDATE_MUSIC_MODE); + break; + case ACS_CHANGE_AUTORUN_MODE: + acsChangeStrState(ACS_AUTORUN_MODE); + aciAutoRun = acsGetStrState(ACS_AUTORUN_MODE); + iScrOpt[iAUTO_ACCELERATION]->SetValueINT(acsGetStrState(ACS_AUTORUN_MODE)); + break; + case ACS_CHANGE_SOUND_MODE: + acsChangeStrState(ACS_SOUND_MODE); + iSetOptionValue(iSOUND_ON,!acsGetStrState(ACS_SOUND_MODE)); + iHandleExtEvent(iEXT_UPDATE_SOUND_MODE); + break; + case ACS_CHANGE_TUTORIAL_MODE: + acsChangeStrState(ACS_TUTORIAL_MODE); + iSetOptionValue(iTUTORIAL_ON,!acsGetStrState(ACS_TUTORIAL_MODE)); + iHandleExtEvent(iEXT_UPDATE_TUTORIAL_MODE); + break; + case ACS_INIT_SLOT_NAME: + acsPrepareSlotName(data0,data1); + break; + case ACS_INIT_SLOT_NAME_INPUT: + acsPrepareSlotNameInput(data0,data1); + break; + case ACS_SAVE_GAME: + acsSaveData(); + break; + } +} + +void aciFreeAll(void) +{ + delete aScrDisp; + aScrDisp = NULL; + delete acsScrD; + acsScrD = NULL; + free_cell_frame(); + + if(aIndArrowBML) + delete aIndArrowBML; + if(aIndDataBML) + delete aIndDataBML; + if(aIndBackBML) + delete aIndBackBML; + + aIndArrowBML = NULL; + aIndDataBML = NULL; + aIndBackBML = NULL; + + aciLoadLog = 0; +} + +void acsPrepareSlotName(int id,int slot_num) +{ + int len,time_len; + XBuffer XBuf; + XStream fh(0); + + aciScreenInputField* p = (aciScreenInputField*)acsScrD -> GetObject(id); + if(!p) return; + + XBuf.init(); + XBuf < "savegame/save"; + if(slot_num < 10) XBuf < "0"; + XBuf <= slot_num < ".dat"; + + if(fh.open(XBuf.address(),XS_IN)){ + fh > len; + + time_len = (len >> 16) & 0xFF; + len &= 0xFF; + + memset(p -> string,0,p -> MaxStrLen + 2); + fh.read(p -> string,len); + fh.close(); + } + else + strcpy(p -> string,aciSTR_EMPTY_SLOT); +} + +void acsPrepareSlotNameInput(int id,int slot_num) +{ + int sz; + aciScreenInputField* p = (aciScreenInputField*)acsScrD -> GetObject(id); + if(!p) return; + if(acsScrD -> activeInput){ + acsScrD -> activeInput -> StopEvents(); + acsScrD -> CancelInput(); + } + if(!strcmp(p -> string,aciSTR_EMPTY_SLOT) || !strcmp(p -> string,aciSTR_UNNAMED_SAVE)){ + sz = strlen(p -> string) + 1; + acsBackupStr = new char[sz]; + strcpy(acsBackupStr,p -> string); + memset(p -> string,0,p -> MaxStrLen + 2); + } + acsCurrentSlotID = id; + acsCurrentSlotNum = slot_num; +} + +#if defined(__APPLE__) || __GNUC__ < 9 +void createDirIfNotExist(const char* dirName) { + struct stat info; + if (stat(dirName, &info) != 0) { + std::cout<<"Directory "< activeInput) acsScrD -> DoneInput(); + p = (aciScreenInputField*)acsScrD -> GetObject(acsCurrentSlotID); + ptr = p -> string; + } + createDirIfNotExist("savegame"); + if(slot != -1 && ptr){ + XBuf < "savegame/save"; + if(slot < 10) XBuf < "0"; + XBuf <= slot < ".dat"; + len = strlen(ptr); + for(i = 0; i < len; i ++){ + if(ptr[i] && ptr[i] != ' ') + null_flag = 0; + } + if(null_flag){ + ptr = aciSTR_UNNAMED_SAVE; + len = strlen(ptr); + } + + if(aScrDisp -> flags & AS_INV_MOVE_ITEM && aScrDisp -> curItem -> uvsDataPtr){ + ((uvsActInt*)aScrDisp -> curItem -> uvsDataPtr) -> pos_x = aScrDisp -> curItem -> MatrixX = -1; + ((uvsActInt*)aScrDisp -> curItem -> uvsDataPtr) -> pos_y = aScrDisp -> curItem -> MatrixY = -1; + } + + fh.open(XBuf.address(),XS_OUT); + + aciXConv -> init(); + *aciXConv < aScrDisp -> curLocData -> nameID2 < ", "; + + *aciXConv <= ConTimer.day < ":"; + if(ConTimer.hour < 10) *aciXConv < "0"; + *aciXConv <= ConTimer.hour < ":"; + if(ConTimer.min < 10) *aciXConv < "0"; + *aciXConv <= ConTimer.min < ":"; + if(ConTimer.sec < 10) *aciXConv < "0"; + *aciXConv <= ConTimer.sec; + time_len = aciXConv -> tell(); + + fh < (len | (time_len << 16)); + + fh.write(ptr,len); + + fh.write(aciXConv -> address(),time_len); + + + CurrentWorld = prevWorld; + + uniVangSave(fh); + + aciSaveUVSList(fh,GItem); + aciSaveUVSList(fh,GMechos); + aciSaveUVSList(fh,GGamer); + aciSaveUVSList(fh,GGamerMechos); + aciSaveUVSList(fh,GCharItem); + aciSaveUVSList(fh,GTreasureItem); + + aScrDisp -> save_data(&fh); + + GeneralSystemSave(fh); + dgD -> save(fh); + CurrentWorld = -1; + fh.close(); + +#ifdef _ACI_PACK_SAVES_ + acsCompressData(XBuf.address()); +#endif + } + aciAutoSaveFlag = 0; +} + +void acsLoadData(void) +{ + int slot = iSlotNumber,len,time_len; + XBuffer XBuf; + XStream fh; + + if(slot != -1){ + XBuf < "savegame/save"; + if(slot < 10) XBuf < "0"; + XBuf <= slot < ".dat"; + +#ifdef _ACI_PACK_SAVES_ + acsDecompressData(XBuf.address()); +#endif + std::cout<<"acsLoadData"< len; + time_len = (len >> 16) & 0xFF; + len &= 0xFF; + fh.seek(len + sizeof(int) + time_len,XS_BEG); + uniVangLoad(fh); + + aciLoadUVSList(fh,&GItem,1); + aciLoadUVSList(fh,&GMechos); + aciLoadUVSList(fh,&GGamer,1); + aciLoadUVSList(fh,&GGamerMechos); + aciLoadUVSList(fh,&GCharItem,1); + aciLoadUVSList(fh,>reasureItem,1); + + aScrDisp->load_data(&fh); + //stalkerg Попытемся проверить трюм магазина Рё трюм мехоса РІ РјРёСЂРµ + //Эти трюмы должны совпадать РїРѕ содержимому, Р° иначе РёРіСЂР° будет умирать + if(aScrDisp->curMatrix) { //Существует ли матрица + listElem *el = NULL; + listElem *el2 = NULL; + uvsActInt *new_item = NULL; + uvsActInt *iter_gamer = (uvsActInt*)GGamer; + invItem* p,*p1; + while (iter_gamer) { + bool item_detect = false; + int i, j, index = 0; + for(i = 0; i < aScrDisp->curMatrix->SizeY; i++){ + for(j = 0; j < aScrDisp->curMatrix->SizeX; j++){ + invMatrixCell *cell = aScrDisp->curMatrix->matrix[index]; + /*std::cout<<"GGamer type:"<type + <<" x:"<pos_x + <<" y:"<pos_y + <<" i:"<flags + <<" mcell type:"<type + <<" index:"<flags & AS_BUSY_CELL && cell->item) { + /*std::cout<<"item_type:"<item->ID + <<" MX:"<item->MatrixX + <<" MY:"<item->MatrixY<item->ID == iter_gamer->type && + cell->item->MatrixX == iter_gamer->pos_x && + cell->item->MatrixY == iter_gamer->pos_y + ) { + item_detect = true; + goto end_find; + } + } + index++; + } + } + std::cout<<"Can't find item GGamer type:"<type + <<" pos_x:"<pos_x + <<" pos_y:"<pos_y + <<" and we make it"<flags & AS_ISCREEN) + p = aScrDisp->get_iitem(iter_gamer->type); + else + p = aScrDisp->get_item(iter_gamer->type); + + p1 = aScrDisp->alloc_item(); + p->clone(p1); + aScrDisp->curMatrix->put_item(iter_gamer->pos_x, iter_gamer->pos_y, p1, 1); + end_find: + //Is it duplicate? + if (el != NULL) { + el2 = el; + while (el2) { + uvsActInt *item = dynamic_cast (el2); + if (item->pos_x == iter_gamer->pos_x && item->pos_y == iter_gamer->pos_y && item->type == iter_gamer->type) { + std::cout<<"We find duplicate item GGamer type:"<type + <<" pos_x:"<pos_x + <<" pos_y:"<pos_y + <next; + } + } + new_item = new uvsActInt; + new_item->pos_x = iter_gamer->pos_x; + new_item->pos_y = iter_gamer->pos_y; + new_item->type = iter_gamer->type; + new_item->price = iter_gamer->price; + new_item->sell_price = iter_gamer->sell_price; + new_item->param1 = iter_gamer->param1; + new_item->param2 = iter_gamer->param2; + new_item->link(el); + + next: + iter_gamer = (uvsActInt*)iter_gamer->next; + } + + aciFreeUVSList(GGamer); + GGamer = (uvsActInt*)el; + + } + GeneralSystemLoad(fh); + dgD -> load(fh); + fh.close(); + +#ifdef _ACI_PACK_SAVES_ + acsCompressData(XBuf.address()); +#endif + } +} + +void aciAcceptRubox(void) +{ + aciML_D -> key_trap(AML_RUBOX_CODE,AML_KEY); +} + +void aciGetRubox(void) +{ + uvsActInt* p; + invItem* itm; + listElem* el = (listElem*)GGamer; + if(!aciPutItem(ACI_RUBOX,-1,-1)) ErrH.Abort("aciPutItem() failed..."); + + itm = (invItem*)aScrDisp -> curMatrix -> items -> last; + aScrDisp -> curMatrix -> remove_item(itm); + + if(aScrDisp -> flags & AS_INV_MOVE_ITEM){ + aScrDisp -> flags ^= AS_INV_MOVE_ITEM; + aciSell_Item(aScrDisp -> curItem); + aScrDisp -> curItem = NULL; + } + + aScrDisp -> flags |= AS_INV_MOVE_ITEM; + aScrDisp -> curItem = itm; + set_mouse_cursor(itm -> frame,itm -> ScreenSizeX,itm -> ScreenSizeY); + + p = new uvsActInt; + p -> type = ACI_RUBOX; + itm -> uvsDataPtr = p; + + p -> link(el); + GGamer = (uvsActInt*)el; +} + +void aciAddRubox(void) +{ + uvsActInt* p; + invItem* itm; + listElem* el = (listElem*)GGamer; + if(!aciPutItem(ACI_RUBOX,-1,-1)) ErrH.Abort("aciPutItem() failed..."); + + itm = (invItem*)aScrDisp -> curMatrix -> items -> last; + + p = new uvsActInt; + p -> type = ACI_RUBOX; + itm -> uvsDataPtr = p; + + p -> pos_x = itm -> MatrixX; + p -> pos_y = itm -> MatrixY; + + p -> link(el); + GGamer = (uvsActInt*)el; +} + +void aciExpropriation(void) +{ + if(!aScrDisp -> curMatrix) return; + invItem* itm = (invItem*)aScrDisp -> curMatrix -> items -> last,*itm1; + uvsActInt* ptr = (uvsActInt*)aScrDisp -> curMatrix -> uvsDataPtr; + if(!ptr) ErrH.Abort("Bad sell mechos..."); + while(itm){ + itm1 = (invItem*)itm -> prev; + aScrDisp -> curMatrix -> remove_item(itm); + itm -> flags |= INV_ITEM_NO_PAY; + aciSell_Item(itm); + itm = itm1; + } +} + +void aciChange2Raffa(void) +{ + invMatrix* m,*rf = NULL; + uvsActInt* u,*u1; + listElem* el; + + if(aScrDisp -> curMatrix) aciExpropriation(); + + aScrDisp -> curMatrix = NULL; + if(GGamerMechos){ + //std::cout<<"aciChange2Raffa if(GGamerMechos) "< get_imatrix(GGamerMechos -> type); + if(!m -> uvsDataPtr) { + m -> uvsDataPtr = GGamerMechos; + } + //std::cout<<"aciChange2Raffa el = GMechos "< link(el); + GMechos = (uvsActInt*)el; + //std::cout<<"aciChange2Raffa GMechos = (uvsActInt*)el "< i_matrixList -> last; + while(m){ + //std::cout<<"aciChange2Raffa invMatrix type: "<type< flags & IM_RAFFA){ + if(m -> uvsDataPtr){ + u = (uvsActInt*)m -> uvsDataPtr; + //std::cout<<"aciChange2Raffa GMechos "< delink(GMechos); + u->next = NULL; + u->prev = NULL; + if(((iListElement*)m) == iShopItem) + aciNextShopItem(); + //std::cout<<"aciChange2Raffa GGamerMechos = u "< type); + if(u1) + m -> uvsDataPtr = u1; + else + m -> uvsDataPtr = NULL; + aScrDisp -> curMatrix = aScrDisp -> alloc_matrix(m -> type,1); + aScrDisp -> curMatrix -> uvsDataPtr = u; + return; + } else { + rf = m; + } + } + m = (invMatrix*)m -> prev; + } + if(!rf) + ErrH.Abort("Free mechos not found..."); + + m = rf; + u = new uvsActInt; + u -> type = m -> type; + u -> price = u -> sell_price = 1; + + if(((iListElement*)m) == iShopItem) + aciNextShopItem(); + + //std::cout<<"aciChange2Raffa2 GGamerMechos = u"< type); + if(u1) + m -> uvsDataPtr = u1; + else + m -> uvsDataPtr = NULL; + + aScrDisp -> curMatrix = aScrDisp -> alloc_matrix(m -> type,1); + aScrDisp -> curMatrix -> uvsDataPtr = u; +} + +char* aciGetPlayerName(void) +{ + return iGetOptionValueCHR(iPLAYER_NAME2); +} + +char* aciGetPlayerPassword(void) +{ + return iGetOptionValueCHR(iPLAYER_PASSWORD); +} + +int aciGetPlayerColor(void) +{ + return iGetOptionValue(iPLAYER_COLOR); +} + +void aciClearTeleportMenu(void) +{ + fncMenu* mn; + fncMenuItem* p,*p1; + + mn = aScrDisp -> get_menu(FMENU_TELEPORT_MENU); + if(!mn) return; + + p = (fncMenuItem*)mn -> items -> last; + while(p){ + p1 = (fncMenuItem*)p -> prev; + if(p -> fnc_code != FMENU_OFF){ + mn -> items -> dconnect((iListElement*)p); + aScrDisp -> free_menu_item(p); + } + p = p1; + } + p = (fncMenuItem*)mn -> inactive_items -> last; + while(p){ + p1 = (fncMenuItem*)p -> prev; + if(p -> fnc_code != FMENU_OFF){ + mn -> inactive_items -> dconnect((iListElement*)p); + aScrDisp -> free_menu_item(p); + } + p = p1; + } + mn -> prefix = NULL; + mn -> postfix = NULL; +} + +void aciSaveUVSList(XStream& fh,uvsActInt* p) +{ + uvsActInt* ptr; + int i,list_size = 0; + + ptr = p; + while(ptr){ + list_size ++; + ptr = (uvsActInt*)ptr -> next; + } + + ptr = p; + fh < list_size; + for(i = 0; i < list_size; i ++){ + ptr -> save(fh); + ptr = (uvsActInt*)ptr -> next; + } +} + +void aciFreeUVSList(uvsActInt* p) +{ + uvsActInt* ptr,*ptr1; + ptr = p; + while(ptr){ + ptr1 = (uvsActInt*)ptr -> next; + //std::cout<<"aciFreeUVSList "<type< list_size; + for(i = 0; i < list_size; i ++){ + ptr = new uvsActInt; + ptr -> load(fh,list_type); + //std::cout<<"aciLoadUVSList new "<type<<" price:"<price<<" param1:"<param1<<" param2:"<param2< link(el); + } + *p = (uvsActInt*)el; +} +#define ACI_FRAG_ADDITIONAL_LINES_PASS 1 +#define ACI_FRAG_ADDITIONAL_LINES 4 +#define ACI_FRAG_TIMER 375 +#define ACI_FRAG_FONT 0 + +const unsigned ACI_FRAG_COL0 = (252 | (246 << 8)); +const unsigned ACI_FRAG_COL1 = (143 | (135 << 8)); +const unsigned ACI_FRAG_COL2 = (156 | (151 << 8)); +const unsigned ACI_FRAG_COL3 = (173 | (166 << 8)); +const unsigned ACI_FRAG_COL4 = (200 | (195 << 8)); +const unsigned ACI_FRAG_COL5 = (238 | (233 << 8)); +const unsigned ACI_FRAG_COL6 = (238 | (233 << 8)); +const unsigned ACI_FRAG_COL7 = (238 | (233 << 8)); +const unsigned ACI_FRAG_COL8 = (252 | (246 << 8)); +const unsigned ACI_FRAG_COL9 = (156 | (151 << 8)); + +void aciShowFrags(void) +{ + int i,num; + XBuffer XBuf; + PlayerData* p; + char* world_name; + + static int fragColors[10] = { ACI_FRAG_COL0, ACI_FRAG_COL1, ACI_FRAG_COL2, ACI_FRAG_COL3, ACI_FRAG_COL4, ACI_FRAG_COL5, ACI_FRAG_COL6, ACI_FRAG_COL7, ACI_FRAG_COL8, ACI_FRAG_COL9 }; + + if(!NetworkON || !players_list.size()) return; + if(aScrDisp -> curPrompt -> NumStr){ + aScrDisp -> curPrompt -> free_mem(); + return; + } + + iSortPlayers(1); + + num = iNumPlayers; + if (iCurMultiGame == 0 || iCurMultiGame == 1) num += ACI_FRAG_ADDITIONAL_LINES; //Van-War and Mechosoma + if (iCurMultiGame == 2) num += ACI_FRAG_ADDITIONAL_LINES_PASS; //Passemploss + + aScrDisp -> curPrompt -> alloc_mem(num); + aScrDisp -> curPrompt -> CurTimer = 0; + + aScrDisp -> curPrompt -> fontID = ACI_FRAG_FONT; + + switch(iCurMultiGame){ + case 0: // VAN-WAR... + + for (i = 0; i < ACI_FRAG_ADDITIONAL_LINES; i++) { + XBuf.init(); + switch (i) { + case 0: XBuf < aciSTR_RESTRICTIONS; break; + case 1: XBuf < aciSTR_KILLS_NEED < " " <= my_server_data.Van_War.MaxKills < ", " < aciSTR_MINUTES < " " <= my_server_data.Van_War.MaxTime; break; + case 2: XBuf < ""; break; + case 3: XBuf < aciSTR_STATISTICS; break; + } + + aScrDisp -> curPrompt -> add_str(i, (unsigned char*)XBuf.address()); + aScrDisp -> curPrompt -> TimeBuf[i] = ACI_FRAG_TIMER; + aScrDisp -> curPrompt -> ColBuf[i] = fragColors[1]; + } + + for(i = 0; i < num - ACI_FRAG_ADDITIONAL_LINES; i ++){ + p = iPlayers[i]; + XBuf.init(); + world_name = aScrDisp -> wMap -> world_ptr[aScrDisp -> wMap -> world_ids[p -> body.world]] -> name; + XBuf < p -> name < " (" < world_name < ") : " <= p -> body.kills < " " < aciSTR_KILLS < ", " <= p -> body.deaths < " " < aciSTR_DEATHS; + aScrDisp -> curPrompt -> add_str(i+ACI_FRAG_ADDITIONAL_LINES,(unsigned char*)XBuf.address()); + aScrDisp -> curPrompt -> TimeBuf[i+ACI_FRAG_ADDITIONAL_LINES] = ACI_FRAG_TIMER; + aScrDisp -> curPrompt -> ColBuf[i+ACI_FRAG_ADDITIONAL_LINES] = fragColors[p -> body.color]; + } + break; + case 1: // MECHOSOMA... + + for (i = 0; i < ACI_FRAG_ADDITIONAL_LINES; i++) { + XBuf.init(); + switch (i) { + case 0: XBuf < aciSTR_RESTRICTIONS; break; + case 1: XBuf < aciSTR_OAAT < " " <= my_server_data.Mechosoma.One_at_a_time; break; + case 2: XBuf < ""; break; + case 3: XBuf < aciSTR_STATISTICS; break; + } + + aScrDisp -> curPrompt -> add_str(i, (unsigned char*)XBuf.address()); + aScrDisp -> curPrompt -> TimeBuf[i] = ACI_FRAG_TIMER; + aScrDisp -> curPrompt -> ColBuf[i] = fragColors[1]; + } + for(i = 0; i < num - ACI_FRAG_ADDITIONAL_LINES; i ++){ + p = iPlayers[i]; + XBuf.init(); + world_name = aScrDisp -> wMap -> world_ptr[aScrDisp -> wMap -> world_ids[p -> body.world]] -> name; + XBuf < p -> name < " : " < aciSTR_Ware1 < " " <= p -> body.MechosomaStat.ItemCount1 < "/" <= my_server_data.Mechosoma.ProductQuantity1; + XBuf < ", " < aciSTR_Ware2 < " " <= p -> body.MechosomaStat.ItemCount2 < "/" <= my_server_data.Mechosoma.ProductQuantity2 < ", " <= p -> body.kills < " " < aciSTR_KILLS < ", " <= p -> body.deaths < " " < aciSTR_DEATHS; + aScrDisp -> curPrompt -> add_str(i+ACI_FRAG_ADDITIONAL_LINES,(unsigned char*)XBuf.address()); + aScrDisp -> curPrompt -> TimeBuf[i+ACI_FRAG_ADDITIONAL_LINES] = ACI_FRAG_TIMER; + aScrDisp -> curPrompt -> ColBuf[i+ACI_FRAG_ADDITIONAL_LINES] = fragColors[p -> body.color]; + } + break; + case 2: // PASSEMBLOSS... + + for (i = 0; i < ACI_FRAG_ADDITIONAL_LINES_PASS; i++) { + XBuf.init(); + switch (i) { + case 0: XBuf < aciSTR_STATISTICS; break; + } + + aScrDisp -> curPrompt -> add_str(i, (unsigned char*)XBuf.address()); + aScrDisp -> curPrompt -> TimeBuf[i] = ACI_FRAG_TIMER; + aScrDisp -> curPrompt -> ColBuf[i] = fragColors[1]; + } + for(i = 0; i < num - ACI_FRAG_ADDITIONAL_LINES_PASS; i ++){ + p = iPlayers[i]; + XBuf.init(); + world_name = aScrDisp -> wMap -> world_ptr[aScrDisp -> wMap -> world_ids[p -> body.world]] -> name; + XBuf < p -> name < " (" < world_name < ") : " < aciSTR_Checkpoints < " " <= p -> body.PassemblossStat.CheckpointLighting < "/" <= my_server_data.Passembloss.CheckpointsNumber < ", " <= p -> body.deaths < " " < aciSTR_DEATHS; + aScrDisp -> curPrompt -> add_str(i+ACI_FRAG_ADDITIONAL_LINES_PASS,(unsigned char*)XBuf.address()); + aScrDisp -> curPrompt -> TimeBuf[i+ACI_FRAG_ADDITIONAL_LINES_PASS] = ACI_FRAG_TIMER; + aScrDisp -> curPrompt -> ColBuf[i+ACI_FRAG_ADDITIONAL_LINES_PASS] = fragColors[p -> body.color]; + } + break; + } +} + +#ifdef _DEBUG +void scale_bmp(int sx,int sy,int sx0,int sy0,void* dest,void* src) +{ + int x,y; + unsigned char* dest_buf,*src_buf; + + double ix,iy,dx,dy; + + dest_buf = (unsigned char*)dest; + src_buf = (unsigned char*)src; + + dx = (double)sx0/(double)sx; + dy = (double)sy0/(double)sy; + for(y = 0; y < sy; y ++){ + for(x = 0; x < sx; x ++){ + iy = y * dy; + ix = x * dx; + dest_buf[x + y * sx] = src_buf[round(ix) + (round(iy) * sx0)]; + } + } +} + +void aciResizeItem(double delta) +{ + int x,y; + invItem* p,*p0; + unsigned char* buf; + + double dx,dy; + + p0 = NULL; + + if(!(aScrDisp -> flags & AS_INV_MOVE_ITEM)) return; + p = aScrDisp -> curItem; + + x = p -> ScreenSizeX; + y = p -> ScreenSizeY; + + dy = (double)y * delta; + dx = ((double)x * dy) / (double)y; + x = round(dx); + y = round(dy); + + if(x < 0 || y < 0) return; + buf = new unsigned char[x * y]; + scale_bmp(x,y,p -> ScreenSizeX,p -> ScreenSizeY,buf,p -> frame); + delete p -> frame; + p -> frame = (char*)buf; + p -> ScreenSizeX = x; + p -> ScreenSizeY = y; + set_mouse_cursor((char*)buf,x,y); + + if(aScrDisp -> flags & AS_ISCREEN) + p0 = aScrDisp -> get_iitem(p -> ID); + else + p0 = aScrDisp -> get_item(p -> ID); + + if(p0){ + p0 -> ScreenSizeX = x; + p0 -> ScreenSizeY = y; + p0 -> frame = (char*)buf; + } +} +#endif + +void aciFreeUVS(void) +{ + //std::cout<<"aciFreeUVSList(GItem)"< ret_val = 1; + iScrDisp -> flags |= SD_EXIT; +} + +void aciRedrawParamsPanel(int x,int y,int sx,int sy) +{ + int col0,col1; + InfoPanel* pl = aScrDisp -> get_aci_info_panel(ACI_PARAMS_PANEL); + if(!pl){ + XGR_Rectangle(x,y,sx,sy,0,0,XGR_FILLED); + return; + } + + col0 = (aciCurColorScheme[FM_SELECT_START2] << 8) | aciCurColorScheme[FM_UNSELECT_START]; + col1 = (aciCurColorScheme[FM_SELECT_SIZE2] << 8) | aciCurColorScheme[FM_UNSELECT_SIZE]; + + if(aciCurLuck != aciPrevLuck || aciCurDominance != aciPrevDominance){ + pl -> free_list(); + + pl -> add_item(aciSTR_LUCK); + aciXConv -> init(); + *aciXConv <= aciCurLuck; + if(aciCurLuck < 100) + pl -> add_item(aciXConv -> address()); + else + pl -> add_item(aciXConv -> address(),-1,col0 | (col1 << 16)); + + pl -> add_item(" "); + + pl -> add_item(aciSTR_DOMINANCE); + aciXConv -> init(); + *aciXConv <= aciCurDominance; + if(aciCurDominance < 100) + pl -> add_item(aciXConv -> address()); + else + pl -> add_item(aciXConv -> address(),-1,col0 | (col1 << 16)); + } + pl -> PosX = x; + pl -> PosY = y; + + pl -> SizeX = sx; + pl -> SizeY = sy; + + pl -> flags |= IP_NO_REDRAW; + + pl -> redraw(); +} + +void aciPutTreasureItem(void) +{ + uvsActInt* p; + if(!GTreasureItem) return; + p = GTreasureItem; + while(p){ + aciML_D -> curDataSet -> put_item(p -> type); + p = (uvsActInt*)p -> next; + } +} + +void aciStealItem(int type) +{ + listElem* el; + uvsActInt* u; + invItem* p,*p1; + if(!GTreasureItem) return; + u = GTreasureItem; + while(u){ + if(u -> type == type) break; + u = (uvsActInt*)u -> next; + } + if(!u) return; + + if(u -> type == ACI_BOORAWCHIK) aciEscaveEmpty = 1; + + p = aScrDisp -> get_iitem(u -> type); + p1 = aScrDisp -> alloc_item(); + p -> clone(p1); + + if(aScrDisp -> flags & AS_INV_MOVE_ITEM){ + aScrDisp -> flags ^= AS_INV_MOVE_ITEM; + aciSell_Item(aScrDisp -> curItem); + aScrDisp -> curItem = NULL; + } + + aScrDisp -> flags |= AS_INV_MOVE_ITEM; + aScrDisp -> curItem = p1; + set_mouse_cursor(p1 -> frame,p1 -> ScreenSizeX,p1 -> ScreenSizeY); + + u -> delink(GTreasureItem); + + el = (listElem*)GGamer; + u -> link(el); + GGamer = (uvsActInt*)el; + p1 -> uvsDataPtr = u; +} + +void aciInitPricePanel(InfoPanel* ip,iListElement* p,int mode,int sell_mode) +{ + invItem* it; + invMatrix* m; + uvsActInt* u; + + int col = -1; + + ip -> free_list(); + + if(mode == MECHOS_MODE){ + m = (invMatrix*)p; + u = (uvsActInt*)m -> uvsDataPtr; + if(m -> mech_name) ip -> add_item(m -> mech_name,-1,aciCurColorScheme[FM_SELECT_COL]); + + if(m -> flags & IM_NOT_COMPLETE) + ip -> add_item(aciSTR_BROKEN); + } + else { + it = (invItem*)p; + u = (uvsActInt*)it -> uvsDataPtr; + if(it->ID_ptr.size()) { + ip -> add_item(it->ID_ptr.c_str(),-1,aciCurColorScheme[FM_SELECT_COL]); + } + } + + if(!u) + return; + + aciXConv -> init(); + if(!uvsCurrentWorldUnable){ + if(mode != MECHOS_MODE || !(m -> flags & IM_NOT_COMPLETE)){ + if(sell_mode) + *aciXConv < aciSTR_PRICE <= u -> sell_price < " $"; + else + *aciXConv < aciSTR_PRICE <= u -> price < " $"; + + ip -> add_item(aciXConv -> address(),-1,col); + } + } + + if(mode == MECHOS_MODE){ + m = (invMatrix*)p; + if(!sell_mode && m -> pData){ + aciXConv -> init(); + *aciXConv < aciSTR_ENERGY_SHIELD < " " < (m -> pData + ACI_MECHOS_ENERGY_SHIELD * ACI_MAX_PRM_LEN); + ip -> add_item(aciXConv -> address(),-1,col); + + aciXConv -> init(); + *aciXConv < aciSTR_RESTORING_SPEED < " " < (m -> pData + ACI_MECHOS_RESTORING_SPEED * ACI_MAX_PRM_LEN); + ip -> add_item(aciXConv -> address(),-1,col); + + aciXConv -> init(); + *aciXConv < aciSTR_MECHANIC_ARMOR < " " < (m -> pData + ACI_MECHOS_MECHANIC_ARMOR * ACI_MAX_PRM_LEN) < " " < aciSTR_VELOCITY < " " < (m -> pData + ACI_MECHOS_VELOCITY * ACI_MAX_PRM_LEN); + ip -> add_item(aciXConv -> address(),-1,col); + + aciXConv -> init(); + *aciXConv < aciSTR_SPIRAL_CAPACITY < " " < (m -> pData + ACI_MECHOS_SPIRAL_CAPACITY * ACI_MAX_PRM_LEN); + ip -> add_item(aciXConv -> address(),-1,col); + + aciXConv -> init(); + *aciXConv < aciSTR_AIR_RESERVE < " " < (m -> pData + ACI_MECHOS_AIR_RESERVE * ACI_MAX_PRM_LEN); + ip -> add_item(aciXConv -> address(),-1,col); + } + } + else { + it = (invItem*)p; + if(it -> pData && !sell_mode){ + if(it -> slotType == AS_WEAPON_SLOT || it -> slotType == AS_TWEAPON_SLOT){ + aciXConv -> init(); + *aciXConv < aciSTR_DAMAGE < " " < (it -> pData + ACI_WEAPON_DAMAGE * ACI_MAX_PRM_LEN); + ip -> add_item(aciXConv -> address(),-1,col); + + if(!uvsCurrentWorldUnable){ + aciXConv -> init(); + *aciXConv < aciSTR_LOAD < " " < (it -> pData + ACI_WEAPON_LOAD * ACI_MAX_PRM_LEN); + ip -> add_item(aciXConv -> address(),-1,col); + } + + aciXConv -> init(); + *aciXConv < aciSTR_SHOTS < " " < (it -> pData + ACI_WEAPON_SHOTS_SEC * ACI_MAX_PRM_LEN); + ip -> add_item(aciXConv -> address(),-1,col); + + aciXConv -> init(); + *aciXConv < aciSTR_BURST < " " < (it -> pData + ACI_WEAPON_RANGE * ACI_MAX_PRM_LEN); + ip -> add_item(aciXConv -> address(),-1,col); + } + else { + if(it -> slotType == AS_DEVICE_SLOT){ + if(!uvsCurrentWorldUnable){ + aciXConv -> init(); + *aciXConv < aciSTR_WORKING_TIME < " " < (it -> pData + ACI_DEVICE_WORKING_TIME * ACI_MAX_PRM_LEN) < aciSTR_SECONDS; + ip -> add_item(aciXConv -> address(),-1,col); + } + } + else { + aciXConv -> init(); + *aciXConv < aciSTR_DAMAGE < " " < (it -> pData + ACI_AMMO_DAMAGE * ACI_MAX_PRM_LEN); + ip -> add_item(aciXConv -> address(),-1,col); + + aciXConv -> init(); + *aciXConv < aciSTR_IN_PACK < " " < (it -> pData + ACI_AMMO_IN_PACK * ACI_MAX_PRM_LEN); + ip -> add_item(aciXConv -> address(),-1,col); + } + } + } + } +} + +#define ACI_RACING_X 70 +#define ACI_RACING_Y 70 + +#define ACI_RACING2_X 70 +#define ACI_RACING2_Y 70 + +#define ACI_RACING_X_H 80 +#define ACI_RACING_Y_H 80 + +#define ACI_RACING2_X_H 80 +#define ACI_RACING2_Y_H 80 + +#define ACI_RACING_FONT 7 +#define ACI_RACING_COL 103 +#define ACI_RACING_COL2 111 + +void aciShowRacingPlace(void) +{ + int x,y,dx; + aciXConv -> init(); + *aciXConv < aciCurRaceType < " "; + + if(!(aScrDisp -> flags & AS_FULLSCR)){ + if(actintLowResFlag){ + x = aScrDisp -> curIbs -> PosX + ACI_RACING_X; + y = aScrDisp -> curIbs -> PosY + ACI_RACING_Y; + } + else { + x = aScrDisp -> curIbs -> PosX + ACI_RACING_X_H; + y = aScrDisp -> curIbs -> PosY + ACI_RACING_Y_H; + } + + y = XGR_MAXY - y; + } + else { + if(actintLowResFlag){ + x = ACI_RACING2_X; + y = ACI_RACING2_Y; + } + else { + x = ACI_RACING2_X_H; + y = ACI_RACING2_Y_H; + } + + y = XGR_MAXY - y; + } + + aOutStr(x,y,ACI_RACING_FONT,ACI_RACING_COL,(unsigned char*)aciXConv -> address(),1); + + dx = aStrLen((unsigned char*)aciXConv -> address(),ACI_RACING_FONT,1); + aciXConv -> init(); + *aciXConv < aciCurRaceInfo; + aOutStr(x + dx,y,ACI_RACING_FONT,ACI_RACING_COL2,(unsigned char*)aciXConv -> address(),1); +} + +void aciPrepareText(char* ptr) +{ + int sz = strlen(ptr); + aScrDisp -> ScrTextData -> alloc(ptr,sz); + aScrDisp -> send_event(ACI_SHOW_TEXT); +} + +void aciAutoSave(void) +{ + if(NetworkON || aScrDisp -> curLocData -> WorldID == XPLO_ID) return; + + aciAutoSaveFlag = 1; + acsSaveData(); +} + +#ifdef _DEMO_ +void aciTheEnd(void) +{ + GameQuantReturnValue = RTO_LOADING3_ID; + aciCompleteGameFlag = 1; +} +#endif + +void aciDropMoveItem(void) +{ + if(aScrDisp -> flags & AS_INV_MOVE_ITEM){ + aciSendEvent2itmdsp(ACI_DROP_ITEM,aScrDisp -> curItem -> item_ptr); + aScrDisp -> flags &= ~AS_INV_MOVE_ITEM; + aScrDisp -> free_item(aScrDisp -> curItem); + } +} + +//znfo key handler +void aciCHandler(int key) +{ + return; + int code = 0,cr; + if(NetworkON || key > 256 || key <= 0) return; + + if(aciTreeData) { + code = aciTreeData -> quant(key); + } + switch(code << NetworkON){ + case ACI_ADD_BEEBOS: + cr = aciGetCurCredits(); + cr += 50000; + aciUpdateCurCredits(cr); + if(!(aScrDisp -> flags & AS_ISCREEN)) + SetWorldBeebos(cr); + aciTreeData -> reset(); + SOUND_DROP(); + break; + case ACI_ADD_LUCK: + uvsChangeLuck(); + aciTreeData -> reset(); + SOUND_DROP(); + break; + case ACI_ADD_DOMINANCE: + uvsChangeDominance(); + aciTreeData -> reset(); + SOUND_DROP(); + break; + case ACI_ADD_KEYS: + aciOpenWorldLink(1,0); + aciOpenWorldLink(1,3); + aciOpenWorldLink(1,2); + aciOpenWorldLink(1,4); + + aciOpenWorldLink(0,6); + + aciOpenWorldLink(3,8); + + aciOpenWorldLink(2,9); + aciOpenWorldLink(2,5); + + aciOpenWorldLink(7,7); + aciPrepareWorldsMenu(); + aciTreeData -> reset(); + SOUND_DROP(); + break; + case ACI_COMPLETE_TABUTASK: + aciCompleteTabutask(); + aciTreeData -> reset(); + break; + case ACI_ADD_TABUTASK01: + aciAddTabutask(1); + aciTreeData -> reset(); + break; + case ACI_ADD_TABUTASK02: + aciAddTabutask(2); + aciTreeData -> reset(); + break; + case ACI_ADD_TABUTASK03: + aciAddTabutask(3); + aciTreeData -> reset(); + break; + case ACI_ADD_TABUTASK04: + aciAddTabutask(4); + aciTreeData -> reset(); + break; + case ACI_ADD_TABUTASK05: + aciAddTabutask(5); + aciTreeData -> reset(); + break; + case ACI_ADD_TABUTASK06: + aciAddTabutask(6); + aciTreeData -> reset(); + break; + case ACI_ADD_TABUTASK07: + aciAddTabutask(7); + aciTreeData -> reset(); + break; + case ACI_ADD_TABUTASK08: + aciAddTabutask(8); + aciTreeData -> reset(); + break; + case ACI_ADD_TABUTASK09: + aciAddTabutask(9); + aciTreeData -> reset(); + break; + case ACI_ADD_TABUTASK10: + aciAddTabutask(10); + aciTreeData -> reset(); + break; + case ACI_ADD_TABUTASK11: + aciAddTabutask(11); + aciTreeData -> reset(); + break; + case ACI_ADD_TABUTASK12: + aciAddTabutask(12); + aciTreeData -> reset(); + break; + case ACI_ADD_TABUTASK13: + aciAddTabutask(13); + aciTreeData -> reset(); + break; + case ACI_ADD_TABUTASK14: + aciAddTabutask(14); + aciTreeData -> reset(); + break; + case ACI_ADD_TABUTASK15: + aciAddTabutask(15); + aciTreeData -> reset(); + break; + case ACI_ADD_TABUTASK16: + aciAddTabutask(16); + aciTreeData -> reset(); + break; + case ACI_ADD_TABUTASK17: + aciAddTabutask(17); + aciTreeData -> reset(); + break; + case ACI_ADD_TABUTASK18: + aciAddTabutask(18); + aciTreeData -> reset(); + break; + case ACI_ADD_TABUTASK19: + aciAddTabutask(19); + aciTreeData -> reset(); + break; + case ACI_ADD_TABUTASK20: + aciAddTabutask(20); + aciTreeData -> reset(); + break; + case ACI_TELEPORT_G: + if(!actIntLog){ + SOUND_DROP(); + aci_SendEvent(EV_TELEPORT,0); + } + break; + case ACI_TELEPORT_F: + if(!actIntLog){ + SOUND_DROP(); + aci_SendEvent(EV_TELEPORT,1); + } + break; + case ACI_TELEPORT_N: + if(!actIntLog){ + SOUND_DROP(); + aci_SendEvent(EV_TELEPORT,2); + } + break; + case ACI_TELEPORT_X: + if(!actIntLog){ + SOUND_DROP(); + aci_SendEvent(EV_TELEPORT,3); + } + break; + case ACI_TELEPORT_B: + if(!actIntLog){ + SOUND_DROP(); + aci_SendEvent(EV_TELEPORT,4); + } + break; + case ACI_TELEPORT_K: + if(!actIntLog){ + SOUND_DROP(); + aci_SendEvent(EV_TELEPORT,6); + } + break; + case ACI_TELEPORT_T: + if(!actIntLog){ + SOUND_DROP(); + aci_SendEvent(EV_TELEPORT,7); + } + break; + case ACI_TELEPORT_H: + if(!actIntLog){ + SOUND_DROP(); + aci_SendEvent(EV_TELEPORT,8); + } + break; + case ACI_TELEPORT_W: + if(!actIntLog){ + SOUND_DROP(); + aci_SendEvent(EV_TELEPORT,11); + } + break; + case ACI_TELEPORT_A: + if(!actIntLog){ + SOUND_DROP(); + aci_SendEvent(EV_TELEPORT,12); + } + break; + case ACI_END_GAME0: + if(!actIntLog){ + SOUND_DROP(); + XpeditionOFF(GAME_OVER_INFERNAL_LOCKED); + } + break; + case ACI_END_GAME1: + if(!actIntLog){ + SOUND_DROP(); + XpeditionOFF(GAME_OVER_SPOBS_LOCKED); + } + break; + case ACI_END_GAME2: + if(!actIntLog){ + SOUND_DROP(); + XpeditionOFF(GAME_OVER_ALL_LOCKED); + } + break; + case ACI_END_GAME3: + if(!actIntLog){ + SOUND_DROP(); + XpeditionOFF(GAME_OVER_LUCKY); + } + break; + case ACI_CHANGE_CYCLE: + if(!actIntLog){ + SOUND_DROP(); + uvsChangeCycle(); + } + break; + case ACI_REPAIR: + if(!actIntLog){ + SOUND_DROP(); + FakeOfMight(); + } + break; + } +} + +void aciPutBufSpr(int x,int y,int sx,int sy,int bsx,void* src,void* dest,int col,int col_sz) +{ + int i,j,dest_index,src_index; + unsigned src_col; + unsigned char* src_buf,*dest_buf; + + dest_index = x + y * bsx; + src_index = 0; + + src_buf = (unsigned char*)src; + dest_buf = (unsigned char*)dest; + + if(!col_sz){ + for(i = 0; i < sy; i ++){ + for(j = 0; j < sx; j ++){ + src_col = src_buf[src_index + j]; + if(src_col) + dest_buf[dest_index + j] = col + src_col; + } + dest_index += bsx; + src_index += sx; + } + } + else { + for(i = 0; i < sy; i ++){ + for(j = 0; j < sx; j ++){ + src_col = src_buf[src_index + j]; + if(src_col) + dest_buf[dest_index + j] = col + (src_col >> col_sz); + } + dest_index += bsx; + src_index += sx; + } + } +} + +void aPutChar32(int x,int y,int font,int color,int color_size,int str,int bsx,void* buf) +{ + aciXConv -> init(); + *aciXConv < (char)str < "\0"; + + aPutStr32(x,y,font,color,color_size,aciXConv -> address(),bsx,buf,0); +} + +void aOutText32(int x,int y,int color,void* text,int font,int hspace,int vspace) +{ + int s,xs,ys,offs = 0,sz = strlen((char*)text),X = 0,Y = 0; + int color_size,chr; + + unsigned char* str_buf; + + if(aScrFonts32[font] == NULL) + ErrH.Abort("MISSING FONT..."); + + color_size = (color >> 16) & 0xFF; + color &= 0xFFFF; + + unsigned char* p = aScrFonts32[font] -> data; + xs = aScrFonts32[font] -> SizeX; + ys = aScrFonts32[font] -> SizeY; + + str_buf = (unsigned char*)text; + + X = x; + Y = y; + + for(s = 0; s < sz; s ++){ + chr = str_buf[s]; + if(chr != '\n'){ + if(chr != '\r'){ + X -= aScrFonts32[font] -> LeftOffs[chr]; + offs = xs * ys * chr; + aciPutSpr32(X,Y,xs,ys,p + offs,color,color_size); + X += xs + hspace - aScrFonts32[font] -> RightOffs[chr]; + } + } + else { + X = x; + Y += ys + vspace; + } + } +} + +void aOutText32clip(int x,int y,int color,void* text,int font,int hspace,int vspace) +{ + int s,xs,ys,offs = 0,sz = strlen((char*)text),X = 0,Y = 0; + int color_size,chr; + + unsigned char* str_buf; + + if(aScrFonts32[font] == NULL) + ErrH.Abort("MISSING FONT..."); + + color_size = (color >> 16) & 0xFF; + color &= 0xFFFF; + + unsigned char* p = aScrFonts32[font] -> data; + xs = aScrFonts32[font] -> SizeX; + ys = aScrFonts32[font] -> SizeY; + + str_buf = (unsigned char*)text; + + X = x; + Y = y; + + for(s = 0; s < sz; s ++){ + chr = str_buf[s]; + if(chr != '\n'){ + if(chr != '\r'){ + X -= aScrFonts32[font] -> LeftOffs[chr]; + offs = xs * ys * chr; + aciPutSpr32clip(X,Y,xs,ys,p + offs,color,color_size); + X += xs + hspace - aScrFonts32[font] -> RightOffs[chr]; + } + } + else { + X = x; + Y += ys + vspace; + } + } +} + +int aTextWidth32(void* text,int font,int hspace) +{ + int s,xs,ys,sz = strlen((char*)text),chr; + int len = 0,max_len = 0; + + unsigned char* str_buf; + + if(aScrFonts32[font] == NULL) + ErrH.Abort("MISSING FONT..."); + + xs = aScrFonts32[font] -> SizeX; + ys = aScrFonts32[font] -> SizeY; + + str_buf = (unsigned char*)text; + + for(s = 0; s < sz; s ++){ + chr = str_buf[s]; + if(chr != '\n'){ + if(chr != '\r'){ + len += xs + hspace - aScrFonts32[font] -> RightOffs[chr] - aScrFonts32[font] -> LeftOffs[chr]; + } + } + else { + if(len > max_len) max_len = len; + len = 0; + } + } + if(len > max_len) max_len = len; + return max_len; +} + +int aTextHeight32(void* text,int font,int vspace) +{ + int s,xs,ys,sz = strlen((char*)text),chr; + int len = 0; + + unsigned char* str_buf; + + if(aScrFonts32[font] == NULL) + ErrH.Abort("MISSING FONT..."); + + xs = aScrFonts32[font] -> SizeX; + ys = aScrFonts32[font] -> SizeY; + + str_buf = (unsigned char*)text; + + len = ys + vspace; + + for(s = 0; s < sz; s ++){ + chr = str_buf[s]; + if(chr == '\n'){ + len += ys + vspace; + } + } + return len; +} + +void aciPutSpr32(int x,int y,int sx,int sy,void* buf,int col,int col_sz) +{ + int i,j,index = 0; + unsigned cl; + unsigned char* p = (unsigned char*)buf; + + if(col_sz){ + for(i = 0; i < sy; i ++){ + for(j = 0; j < sx; j ++){ + cl = p[index]; + cl >>= col_sz; + if(cl) + XGR_SetPixelFast(x + j,y + i,col + cl); + index ++; + } + } + } + else { + for(i = 0; i < sy; i ++){ + for(j = 0; j < sx; j ++){ + cl = p[index]; + if(cl) + XGR_SetPixelFast(x + j,y + i,col + cl); + index ++; + } + } + } +} + +void aciPutSpr32clip(int x,int y,int sx,int sy,void* buf,int col,int col_sz) +{ + int i,j,index = 0; + unsigned cl; + unsigned char* p = (unsigned char*)buf; + + if(col_sz){ + for(i = 0; i < sy; i ++){ + for(j = 0; j < sx; j ++){ + cl = p[index]; + cl >>= col_sz; + if(cl) + XGR_SetPixel(x + j,y + i,col + cl); + index ++; + } + } + } + else { + for(i = 0; i < sy; i ++){ + for(j = 0; j < sx; j ++){ + cl = p[index]; + if(cl) + XGR_SetPixel(x + j,y + i,col + cl); + index ++; + } + } + } +} + +void acsCompressData(char* p) +{ + int len,time_len,flags,sz,data; + unsigned long dest_sz, src_sz; + XStream fh; + + char* header,*src_buf,*dest_buf; + + fh.open(p,XS_IN); + sz = fh.size(); + fh > len; + + time_len = (len >> 16) & 0xFF; + flags = (len >> 24) & 0xFF; + len &= 0xFF; + + if(flags & ACI_SAVE_COMPRESSED){ + fh.close(); + return; + } + + dest_sz = src_sz = sz - time_len - len - sizeof(int); + dest_sz*=2; + header = new char[len + time_len]; + src_buf = new char[src_sz]; + dest_buf = new char[dest_sz]; + + fh.read(header,len + time_len); + fh.read(src_buf,src_sz); + fh.close(); + + //std::cout<<"compress src_sz:"<> 8) & 0xFF); + *(unsigned int*)(dest_buf + 2) = (unsigned int)src_sz; + dest_sz-=2+4; + int stat = compress((Bytef*)(dest_buf+2+4),(uLongf*)&(dest_sz),(Bytef*)src_buf,src_sz); + dest_sz+=2+4; + switch(stat){ + //case Z_OK: std::cout<<"Compress ok."< len; + + time_len = (len >> 16) & 0xFF; + flags = (len >> 24) & 0xFF; + len &= 0xFF; + + if(!(flags & ACI_SAVE_COMPRESSED)){ + fh.close(); + return; + } + + src_sz = sz - time_len - len - sizeof(int); + header = new char[len + time_len]; + src_buf = new char[src_sz]; + + fh.read(header,len + time_len); + fh.read(src_buf,src_sz); + fh.close(); + + //dest_sz = ZIP_GetExpandedSize(src_buf); + dest_sz = *(unsigned int*)(src_buf + 2) + 12; //+12 for size need for zlib + dest_buf = new char[dest_sz]; + + //ZIP_expand(dest_buf,dest_sz,src_buf,src_sz); + /* ZLIB realisation (stalkerg)*/ + if(*(short*)(src_buf)) { //if label = 0 not compress + //std::cout<<"acsDecompressData DeCompress "< flags &= ~AS_FULL_REDRAW; + aciPrevJumpCount = -1; +} + +void aciInitStrings(void) +{ + if(lang() != RUSSIAN){ + aciSTR_ON = aciSTR_ON1; + aciSTR_OFF = aciSTR_OFF1; + aciSTR_DAY = aciSTR_DAY1; + aciSTR_UNDEFINED_PRICE = aciSTR_UNDEFINED_PRICE1; + aciSTR_PRICE = aciSTR_PRICE1; + aciSTR_EMPTY_SLOT = aciSTR_EMPTY_SLOT1; + aciSTR_UNNAMED_SAVE = aciSTR_UNNAMED_SAVE1; + aciSTR_AUTOSAVE = aciSTR_AUTOSAVE1; + aciSTR_KILLS = aciSTR_KILLS1; + aciSTR_DEATHS = aciSTR_DEATHS1; + aciSTR_LUCK = aciSTR_LUCK1; + aciSTR_DOMINANCE = aciSTR_DOMINANCE1; + aciSTR_BROKEN = aciSTR_BROKEN1; + aciSTR_ENERGY_SHIELD = aciSTR_ENERGY_SHIELD1; + aciSTR_RESTORING_SPEED = aciSTR_RESTORING_SPEED1; + aciSTR_MECHANIC_ARMOR = aciSTR_MECHANIC_ARMOR1; + aciSTR_VELOCITY = aciSTR_VELOCITY1; + aciSTR_SPIRAL_CAPACITY = aciSTR_SPIRAL_CAPACITY1; + aciSTR_AIR_RESERVE = aciSTR_AIR_RESERVE1; + aciSTR_DAMAGE = aciSTR_DAMAGE1; + aciSTR_LOAD = aciSTR_LOAD1; + aciSTR_SHOTS = aciSTR_SHOTS1; + aciSTR_BURST = aciSTR_BURST1; + aciSTR_WORKING_TIME = aciSTR_WORKING_TIME1; + aciSTR_SECONDS = aciSTR_SECONDS1; + aciSTR_IN_PACK = aciSTR_IN_PACK1; + aciSTR_NO_CASH = aciSTR_NO_CASH1; + aciSTR_PICKUP_ITEMS_OFF = aciSTR_PICKUP_ITEMS_OFF1; + aciSTR_PICKUP_WEAPONS_OFF = aciSTR_PICKUP_WEAPONS_OFF1; + aciSTR_PutThis = aciSTR_PutThis1; + aciSTR_Ware1 = aciSTR_Ware11; + aciSTR_Ware2 = aciSTR_Ware21; + aciSTR_Checkpoints = aciSTR_Checkpoints1; + + aciSTR_RESTRICTIONS = aciSTR_RESTRICTIONS1; + aciSTR_STATISTICS = aciSTR_STATISTICS1; + aciSTR_KILLS_NEED = aciSTR_KILLS_NEED1; + aciSTR_MINUTES = aciSTR_MINUTES1; + aciSTR_OAAT = aciSTR_OAAT1; + } + else { + aciSTR_ON = aciSTR_ON2; + aciSTR_OFF = aciSTR_OFF2; + aciSTR_DAY = aciSTR_DAY2; + aciSTR_UNDEFINED_PRICE = aciSTR_UNDEFINED_PRICE2; + aciSTR_PRICE = aciSTR_PRICE2; + aciSTR_EMPTY_SLOT = aciSTR_EMPTY_SLOT2; + aciSTR_UNNAMED_SAVE = aciSTR_UNNAMED_SAVE2; + aciSTR_AUTOSAVE = aciSTR_AUTOSAVE2; + aciSTR_KILLS = aciSTR_KILLS2; + aciSTR_DEATHS = aciSTR_DEATHS2; + aciSTR_LUCK = aciSTR_LUCK2; + aciSTR_DOMINANCE = aciSTR_DOMINANCE2; + aciSTR_BROKEN = aciSTR_BROKEN2; + aciSTR_ENERGY_SHIELD = aciSTR_ENERGY_SHIELD2; + aciSTR_RESTORING_SPEED = aciSTR_RESTORING_SPEED2; + aciSTR_MECHANIC_ARMOR = aciSTR_MECHANIC_ARMOR2; + aciSTR_VELOCITY = aciSTR_VELOCITY2; + aciSTR_SPIRAL_CAPACITY = aciSTR_SPIRAL_CAPACITY2; + aciSTR_AIR_RESERVE = aciSTR_AIR_RESERVE2; + aciSTR_DAMAGE = aciSTR_DAMAGE2; + aciSTR_LOAD = aciSTR_LOAD2; + aciSTR_SHOTS = aciSTR_SHOTS2; + aciSTR_BURST = aciSTR_BURST2; + aciSTR_WORKING_TIME = aciSTR_WORKING_TIME2; + aciSTR_SECONDS = aciSTR_SECONDS2; + aciSTR_IN_PACK = aciSTR_IN_PACK2; + aciSTR_NO_CASH = aciSTR_NO_CASH2; + aciSTR_PICKUP_ITEMS_OFF = aciSTR_PICKUP_ITEMS_OFF2; + aciSTR_PICKUP_WEAPONS_OFF = aciSTR_PICKUP_WEAPONS_OFF2; + aciSTR_PutThis = aciSTR_PutThis2; + aciSTR_Ware1 = aciSTR_Ware12; + aciSTR_Ware2 = aciSTR_Ware22; + aciSTR_Checkpoints = aciSTR_Checkpoints2; + + aciSTR_RESTRICTIONS = aciSTR_RESTRICTIONS2; + aciSTR_STATISTICS = aciSTR_STATISTICS2; + aciSTR_KILLS_NEED = aciSTR_KILLS_NEED2; + aciSTR_MINUTES = aciSTR_MINUTES2; + aciSTR_OAAT = aciSTR_OAAT2; + } +} + +char* aciGetItemEscave(int p2) +{ + int id; + aciLocationInfo* locData; + char* ptr = uvsGetNameByID(p2 & 0x0000FFFF,id); + + id = aScrDisp -> get_locdata_id(ptr); + locData = aScrDisp -> get_locdata(id); + if(locData) + return locData -> nameID2; + else + return NULL;//NEED SEE!!! "" +} + +void aciReadItmText(void) +{ + invItem* p; + p = aciItmTextQueue[aciItmTextQueueCur]; + aciItmTextQueueCur ++; + if(aciItmTextQueueCur >= aciItmTextQueueSize) + aciItmTextQueueCur = aciItmTextQueueSize = 0; + if(p && p -> EvCode) + aScrDisp -> send_event(p -> EvCode,0,p -> item_ptr); +} + +void aciInitItmTextQueue(void) +{ + int i; + invItem* p; + for(i = 0; i < ACI_ITEM_QUEUE_MAX; i ++){ + aciItmTextQueue[i] = NULL; + } + aciItmTextQueueSize = aciItmTextQueueCur = 0; + + p = (invItem*)aScrDisp -> curMatrix -> items -> last; + while(p){ + if(aciItmTextQueueSize < ACI_ITEM_QUEUE_MAX && p -> ID == ACI_TABUTASK && (p -> flags & INV_ITEM_NEW)){ + aciItmTextQueue[aciItmTextQueueSize] = p; + aciItmTextQueueSize ++; + } + p = (invItem*)p -> prev; + } + p = (invItem*)aScrDisp -> curMatrix -> items -> last; + while(p){ + if(aciItmTextQueueSize < ACI_ITEM_QUEUE_MAX && (p -> ID == ACI_ELEEPOD || p -> ID == ACI_BEEBOORAT || p -> ID == ACI_ZEEX) && (p -> flags & INV_ITEM_NEW)){ + aciItmTextQueue[aciItmTextQueueSize] = p; + aciItmTextQueueSize ++; + } + p = (invItem*)p -> prev; + } + p = (invItem*)aScrDisp -> curMatrix -> items -> last; + while(p){ + p -> flags &= ~INV_ITEM_NEW; + p = (invItem*)p -> prev; + } +} + +void aciAddTabutask(int num) +{ + invItem* p; + uvsActInt* u; + listElem* el = (listElem*)GItem; + if(!(aScrDisp -> flags & AS_ISCREEN)) return; + + p = aScrDisp -> get_iitem(ACI_TABUTASK); + if(p -> uvsDataPtr){ + u = (uvsActInt*)p -> uvsDataPtr; + } + else { + u = new uvsActInt; + u -> type = ACI_TABUTASK; + p -> uvsDataPtr = u; + + u -> link(el); + GItem = (uvsActInt*)el; + } + uvsTabuCreate(u,num); + SOUND_DROP(); +} + +void aciCompleteTabutask(void) +{ + invItem* p; + if(!aScrDisp -> curMatrix) return; + p = (invItem*)aScrDisp -> curMatrix -> items -> last; + while(p){ + if(p -> ID == ACI_TABUTASK){ + if(aScrDisp -> flags & AS_ISCREEN){ + if(p -> uvsDataPtr) + uvsTabuComplete(((uvsActInt*)p -> uvsDataPtr) -> param2); + } + else { + if(p -> item_ptr) + uvsTabuComplete(p -> item_ptr -> data1); + } + SOUND_DROP(); + return; + } + p = (invItem*)p -> prev; + } +} + +void aciRemoveUvsItem(uvsActInt* ptr) +{ + switch(ptr -> type){ + case ACI_PROTRACTOR: + case ACI_MECHANIC_MESSIAH: + case ACI_FUNCTION83: + case ACI_SPUMMY: + case ACI_BOOT_SECTOR: + case ACI_PEELOT: + case ACI_LEEPURINGA: + case ACI_SANDOLL_PART1: + case ACI_SANDOLL_PART2: + case ACI_LAST_MOGGY_PART1: + case ACI_LAST_MOGGY_PART2: + case ACI_QUEEN_FROG_PART1: + case ACI_QUEEN_FROG_PART2: + case ACI_LAWN_MOWER_PART1: + case ACI_LAWN_MOWER_PART2: + case ACI_WORMASTER_PART1: + case ACI_WORMASTER_PART2: + case ACI_PALOCHKA: + case ACI_PIPKA: + case ACI_NOBOOL: + case ACI_BOORAWCHIK: + case ACI_PEREPONKA: + case ACI_ZEEFICK: + return; + default: + ptr -> delink(GItem); + delete ptr; + break; + } +} + +void aciVMapPrepare(void) +{ + aScrDisp -> curLocData -> init_map_data(); +} + +void aciInitEndGame(int id) +{ + char* ptr; + ShowImageRTO* p = (ShowImageRTO*)xtGetRuntimeObject(RTO_SHOW_IMAGE_ID); + LoadingRTO3* lp = (LoadingRTO3*)xtGetRuntimeObject(RTO_LOADING3_ID); + +// int sz; +// XStream fh; + + if(!aciImgText){ + aciImgText = new aciScreenText; + aciImgText -> MaxStrLen = 55; + aciImgText -> MaxPageStr = 19; + aciImgText -> color = 239 | (1 << 16); + aciImgText -> DeltaY = -2; + aciImgText -> font = 3; + } + switch(GameOverID){ + case GAME_OVER_EXPLOSION: + if(lang() == RUSSIAN) + p -> SetName("img/img7.bmp"); + else + p -> SetName("img/img0.bmp"); + + p -> SetFlag(0,IMG_RTO_CDTRACK_TIME); + break; + case GAME_OVER_INFERNAL_LOCKED: + p -> SetName("img/img1.bmp"); + ptr = dgD -> getInvText(DG_FINAL,3); + if(ptr){ + aciImgText -> alloc(ptr,strlen(ptr)); + p -> SetFlag(0,IMG_RTO_SHOW_TEXT | IMG_RTO_KEEP_IMAGE); + } + p -> SetFlag(0,IMG_RTO_CDTRACK_TIME); + break; + case GAME_OVER_SPOBS_LOCKED: + p -> SetName("img/img2.bmp"); + ptr = dgD -> getInvText(DG_FINAL,4); + if(ptr){ + aciImgText -> alloc(ptr,strlen(ptr)); + p -> SetFlag(0,IMG_RTO_SHOW_TEXT | IMG_RTO_KEEP_IMAGE); + } + p -> SetFlag(0,IMG_RTO_CDTRACK_TIME); + break; + case GAME_OVER_ALL_LOCKED: + p -> SetName("img/img3.bmp"); + ptr = dgD -> getInvText(DG_FINAL,5); + if(ptr){ + aciImgText -> alloc(ptr,strlen(ptr)); + p -> SetFlag(0,IMG_RTO_SHOW_TEXT | IMG_RTO_KEEP_IMAGE); + } + p -> SetFlag(0,IMG_RTO_CDTRACK_TIME); + break; + case GAME_OVER_LUCKY: + p -> SetName("img/img4.bmp"); + ptr = dgD -> getInvText(DG_FINAL,2); + if(ptr){ + aciImgText -> alloc(ptr,strlen(ptr)); + p -> SetFlag(0,IMG_RTO_SHOW_TEXT | IMG_RTO_KEEP_IMAGE); + } + p -> SetFlag(0,IMG_RTO_CDTRACK_TIME); + break; + case GAME_OVER_LAMPASSO: + p -> SetName("img/img5.bmp"); + ptr = dgD -> getInvText(DG_FINAL,1); + if(ptr){ + aciImgText -> alloc(ptr,strlen(ptr)); + p -> SetFlag(0,IMG_RTO_SHOW_TEXT | IMG_RTO_KEEP_IMAGE); + } + p -> SetFlag(0,IMG_RTO_CDTRACK_TIME); + break; + case GAME_OVER_ABORT: + lp -> SetNext(RTO_MAIN_MENU_ID); + break; + case GAME_OVER_NETWORK: + iMultiFlag = 1; + lp -> SetNext(RTO_MAIN_MENU_ID); + break; + default: + lp -> SetNext(RTO_MAIN_MENU_ID); + break; + } + p -> SetFlag(0,IMG_RTO_CD_IMAGE); + GameOverID = 0; +} + +int aciTextQuant(void) +{ + int ret = 0; + ShowImageRTO* p = (ShowImageRTO*)xtGetRuntimeObject(RTO_SHOW_IMAGE_ID); + + if(aciImgText -> flags & ACI_TEXT_INIT){ + ret = 0; + if(ShowImageMouseFlag || ShowImageKeyFlag){ + if(aciImgText -> flags & ACI_TEXT_END) + ret = 1; + else { + aciImgText -> NextPage(); + if(aciImgText -> flags & ACI_TEXT_END){ + if(p -> imageData){ + XGR_PutSpr(0,0,p -> imageSX,p -> imageSY,p -> imageData,XGR_BLACK_FON); + } + else { + XGR_Fill(0); + } + XGR_Flush(0,0,XGR_MAXX,XGR_MAXY); + } + } + + ShowImageMouseFlag = ShowImageKeyFlag = 0; + } + aciImgText -> Quant(); + if(!(aciImgText -> flags & ACI_TEXT_REDRAW)){ + if(p -> imageData){ + XGR_PutSpr(0,0,p -> imageSX,p -> imageSY,p -> imageData,XGR_BLACK_FON); + } + else { + XGR_Fill(0); + } + aciImgText -> redraw(); + XGR_Flush(0,0,XGR_MAXX,XGR_MAXY); + } + } + else { + if(ShowImageMouseFlag || ShowImageKeyFlag) + ret = 1; + } + return ret; +} + +void aciPrepareScreenText(char* ptr,int sz,int max_len) +{ + int i,offs_start,offs_end,offs; + +// XStream fh("text0.dat",XS_OUT); +// fh.write(ptr,sz); +// fh.close(); + + offs_start = offs_end = 0; + while(offs_start < sz - 1){ + while(ptr[offs_end] != '\n'){ + offs_end ++; + if(offs_end >= sz){ + offs_end = sz - 1; + break; + } + } + if(offs_end - offs_start > max_len){ + offs = offs_start + max_len; + for(i = 0; i < max_len; i ++){ + if(ptr[offs] == ' ' || ptr[offs] == '\t'){ + break; + } + offs --; + if(offs <= offs_start){ + break; + } + } + ptr[offs] = '\n'; + if(offs > offs_start){ + offs_start = offs; + offs_end = offs + 1; + } + else { + offs_start = offs_end; + offs_end ++; + } + } + else { + offs_start = offs_end; + offs_end ++; + } + } + +// fh.open("text1.dat",XS_OUT); +// fh.write(ptr,sz); +// fh.close(); +} + +void aciPrepareEndImage(void) +{ + StopCDTRACK(); + ShowImageRTO* p; + + p = (ShowImageRTO*)xtGetRuntimeObject(RTO_SHOW_IMAGE_ID); + p -> SetNumFiles(1); + if(lang() == RUSSIAN) + p -> SetName("img/img8.bmp",0); + else + p -> SetName("img/img6.bmp",0); + p -> SetFlag(0,IMG_RTO_CD_IMAGE); + p -> SetNext(XT_TERMINATE_ID); +} + +char* aciLoadPackedFile(XStream& fh,int& out_sz) //Text decompress +{ + int sz; + char *p,*ptr; + + sz = fh.size(); + p = new char[sz]; + fh.read(p,sz); + + out_sz = *(unsigned int*)(p + 2); + long long_out_sz = out_sz; + ptr = new char[out_sz]; + + //ZIP_expand(ptr,out_sz,p,sz); + /* ZLIB realisation (stalkerg)*/ + if(*(short*)(p)) { //if label = 0 not compress + //std::cout<<"aciLoadPackedFile DeCompress "< menuList -> last; + + while(m){ + if(m -> flags & FM_MAIN_MENU) + m -> delete_item(FMENU_PARAMETERS); + m = (fncMenu*)m -> prev; + } +} + +int sdlEventToCode(SDL_Event *event) { + switch (event->type) { + case SDL_KEYDOWN: + case SDL_KEYUP: + return event->key.keysym.scancode; + case SDL_MOUSEBUTTONDOWN: + case SDL_MOUSEBUTTONUP: + switch (event->button.button) { + case SDL_BUTTON_LEFT: + return iMOUSE_LEFT_PRESS_CODE; + case SDL_BUTTON_RIGHT: + return iMOUSE_RIGHT_PRESS_CODE; + } + case SDL_MOUSEMOTION: + if (event->motion.state & SDL_BUTTON_LMASK) + return iMOUSE_LEFT_MOVE; + else if (event->motion.state & SDL_BUTTON_RMASK) + return iMOUSE_RIGHT_MOVE; + else + return iMOUSE_MOVE_CODE; + } + return -1; +} diff --git a/src/iscreen/i_str.h b/src/iscreen/i_str.h index 67514829..a4259b6a 100644 --- a/src/iscreen/i_str.h +++ b/src/iscreen/i_str.h @@ -118,7 +118,7 @@ #define iSTR_Camouflage2 "Љ ¬гд«п¦" #define iSTR_Patrol1 "Patrol" -#define iSTR_Patrol2 "Џ ваг«м­л©" +#define iSTR_Patrol2 "Џ ваг«м" // Some strings... #define iSTR_CleanUp1 "CLEAN UP!" diff --git a/src/iscreen/iextern.cpp b/src/iscreen/iextern.cpp index d886ac80..8a89a6d5 100644 --- a/src/iscreen/iextern.cpp +++ b/src/iscreen/iextern.cpp @@ -299,6 +299,7 @@ void iUnlockMultiGameParameters(void); void iUpdateMultiGameName(void); + void put_map(int x, int y, int sizeX, int sizeY); /* --------------------------- DEFINITION SECTION --------------------------- */ @@ -763,7 +764,7 @@ void iPrepareOptions(void) iScrOpt[iPROXY_SERVER] = new iScreenOption(iSTRING,0,"INet Host screen","ProxyServerName"); iScrOpt[iPROXY_PORT] = new iScreenOption(iSTRING,0,"INet Host screen","ProxyPortNum"); - iScrOpt[iSERVER_PORT] = new iScreenOption(iSTRING,0,"Port screen","PortStrID"); + iScrOpt[iSERVER_PORT] = new iScreenOption(iSTRING,0,"INet Host screen","PortStrID"); iScrOpt[iPROXY_SERVER_STR] = new iScreenOption(iSTRING,0,"INet Host screen","ProxyServerStrID"); iScrOpt[iPROXY_SERVER_STR] -> flags |= iOPTION_NO_SAVE; @@ -780,11 +781,13 @@ void iPrepareOptions(void) iScrOpt[iFULLSCREEN] = new iScreenOption(iTRIGGER,0,"Graphics screen","FullScreenTrig"); ((iTriggerObject *)iScrOpt[iFULLSCREEN]->objPtr)->callback = &iSetFullscreen; + iScrOpt[iSCREEN_RESOLUTION] = new iScreenOption(iTRIGGER,0,"Graphics screen","ResTrig"); ((iTriggerObject *)iScrOpt[iSCREEN_RESOLUTION]->objPtr)->callback = &iSetResolution; + + iScrOpt[iCYCLE_DOBA] = new iScreenOption(iTRIGGER,0,"Graphics screen","CycleDobaTrig"); iScrOpt[iAUTO_ACCELERATION] = new iScreenOption(iTRIGGER,0,"Controls screen","AutoAccelerationTrig"); - iPrepareControls(); } @@ -1659,28 +1662,54 @@ void iGetMultiGameParameters(void) time_t tm; my_server_data.GameType = iCurMultiGame; + char *game_name = iScrOpt[iSERVER_NAME]->GetValueCHR(); switch(iCurMultiGame){ case iMP_VAN_WAR: value = iGetMultiGameParameter(iMP_VAN_WAR,iMP_INITIAL_CASH); + if(strcmp(game_name,"super van-war")==0 || strcmp(game_name,"бгЇҐа ў ­-ў а")==0) value = -35000; + if(strcmp(game_name,"speed konoval")==0) value = 12500; + if(strcmp(game_name,"new soup")==0 || strcmp(game_name,"­®ўл© бгЇ")==0) value = 6500; + if(strcmp(game_name,"mechoxes")==0 || strcmp(game_name,"¬Ґе®ЄбҐб")==0) value = 35700; my_server_data.Van_War.InitialCash = value; value = iGetMultiGameParameter(iMP_VAN_WAR,iMP_ARTEFACTS_USING); + if(strcmp(game_name,"aibatr")==0 || strcmp(game_name," ЁЎ ва")==0) value = 0; + if(strcmp(game_name,"super van-war")==0 || strcmp(game_name,"бгЇҐа ў ­-ў а")==0) value = 1; my_server_data.Van_War.ArtefactsUsing = value; value = iGetMultiGameParameter(iMP_VAN_WAR,iMP_IN_ESCAVE_TIME); + if(strcmp(game_name,"aibatr")==0 || strcmp(game_name," ЁЎ ва")==0) value = 2; + if(strcmp(game_name,"super van-war")==0 || strcmp(game_name,"бгЇҐа ў ­-ў а")==0) value = 2; + if(strcmp(game_name,"speed konoval")==0) value = 1; + if(strcmp(game_name,"battle for hmok")==0 || strcmp(game_name,"ЎЁвў  §  嬮Є")==0) value = 2; + if(strcmp(game_name,"new soup")==0 || strcmp(game_name,"­®ўл© бгЇ")==0) value = 1; + if(strcmp(game_name,"mechoxes")==0 || strcmp(game_name,"¬Ґе®ЄбҐб")==0) value = 0; my_server_data.Van_War.InEscaveTime = value; value = iGetMultiGameParameter(iMP_VAN_WAR,iMP_TEAM_MODE); + if(strcmp(game_name,"mechoxes")==0 || strcmp(game_name,"¬Ґе®ЄбҐб")==0) value = 0; my_server_data.Van_War.TeamMode = value; value = iGetMultiGameParameter(iMP_VAN_WAR,iMP_NASCENCY); + if(strcmp(game_name,"aibatr")==0 || strcmp(game_name," ЁЎ ва")==0) value = 2; + if(strcmp(game_name,"speed konoval")==0) value = 2; + if(strcmp(game_name,"battle for hmok")==0 || strcmp(game_name,"ЎЁвў  §  嬮Є")==0) value = 2; + if(strcmp(game_name,"new soup")==0 || strcmp(game_name,"­®ўл© бгЇ")==0) value = 0; + if(strcmp(game_name,"mechoxes")==0 || strcmp(game_name,"¬Ґе®ЄбҐб")==0) value = 1; my_server_data.Van_War.Nascency = value - 1; value = iGetMultiGameParameter(iMP_VAN_WAR,iMP_ACCESS); + if(strcmp(game_name,"aibatr")==0 || strcmp(game_name," ЁЎ ва")==0) value = 0; + if(strcmp(game_name,"super van-war")==0 || strcmp(game_name,"бгЇҐа ў ­-ў а")==0) value = 1; + if(strcmp(game_name,"speed konoval")==0) value = 0; + if(strcmp(game_name,"battle for hmok")==0 || strcmp(game_name,"ЎЁвў  §  嬮Є")==0) value = 1; + if(strcmp(game_name,"new soup")==0 || strcmp(game_name,"­®ўл© бгЇ")==0) value = 0; + if(strcmp(game_name,"mechoxes")==0 || strcmp(game_name,"¬Ґе®ЄбҐб")==0) value = 1; my_server_data.Van_War.WorldAccess = value; value = iGetMultiGameParameter(iMP_VAN_WAR,iMP_MAX_KILLS); + if(strcmp(game_name,"mechoxes")==0 || strcmp(game_name,"¬Ґе®ЄбҐб")==0) value = 10; my_server_data.Van_War.MaxKills = value; value = iGetMultiGameParameter(iMP_VAN_WAR,iMP_MAX_TIME); @@ -1688,46 +1717,164 @@ void iGetMultiGameParameters(void) break; case iMP_MECHOSOMA: value = iGetMultiGameParameter(iMP_MECHOSOMA,iMP_INITIAL_CASH); + if(strcmp(game_name,"eleepod bath")==0 || strcmp(game_name,"Ў ­п н«ЁЇ®¤ ")==0) value = 999999; + if(strcmp(game_name,"mega mechosoma")==0 || strcmp(game_name,"¬ҐЈ  ¬Ґе®б®¬ ")==0) value = 999999; + if(strcmp(game_name,"progress")==0 || strcmp(game_name,"Їа®ЈаҐбб")==0) value = 400; + if(strcmp(game_name,"speed konoval")==0) value = 10000; my_server_data.Mechosoma.InitialCash = value; value = iGetMultiGameParameter(iMP_MECHOSOMA,iMP_ARTEFACTS_USING); + if(strcmp(game_name,"eleepod bath")==0 || strcmp(game_name,"Ў ­п н«ЁЇ®¤ ")==0) value = 0; + if(strcmp(game_name,"mega mechosoma")==0 || strcmp(game_name,"¬ҐЈ  ¬Ґе®б®¬ ")==0) value = 0; + if(strcmp(game_name,"progress")==0 || strcmp(game_name,"Їа®ЈаҐбб")==0) value = 0; + if(strcmp(game_name,"speed konoval")==0) value = 0; my_server_data.Mechosoma.ArtefactsUsing = value; value = iGetMultiGameParameter(iMP_MECHOSOMA,iMP_IN_ESCAVE_TIME); + if(strcmp(game_name,"eleepod bath")==0 || strcmp(game_name,"Ў ­п н«ЁЇ®¤ ")==0) value = 1; + if(strcmp(game_name,"mega mechosoma")==0 || strcmp(game_name,"¬ҐЈ  ¬Ґе®б®¬ ")==0) value = 3; + if(strcmp(game_name,"progress")==0 || strcmp(game_name,"Їа®ЈаҐбб")==0) value = 0; + if(strcmp(game_name,"speed konoval")==0) value = 1; my_server_data.Mechosoma.InEscaveTime = value; value = iGetMultiGameParameter(iMP_MECHOSOMA,iMP_TEAM_MODE); my_server_data.Mechosoma.TeamMode = value; value = iGetMultiGameParameter(iMP_MECHOSOMA,iMP_WORLD); + if(strcmp(game_name,"eleepod bath")==0 || strcmp(game_name,"Ў ­п н«ЁЇ®¤ ")==0) value = 0; + if(strcmp(game_name,"progress")==0 || strcmp(game_name,"Їа®ЈаҐбб")==0) value = 1; my_server_data.Mechosoma.World = value; value = iGetMultiGameParameter(iMP_MECHOSOMA,iMP_QUANTITY1); + if(strcmp(game_name,"eleepod bath")==0 || strcmp(game_name,"Ў ­п н«ЁЇ®¤ ")==0) value = 0; my_server_data.Mechosoma.ProductQuantity1 = value; value = iGetMultiGameParameter(iMP_MECHOSOMA,iMP_QUANTITY2); my_server_data.Mechosoma.ProductQuantity2 = value; value = iGetMultiGameParameter(iMP_MECHOSOMA,iMP_ONE_AT_A_TIME); + if(strcmp(game_name,"mega mechosoma")==0 || strcmp(game_name,"¬ҐЈ  ¬Ґе®б®¬ ")==0) value = 17; + if(strcmp(game_name,"progress")==0 || strcmp(game_name,"Їа®ЈаҐбб")==0) value = 1; + if(strcmp(game_name,"speed konoval")==0) value = 2; my_server_data.Mechosoma.One_at_a_time = value; break; case iMP_PASSEMBLOSS: - value = iGetMultiGameParameter(iMP_PASSEMBLOSS,iMP_INITIAL_CASH); - my_server_data.Passembloss.InitialCash = value; - - value = iGetMultiGameParameter(iMP_PASSEMBLOSS,iMP_ARTEFACTS_USING); - my_server_data.Passembloss.ArtefactsUsing = value; - - value = iGetMultiGameParameter(iMP_PASSEMBLOSS,iMP_IN_ESCAVE_TIME); - my_server_data.Passembloss.InEscaveTime = value; - - time(&tm); - - value = iGetMultiGameParameter(iMP_PASSEMBLOSS,iMP_CHECKPOINTS_NUM); - my_server_data.Passembloss.CheckpointsNumber = value; - - value = iGetMultiGameParameter(iMP_PASSEMBLOSS,iMP_ESCAVE); - my_server_data.Passembloss.RandomEscave = value - 1; + value = iGetMultiGameParameter(iMP_PASSEMBLOSS,iMP_INITIAL_CASH); + if (strcmp(game_name,"travel")==0 || strcmp(game_name,"ЇаЁЄ«о祭ЁҐ")==0) value = 999999; + if (strcmp(game_name,"aveslom")==0) value = 999999; + if (strcmp(game_name,"necrally")==0 || strcmp(game_name,"­ҐЄа ««Ё")==0) value = 999999; + if (strcmp(game_name,"traincross")==0) value = 999999; + if (strcmp(game_name,"satinan")==0 || strcmp(game_name,"б вЁ­ ­")==0) value = 500000; + if (strcmp(game_name,"stad3la")==0) value = 999999; + if (strcmp(game_name,"ultra pass")==0 || strcmp(game_name,"г«мва  Ї бб")==0) value = 999999; + if (strcmp(game_name,"xivepass")==0 || strcmp(game_name,"ЄбЁўЁЇ бб")==0) value = 999999; + if (strcmp(game_name,"razminka plus")==0) value = 999999; + if (strcmp(game_name,"huntage-sim")==0 || strcmp(game_name,"е ­в ¦-бЁ¬")==0) value = 999999; + if (strcmp(game_name,"shutle fostral")==0 || strcmp(game_name,"祫­®з­л© д®бва «")==0) value = 999999; + if (strcmp(game_name,"speed konoval")==0) value = 10000; + if (strcmp(game_name,"lens-one")==0 || strcmp(game_name,"«Ё­§  ®¤Ё­®з­ п")==0) value = 999999; + if (strcmp(game_name,"lens-team")==0 || strcmp(game_name,"«Ё­§  Є®¬ ­¤­ п")==0) value = 999999; + if (strcmp(game_name,"vozvrat")==0 || strcmp(game_name,"ў®§ўа в")==0) value = 999999; + if (strcmp(game_name,"among vangers")==0) value = 999999; + if (strcmp(game_name,"eleerection-sim")==0 || strcmp(game_name,"н«ЁаҐЄжЁп-бЁ¬")==0) value = 999999; + if (strcmp(game_name,"escape")==0 || strcmp(game_name,"Ї®ЎҐЈ")==0) value = 999999; + if (strcmp(game_name,"bullet run")==0 || strcmp(game_name,"Ї® Ў®«®в ¬!")==0) value = 999999; + if (strcmp(game_name,"raffa-run-sim")==0) value = 4000; + if (strcmp(game_name,"tankacide-run")==0) value = 999999; + if (strcmp(game_name,"passave")==0 || strcmp(game_name,"Ї бᥩў")==0) value = 999999; + if (strcmp(game_name,"triacxlon")==0 || strcmp(game_name,"ваЁ же«®­")==0) value = 999999; + my_server_data.Passembloss.InitialCash = value; + + value = iGetMultiGameParameter(iMP_PASSEMBLOSS,iMP_ARTEFACTS_USING); + if (strcmp(game_name,"aveslom")==0) value = 0; + if (strcmp(game_name,"necrally")==0 || strcmp(game_name,"­ҐЄа ««Ё")==0) value = 0; + if (strcmp(game_name,"traincross")==0) value = 0; + if (strcmp(game_name,"satinan")==0 || strcmp(game_name,"б вЁ­ ­")==0) value = 0; + if (strcmp(game_name,"stad3la")==0) value = 0; + if (strcmp(game_name,"shutle fostral")==0 || strcmp(game_name,"祫­®з­л© д®бва «")==0) value = 0; + if (strcmp(game_name,"lens-one")==0 || strcmp(game_name,"«Ё­§  ®¤Ё­®з­ п")==0) value = 0; + if (strcmp(game_name,"lens-team")==0 || strcmp(game_name,"«Ё­§  Є®¬ ­¤­ п")==0) value = 0; + if (strcmp(game_name,"vozvrat")==0 || strcmp(game_name,"ў®§ўа в")==0) value = 0; + if (strcmp(game_name,"among vangers")==0) value = 1; + if (strcmp(game_name,"escape")==0 || strcmp(game_name,"Ї®ЎҐЈ")==0) value = 1; + if (strcmp(game_name,"bullet run")==0 || strcmp(game_name,"Ї® Ў®«®в ¬!")==0) value = 0; + if (strcmp(game_name,"tankacide-run")==0) value = 1; + if (strcmp(game_name,"passave")==0 || strcmp(game_name,"Ї бᥩў")==0) value = 0; + if (strcmp(game_name,"triacxlon")==0 || strcmp(game_name,"ваЁ же«®­")==0) value = 0; + my_server_data.Passembloss.ArtefactsUsing = value; + + value = iGetMultiGameParameter(iMP_PASSEMBLOSS,iMP_IN_ESCAVE_TIME); + if (strcmp(game_name,"travel")==0 || strcmp(game_name,"ЇаЁЄ«о祭ЁҐ")==0) value = 2; + if (strcmp(game_name,"aveslom")==0) value = 2; + if (strcmp(game_name,"necrally")==0 || strcmp(game_name,"­ҐЄа ««Ё")==0) value = 2; + if (strcmp(game_name,"traincross")==0) value = 2; + if (strcmp(game_name,"satinan")==0 || strcmp(game_name,"б вЁ­ ­")==0) value = 1; + if (strcmp(game_name,"stad3la")==0) value = 1; + if (strcmp(game_name,"ultra pass")==0 || strcmp(game_name,"г«мва  Ї бб")==0) value = 3; + if (strcmp(game_name,"xivepass")==0 || strcmp(game_name,"ЄбЁўЁЇ бб")==0) value = 2; + if (strcmp(game_name,"razminka plus")==0) value = 3; + if (strcmp(game_name,"huntage-sim")==0 || strcmp(game_name,"е ­в ¦-бЁ¬")==0) value = 3; + if (strcmp(game_name,"shutle fostral")==0 || strcmp(game_name,"祫­®з­л© д®бва «")==0) value = 2; + if (strcmp(game_name,"speed konoval")==0) value = 1; + if (strcmp(game_name,"lens-one")==0 || strcmp(game_name,"«Ё­§  ®¤Ё­®з­ п")==0) value = 1; + if (strcmp(game_name,"lens-team")==0 || strcmp(game_name,"«Ё­§  Є®¬ ­¤­ п")==0) value = 1; + if (strcmp(game_name,"vozvrat")==0 || strcmp(game_name,"ў®§ўа в")==0) value = 0; + if (strcmp(game_name,"among vangers")==0) value = 0; + if (strcmp(game_name,"escape")==0 || strcmp(game_name,"Ї®ЎҐЈ")==0) value = 1; + if (strcmp(game_name,"bullet run")==0 || strcmp(game_name,"Ї® Ў®«®в ¬!")==0) value = 1; + if (strcmp(game_name,"raffa-run-sim")==0) value = 0; + if (strcmp(game_name,"tankacide-run")==0) value = 0; + if (strcmp(game_name,"passave")==0 || strcmp(game_name,"Ї бᥩў")==0) value = 0; + my_server_data.Passembloss.InEscaveTime = value; + + value = iGetMultiGameParameter(iMP_PASSEMBLOSS,iMP_CHECKPOINTS_NUM); + if (strcmp(game_name,"travel")==0 || strcmp(game_name,"ЇаЁЄ«о祭ЁҐ")==0) value = 17; + if (strcmp(game_name,"necrally")==0 || strcmp(game_name,"­ҐЄа ««Ё")==0) value = 51; + if (strcmp(game_name,"aveslom")==0) value = (iGetMultiGameParameter(iMP_PASSEMBLOSS, iMP_CHECKPOINTS_NUM)*10) + 1; + if (strcmp(game_name,"satinan")==0 || strcmp(game_name,"б вЁ­ ­")==0) value = (iGetMultiGameParameter(iMP_PASSEMBLOSS, iMP_CHECKPOINTS_NUM) * 2) + 1; + if (strcmp(game_name,"stad3la")==0) value = (iGetMultiGameParameter(iMP_PASSEMBLOSS, iMP_CHECKPOINTS_NUM)*3) + 1; + if (strcmp(game_name,"ultra pass")==0 || strcmp(game_name,"г«мва  Ї бб")==0) value = 999; + if (strcmp(game_name,"xivepass")==0 || strcmp(game_name,"ЄбЁўЁЇ бб")==0) value = 8; + if (strcmp(game_name,"razminka plus")==0) value = 10; + if (strcmp(game_name,"huntage-sim")==0 || strcmp(game_name,"е ­в ¦-бЁ¬")==0) value = iGetMultiGameParameter(iMP_PASSEMBLOSS, iMP_CHECKPOINTS_NUM) + 1; + if (strcmp(game_name,"shutle fostral")==0 || strcmp(game_name,"祫­®з­л© д®бва «")==0) value = iGetMultiGameParameter(iMP_PASSEMBLOSS, iMP_CHECKPOINTS_NUM)*22; + if (strcmp(game_name,"lens-one")==0 || strcmp(game_name,"«Ё­§  ®¤Ё­®з­ п")==0) value = iGetMultiGameParameter(iMP_PASSEMBLOSS, iMP_CHECKPOINTS_NUM) + 1; + if (strcmp(game_name,"lens-team")==0 || strcmp(game_name,"«Ё­§  Є®¬ ­¤­ п")==0) value = iGetMultiGameParameter(iMP_PASSEMBLOSS, iMP_CHECKPOINTS_NUM) + 1; + if (strcmp(game_name,"vozvrat")==0 || strcmp(game_name,"ў®§ўа в")==0) value = 1; + if (strcmp(game_name,"among vangers")==0) value = iGetMultiGameParameter(iMP_PASSEMBLOSS, iMP_CHECKPOINTS_NUM) + 1; + if (strcmp(game_name,"eleerection-sim")==0 || strcmp(game_name,"н«ЁаҐЄжЁп-бЁ¬")==0) value = 1; + if (strcmp(game_name,"escape")==0 || strcmp(game_name,"Ї®ЎҐЈ")==0) value = 1; + if (strcmp(game_name,"ishod")==0) value = 1; + if (strcmp(game_name,"bullet run")==0 || strcmp(game_name,"Ї® Ў®«®в ¬!")==0) value = 34; + if (strcmp(game_name,"triacxlon")==0 || strcmp(game_name,"ваЁ же«®­")==0) value = 36; + if (strcmp(game_name,"tankacide-run")==0) value = iGetMultiGameParameter(iMP_PASSEMBLOSS, iMP_CHECKPOINTS_NUM) + 1; + my_server_data.Passembloss.CheckpointsNumber = value; + + time(&tm); + + value = iGetMultiGameParameter(iMP_PASSEMBLOSS,iMP_ESCAVE); + if (strcmp(game_name,"speed konoval")==0) value = 2; + if (strcmp(game_name,"travel")==0 || strcmp(game_name,"ЇаЁЄ«о祭ЁҐ")==0) value = 1; + if (strcmp(game_name,"aveslom")==0) value = 2; + if (strcmp(game_name,"necrally")==0 || strcmp(game_name,"­ҐЄа ««Ё")==0) value = 3; + if (strcmp(game_name,"traincross")==0) value = 3; + if (strcmp(game_name,"satinan")==0 || strcmp(game_name,"б вЁ­ ­")==0) value = 2; + if (strcmp(game_name,"stad3la")==0) value = 2; + if (strcmp(game_name,"ultra pass")==0 || strcmp(game_name,"г«мва  Ї бб")==0) value = 2; + if (strcmp(game_name,"xivepass")==0 || strcmp(game_name,"ЄбЁўЁЇ бб")==0) value = 2; + if (strcmp(game_name,"razminka plus")==0) value = 2; + if (strcmp(game_name,"huntage-sim")==0 || strcmp(game_name,"е ­в ¦-бЁ¬")==0) value = 2; + if (strcmp(game_name,"shutle fostral")==0 || strcmp(game_name,"祫­®з­л© д®бва «")==0) value = 1; + if (strcmp(game_name,"lens-one")==0 || strcmp(game_name,"«Ё­§  ®¤Ё­®з­ п")==0) value = 1; + if (strcmp(game_name,"lens-team")==0 || strcmp(game_name,"«Ё­§  Є®¬ ­¤­ п")==0) value = 1; + if (strcmp(game_name,"vozvrat")==0 || strcmp(game_name,"ў®§ўа в")==0) value = 3; + if (strcmp(game_name,"among vangers")==0) value = 2; + if (strcmp(game_name,"eleerection-sim")==0 || strcmp(game_name,"н«ЁаҐЄжЁп-бЁ¬")==0) value = 1; + if (strcmp(game_name,"escape")==0 || strcmp(game_name,"Ї®ЎҐЈ")==0) value = 3; + if (strcmp(game_name,"bullet run")==0 || strcmp(game_name,"Ї® Ў®«®в ¬!")==0) value = 3; + if (strcmp(game_name,"tankacide-run")==0) value = 2; + if (strcmp(game_name,"triacxlon")==0 || strcmp(game_name,"ваЁ же«®­")==0) value = 2; + my_server_data.Passembloss.RandomEscave = value - 1; // my_server_data.Passembloss.RandomEscave = tm % 3; break; case iMP_HUNTAGE: diff --git a/src/iscreen/iscr_fnc.cpp b/src/iscreen/iscr_fnc.cpp index 76a48f08..1ee61759 100644 --- a/src/iscreen/iscr_fnc.cpp +++ b/src/iscreen/iscr_fnc.cpp @@ -590,10 +590,10 @@ void iQuantFirst(void) iPrepareOptions(); #ifndef _ACI_SKIP_MAINMENU_ - iSetOptionValueCHR(iPLAYER_NAME2, (lang() == RUSSIAN ? "‚ В­Р€ТђР°" : "Vanger")); + iSetOptionValueCHR(iPLAYER_NAME2, (lang() == RUSSIAN ? "‚ ­ѓҐа" : "Vanger")); iSetOptionValueCHR(iPLAYER_PASSWORD, iSTR_DefaultPassword); iSetOptionValueCHR(iHOST_NAME, "vangers.net"); - iSetOptionValueCHR(iSERVER_NAME, iSTR_NONE); + iSetOptionValueCHR(iSERVER_NAME, (lang() == RUSSIAN ? "Њ®п ЇҐаў п ЁЈа !" : "My first game!")); iSetOptionValueCHR(iPROXY_SERVER, "192.1.1.1"); iSetOptionValueCHR(iPROXY_PORT, "1080"); iSetOptionValueCHR(iSERVER_PORT, "2197"); @@ -1508,6 +1508,8 @@ void aciSwapMatrices(void) put_map(iScreenOffs,0,I_RES_X,I_RES_Y); aScrDisp -> curMatrix -> redraw(); + + #ifdef _ACI_NO_SHOP_ANIMATION_ XGR_Flush(0,0,XGR_MAXX,XGR_MAXY); #else @@ -1618,6 +1620,8 @@ void aciCancelMatrix(void) if(aScrDisp -> curMatrix) aScrDisp -> curMatrix -> redraw(); + + #ifdef _ACI_NO_SHOP_ANIMATION_ XGR_Flush(0,0,XGR_MAXX,XGR_MAXY); #else @@ -1710,6 +1714,8 @@ void aciShowScMatrix(void) aScrDisp -> secondMatrix -> redraw(); + + #ifdef _ACI_NO_SHOP_ANIMATION_ XGR_Flush(0,0,XGR_MAXX,XGR_MAXY); #else @@ -2319,7 +2325,7 @@ void iHandleExtEvent(int code,int data) iServersListDown(); break; case iEXT_SAVE_GAME: - if(actIntLog && !iPause && !NetworkON){ + if(actIntLog && !iPause){ if(!(aScrDisp -> flags & AS_INV_MOVE_ITEM)){ iPause = 1; acsScreenID = aScrDisp -> curLocData -> SaveScreenID; diff --git a/src/iscreen/iscreen.cpp b/src/iscreen/iscreen.cpp index ab2b73df..0f3dcb04 100644 --- a/src/iscreen/iscreen.cpp +++ b/src/iscreen/iscreen.cpp @@ -4238,4 +4238,3 @@ void iScreenDispatcher::end_event(void) ActiveEv = NULL; } } - diff --git a/src/iscreen/iscreen_options.h b/src/iscreen/iscreen_options.h index 23483510..82276829 100644 --- a/src/iscreen/iscreen_options.h +++ b/src/iscreen/iscreen_options.h @@ -75,7 +75,9 @@ enum iScreenOptionID iFULLSCREEN, // 45 iAUTO_ACCELERATION, // 46 - + + iCYCLE_DOBA, // 47 + iMAX_OPTION_ID }; diff --git a/src/network.cpp b/src/network.cpp index 259d40c2..cbd8a16f 100644 --- a/src/network.cpp +++ b/src/network.cpp @@ -15,6 +15,19 @@ #endif #include "network.h" +/***************************************************************** + M4D Init +*****************************************************************/ +#include +#include + +bool isRollcall = false; +std::vector rollcallNicknames; +int rollcall_players; + +/***************************************************************** + Vangers Init +*****************************************************************/ extern int MP_GAME; extern XStream fout; extern int frame; @@ -182,7 +195,17 @@ ServerFindChain::ServerFindChain(int IP,int port,char* domain_name,int game_ID,c list = 0; XBuffer str_buf; if(!game_ID) { - if (lang() == RUSSIAN) { + if (RND(100) == 99) { + str_buf < "Ќ ¦Ё¬ о ­  ­®ў п ЁЈа ,   ®­  ­Ґ ЁЈа Ґв "; + } + else if (RND(10) == 1) { + if (lang() == RUSSIAN) { + str_buf < "‘в а п ЁЈа  ­  "; + } else { + str_buf < "Old Game on "; + } + } + else if (lang() == RUSSIAN) { //CP866 Новая РёРіСЂР° РЅР° const unsigned char new_game_on[] = {0x8D, 0xAE, 0xA2, 0xA0, 0xEF, 0x20, 0xA8, 0xA3, 0xE0, 0xA0, 0x20, 0xAD, 0xA0, 0x20, 0x00}; str_buf < (const char *)new_game_on; @@ -192,6 +215,9 @@ ServerFindChain::ServerFindChain(int IP,int port,char* domain_name,int game_ID,c } if(!game_name) if(domain_name) + if (RND(100) == 98) { + str_buf < domain_name < " ­Ґ а Ў®в Ґв"; + } else str_buf < domain_name; else str_buf <= (IP & 0xff) < "." <= ((IP >> 8) & 0xff) < "." <= ((IP >> 16) & 0xff) < "." <= ((IP >> 24) & 0xff); @@ -1314,16 +1340,75 @@ void PlayersList::parsing_total_body_query() *******************************************************************************/ MessageElement::MessageElement(const char* player_name, char* msg,int col) { - message = new char[strlen(player_name) + strlen(msg) + 3]; - strcpy(message,player_name); + char *name, *actual_msg; + int actual_col; + + const char bot_tag[6] = "[bot]"; + if (strncmp(msg, bot_tag, 5)==0) { + name = (char*)"$"; + actual_msg = msg + 5; + actual_col = 1; + } + + else if (strcmp(msg, "/s")==0) { + name = (char*)"$"; + actual_msg = (char*)"> > > ‘’Ђђ’! > > >"; + actual_col = 1; + } + else if (strcmp(msg, "/z")==0 && !isRollcall) { + name = (char*)"$"; + actual_msg = (char*)"> > > ЏҐаҐЄ«ЁзЄ ! > > >"; + actual_col = 1; + + isRollcall = true; + rollcallNicknames.clear(); + + rollcall_players = players_list.size(); + } + else if ((strcmp(msg, "/rcancel")==0 || strcmp(msg, "/zc")==0) && isRollcall) { + name = (char*)"$"; + actual_msg = (char*)"> > > ЏҐаҐЄ«ЁзЄ  ®в¬Ґ­Ґ­ ! > > >"; + actual_col = 1; + + isRollcall = false; + rollcallNicknames.clear(); + } + else if ((strcmp(msg, "п")==0 || strcmp(msg, "z")==0 || strcmp(msg, "џ")==0 || strcmp(msg, "Z")==0) && isRollcall) { + name = (char*)player_name; + actual_msg = msg; + actual_col = 5; + + if (std::find(rollcallNicknames.begin(), rollcallNicknames.end(), player_name) == rollcallNicknames.end()) { + rollcallNicknames.push_back((char*)player_name); + } + + if (rollcallNicknames.size() == rollcall_players) { + isRollcall = false; + rollcallNicknames.clear(); + message_dispatcher.send(actual_msg, MESSAGE_FOR_PLAYER, 0, actual_col); + + name = (char*)"$"; + actual_msg = (char*)"> > > ‘’Ђђ’! > > >"; + actual_col = 1; + + } + } + else { + name = (char*)player_name; + actual_msg = msg; + actual_col = col; + } + + message = new char[strlen(name) + strlen(actual_msg) + 3]; + strcpy(message,name); strcat(message,": "); - strcat(message,msg); - color = col; + strcat(message,actual_msg); + color = actual_col; //zmod time = SDL_GetTicks(); } -void MessageDispatcher::send(char* message,int mode,int parameter) +void MessageDispatcher::send(char* message,int mode,int parameter,int color) { unsigned int cors; switch(mode){ @@ -1342,7 +1427,11 @@ void MessageDispatcher::send(char* message,int mode,int parameter) events_out.end_body(); events_out.send(1); - MessageElement* p = new MessageElement(CurPlayerName, message, my_player_body.color); + if (color == -1) { + color = my_player_body.color; + } + MessageElement* p = new MessageElement(CurPlayerName, message, color); + AddElement(p); if(ListSize > max_number_of_messages){ RemoveElement(p = first()); diff --git a/src/network.h b/src/network.h index 142d7b10..5a8dd55e 100644 --- a/src/network.h +++ b/src/network.h @@ -7,6 +7,7 @@ #define DEFAULT_SERVER_PORT 2197 + extern double zMod_cycle; extern double zMod_flood_level_delta; @@ -118,9 +119,11 @@ struct MessageDispatcher : XList { MessageDispatcher(int max_num_messages = 15) : XList() { max_number_of_messages = max_num_messages; } MessageElement* first(){ return (MessageElement*)fPtr; } MessageElement* last(){ return (MessageElement*)lPtr; } - void send(char* message,int mode,int parameter); + void send(char* message,int mode,int parameter,int color=-1); void receive(); }; + + const char bot_tag[6] = "[bot]"; /******************************************************************************* Top List diff --git a/src/road.cpp b/src/road.cpp index 8e0cb137..defd5315 100644 --- a/src/road.cpp +++ b/src/road.cpp @@ -373,21 +373,16 @@ void showModal(char* fname, float reelW, float reelH, float screenW, float scree int xtInitApplication(void) { - XGraphWndID = "VANGERS"; + XGraphWndID = "VANGERS: MORE FOR DEATH"; char *tmp; #ifdef _DEMO_ std::cout<<"\""< - +#include "../iscreen/iscreen_options.h" +#include "../iscreen/iscreen.h" #ifdef _ROAD_ //#define FILEMAPPING @@ -62,6 +63,7 @@ extern const char* mapFName; extern int NetworkON; extern int zGameBirthTime; extern int CurrentWorld; +extern iScreenOption** iScrOpt; /* --------------------------- PROTOTYPE SECTION --------------------------- */ void restore(void); @@ -620,6 +622,9 @@ void vrtMap::analyzeINI(const char* name) const char* secStorage = "Storage"; const char* secRender = "Rendering Parameters"; const char* secPalette = "Dynamic Palette"; + const char* secPaletteDoba = "Doba Cycle Dynamic Palette"; + const char* secPaletteDobaOld = "Doba Cycle (Old) Dynamic Palette"; + const char* secPaletteDobaEP = "Doba (eleepod bath) Cycle Dynamic Palette"; const char* secCreation = "Creation Parameters"; @@ -670,43 +675,62 @@ void vrtMap::analyzeINI(const char* name) for(i = 0;i < TERRAIN_MAX;i++) buf >= ENDCOLOR[i]; } + + std::string palette_name = "Dynamic Palette"; + #ifndef _SURMAP_ + if ((iGetOptionValue(iCYCLE_DOBA)) && (strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(), "eleepod bath")==0 || strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(), "Ў ­п н«ЁЇ®¤ ")==0)) { + palette_name = "Doba (eleepod bath) Cycle " + palette_name; + } + else if (iGetOptionValue(iCYCLE_DOBA)==0) { + palette_name = "Doba Cycle " + palette_name; + } + else if (iGetOptionValue(iCYCLE_DOBA)==1) { + palette_name; + } + else if (iGetOptionValue(iCYCLE_DOBA)==2) { + palette_name = "Doba Cycle (Old) " + palette_name; + } + else if (iGetOptionValue(iCYCLE_DOBA)==3) { + palette_name = " " + palette_name; + } + #endif pal_iter_init(); - PAL_MAX = iniparser_getint(dict_name,"Dynamic Palette:Terrain Number", 0); - PAL_WAVE_TERRAIN = atoi(iniparser_getstring(dict_name,"Dynamic Palette:Wave Terrain", NULL)); + PAL_MAX = iniparser_getint(dict_name,(palette_name + ":Terrain Number").c_str(), 0); + PAL_WAVE_TERRAIN = atoi(iniparser_getstring(dict_name,(palette_name + ":Wave Terrain").c_str(), NULL)); if(PAL_MAX > 0){ { - char* pp = iniparser_getstring(dict_name,"Dynamic Palette:Terrains", NULL); + char* pp = iniparser_getstring(dict_name,(palette_name + ":Terrains").c_str(), NULL); XBuffer b(pp,128); for(i = 0;i < PAL_MAX;i++) b >= PAL_TERRAIN[i]; } { - char* pp = iniparser_getstring(dict_name,"Dynamic Palette:Speeds", NULL); + char* pp = iniparser_getstring(dict_name,(palette_name + ":Speeds").c_str(), NULL); XBuffer b(pp,128); for(i = 0;i < PAL_MAX;i++) b >= PAL_SPEED[i]; } { - char* pp = iniparser_getstring(dict_name,"Dynamic Palette:Amplitudes", NULL); + char* pp = iniparser_getstring(dict_name,(palette_name + ":Amplitudes").c_str(), NULL); XBuffer b(pp,128); for(i = 0;i < PAL_MAX;i++) b >= PAL_AMPL[i]; } { - char* pp = iniparser_getstring(dict_name,"Dynamic Palette:Red", NULL); + char* pp = iniparser_getstring(dict_name,(palette_name + ":Red").c_str(), NULL); XBuffer b(pp,128); for(i = 0;i < PAL_MAX;i++) b >= PAL_RED[i]; } { - char* pp = iniparser_getstring(dict_name,"Dynamic Palette:Green", NULL); + char* pp = iniparser_getstring(dict_name,(palette_name + ":Green").c_str(), NULL); XBuffer b(pp,128); for(i = 0;i < PAL_MAX;i++) b >= PAL_GREEN[i]; } { - char* pp = iniparser_getstring(dict_name,"Dynamic Palette:Blue", NULL); + char* pp = iniparser_getstring(dict_name,(palette_name + ":Blue").c_str(), NULL); XBuffer b(pp,128); for(i = 0;i < PAL_MAX;i++) b >= PAL_BLUE[i]; diff --git a/src/units/items.cpp b/src/units/items.cpp index 4f25235f..5361c0f8 100644 --- a/src/units/items.cpp +++ b/src/units/items.cpp @@ -40,6 +40,11 @@ #include "../sound/hsound.h" #include "magnum.h" +#include "../iscreen/iscreen_options.h" +#include "../iscreen/iscreen.h" + + +extern iScreenOption** iScrOpt; extern int RAM16; extern iGameMap* curGMap; @@ -3658,29 +3663,484 @@ void GloryPlace::Init(int ind) return; } - //khoxrun - if (z_my_server_data.mod_id == Z_MODS_KHOXRUN_ID) { - World = WORLD_KHOX; + //travel + if (NetworkON && my_server_data.GameType == PASSEMBLOSS && (strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(), "travel") == 0 || strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(), "ЇаЁЄ«о祭ЁҐ")==0)) { + World = WORLD_FOSTRAL; + switch (ind) { + case 0: R_curr.x = 257; R_curr.y = 1227; break; + case 1: R_curr.x = 1640; R_curr.y = 9128; World = WORLD_GLORX; break; + case 2: R_curr.x = 1579; R_curr.y = 2233; World = WORLD_GLORX; break; + case 3: R_curr.x = 813; R_curr.y =14586; World = WORLD_GLORX; break; + case 4: R_curr.x = 1889; R_curr.y = 1504; World = WORLD_NECROSS; break; + case 5: R_curr.x = 1706; R_curr.y =15548; World = WORLD_NECROSS; break; + case 6: R_curr.x = 1312; R_curr.y =15227; World = WORLD_NECROSS; break; + case 7: R_curr.x = 1653; R_curr.y = 802; World = WORLD_XPLO; break; + case 8: R_curr.x = 245; R_curr.y = 330; World = WORLD_KHOX; break; + case 9: R_curr.x = 1873; R_curr.y = 1062; World = WORLD_WEEXOW; break; + case 10: R_curr.x = 659; R_curr.y = 1685; World = WORLD_BOOZEENA; break; + case 11: R_curr.x = 1693; R_curr.y = 391; World = WORLD_ARKONOY; break; + case 12: R_curr.x = 1653; R_curr.y = 802; World = WORLD_XPLO; break; + case 13: R_curr.x = 283; R_curr.y = 1186; World = WORLD_THREALL; break; + case 14: R_curr.x = 2008; R_curr.y =15592; break; + case 15: R_curr.x = 1469; R_curr.y = 7886; break; + case 16: R_curr.x = 382; R_curr.y = 7333; break; + } + return; + } + + //necrally + if (NetworkON && my_server_data.GameType == PASSEMBLOSS && (strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(), "necrally") == 0 || strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(), "­ҐЄа ««Ё")==0)) { + World = WORLD_NECROSS; + switch (ind) { + case 0: R_curr.x = 316; R_curr.y = 840; break; + case 1: R_curr.x = 632; R_curr.y = 1161; break; + case 2: R_curr.x = 143; R_curr.y = 1467; break; + case 3: R_curr.x = 837; R_curr.y = 1648; break; + case 4: R_curr.x = 971; R_curr.y = 2015; break; + case 5: R_curr.x = 77; R_curr.y = 2330; break; + case 6: R_curr.x = 821; R_curr.y = 2519; break; + case 7: R_curr.x = 824; R_curr.y = 2984; break; + case 8: R_curr.x = 1578; R_curr.y = 3060; break; + case 9: R_curr.x = 1604; R_curr.y = 3517; break; + case 10: R_curr.x = 342; R_curr.y = 3696; break; + case 11: R_curr.x = 70; R_curr.y = 3973; break; + case 12: R_curr.x = 1429; R_curr.y = 4246; break; + case 13: R_curr.x = 1220; R_curr.y = 4834; break; + case 14: R_curr.x = 2016; R_curr.y = 5078; break; + case 15: R_curr.x = 141; R_curr.y = 5545; break; + case 16: R_curr.x = 1721; R_curr.y = 5580; break; + case 17: R_curr.x = 1715; R_curr.y = 6127; break; + case 18: R_curr.x = 159; R_curr.y = 6171; break; + case 19: R_curr.x = 477; R_curr.y = 6612; break; + case 20: R_curr.x = 1847; R_curr.y = 6719; break; + case 21: R_curr.x = 1153; R_curr.y = 6944; break; + case 22: R_curr.x = 755; R_curr.y = 7181; break; + case 23: R_curr.x = 1441; R_curr.y = 7406; break; + case 24: R_curr.x = 1773; R_curr.y = 7910; break; + case 25: R_curr.x = 1145; R_curr.y = 7972; break; + case 26: R_curr.x = 1697; R_curr.y = 8493; break; + case 27: R_curr.x = 1186; R_curr.y = 8954; break; + case 28: R_curr.x = 872; R_curr.y = 9335; break; + case 29: R_curr.x = 1046; R_curr.y = 9476; break; + case 30: R_curr.x = 1935; R_curr.y = 9611; break; + case 31: R_curr.x = 1613; R_curr.y =10023; break; + case 32: R_curr.x = 902; R_curr.y =10084; break; + case 33: R_curr.x = 410; R_curr.y =10147; break; + case 34: R_curr.x = 134; R_curr.y =10444; break; + case 35: R_curr.x = 717; R_curr.y =10693; break; + case 36: R_curr.x = 564; R_curr.y =11244; break; + case 37: R_curr.x = 62; R_curr.y =11626; break; + case 38: R_curr.x = 841; R_curr.y =11843; break; + case 39: R_curr.x = 1260; R_curr.y =12078; break; + case 40: R_curr.x = 493; R_curr.y =12812; break; + case 41: R_curr.x = 684; R_curr.y =12907; break; + case 42: R_curr.x = 1891; R_curr.y =13208; break; + case 43: R_curr.x = 1463; R_curr.y =13513; break; + case 44: R_curr.x = 923; R_curr.y =13664; break; + case 45: R_curr.x = 424; R_curr.y =14038; break; + case 46: R_curr.x = 1062; R_curr.y =14220; break; + case 47: R_curr.x = 1162; R_curr.y =14701; break; + case 48: R_curr.x = 40; R_curr.y =14904; break; + case 49: R_curr.x = 249; R_curr.y =15421; break; + case 50: R_curr.x = 991; R_curr.y =15737; break; + } + return; + } + + //shutle fostral + if (NetworkON && my_server_data.GameType == PASSEMBLOSS && (strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(), "shutle fostral") == 0 || strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(), "祫­®з­л© д®бва «")==0)) { + World = WORLD_FOSTRAL; + switch (ind % 44) { + case 0: R_curr.x = 180; R_curr.y = 1616; break; + case 1: R_curr.x = 550; R_curr.y = 2260; break; + case 2: R_curr.x = 55; R_curr.y = 3235; break; + case 3: R_curr.x = 610; R_curr.y = 3835; break; + case 4: R_curr.x = 1370; R_curr.y = 4475; break; + case 5: R_curr.x = 1045; R_curr.y = 5420; break; + case 6: R_curr.x = 530; R_curr.y = 6085; break; + case 7: R_curr.x = 855; R_curr.y = 6363; break; + case 8: R_curr.x = 827; R_curr.y = 7505; break; + case 9: R_curr.x = 664; R_curr.y = 8486; break; + case 10: R_curr.x = 566; R_curr.y = 9071; break; + case 11: R_curr.x = 1590; R_curr.y = 9577; break; + case 12: R_curr.x = 1104; R_curr.y = 9721; break; + case 13: R_curr.x = 534; R_curr.y =10176; break; + case 14: R_curr.x = 1749; R_curr.y =10593; break; + case 15: R_curr.x = 843; R_curr.y =10808; break; + case 16: R_curr.x = 223; R_curr.y =11736; break; + case 17: R_curr.x = 1760; R_curr.y =12515; break; + case 18: R_curr.x = 858; R_curr.y =12743; break; + case 19: R_curr.x = 50; R_curr.y =13348; break; + case 20: R_curr.x = 1447; R_curr.y =13779; break; + case 21: R_curr.x = 855; R_curr.y =14820; break; + case 22: R_curr.x = 1469; R_curr.y =14808; break; + case 23: R_curr.x = 90; R_curr.y =13949; break; + case 24: R_curr.x = 435; R_curr.y =13513; break; + case 25: R_curr.x = 1740; R_curr.y =12796; break; + case 26: R_curr.x = 1713; R_curr.y =12250; break; + case 27: R_curr.x = 1404; R_curr.y =11835; break; + case 28: R_curr.x = 1682; R_curr.y =11093; break; + case 29: R_curr.x = 582; R_curr.y =10517; break; + case 30: R_curr.x = 1010; R_curr.y =10266; break; + case 31: R_curr.x = 1588; R_curr.y = 9955; break; + case 32: R_curr.x = 192; R_curr.y = 9136; break; + case 33: R_curr.x = 1200; R_curr.y = 7635; break; + case 34: R_curr.x = 215; R_curr.y = 7010; break; + case 35: R_curr.x = 1051; R_curr.y = 6428; break; + case 36: R_curr.x = 1962; R_curr.y = 6021; break; + case 37: R_curr.x = 522; R_curr.y = 5474; break; + case 38: R_curr.x = 549; R_curr.y = 4610; break; + case 39: R_curr.x = 379; R_curr.y = 3898; break; + case 40: R_curr.x = 263; R_curr.y = 3277; break; + case 41: R_curr.x = 1675; R_curr.y = 2890; break; + case 42: R_curr.x = 1550; R_curr.y = 2572; break; + case 43: R_curr.x = 1960; R_curr.y = 1505; break; + } + return; + } + + //traincross + if (NetworkON && my_server_data.GameType == PASSEMBLOSS && strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(), "traincross") == 0) { + if(ind == 0) { + R_curr.x = 1433; R_curr.y = 4036; World = WORLD_NECROSS; + } else { + World = WORLD_NECROSS; + R_curr.y = 300 + GloryRnd.aiRnd(WorldTable[World]->y_size - 600); + R_curr.y = GloryRnd.aiRnd(WorldTable[World]->y_size); + } + return; + } + + //lens-team + if (NetworkON && my_server_data.GameType == PASSEMBLOSS && (strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(), "lens-team") == 0 || strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(), "«Ё­§  Є®¬ ­¤­ п")==0)) { + World = WORLD_FOSTRAL; + if(ind == 0) { + R_curr.x = 488; R_curr.y = 2487; + } else { + R_curr.y = 300 + GloryRnd.aiRnd(WorldTable[World]->y_size - 600); + R_curr.y = GloryRnd.aiRnd(WorldTable[World]->y_size); + } + return; + } + + //lens-one + if (NetworkON && my_server_data.GameType == PASSEMBLOSS && (strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(), "lens-one")==0 || strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(), "«Ё­§  ®¤Ё­®з­ п")==0)) { + World = WORLD_FOSTRAL; + switch (ind) { + case 0: R_curr.x = 488; R_curr.y = 2487; break; + default: + switch(RND(21)) { + case 0: R_curr.x = 1463; R_curr.y = 1103; break; + case 1: R_curr.x = 214; R_curr.y = 50; break; + case 2: R_curr.x = 1261; R_curr.y = 2256; break; + case 3: R_curr.x = 1058; R_curr.y = 3429; break; + case 4: R_curr.x = 110; R_curr.y = 4789; break; + case 5: R_curr.x = 1969; R_curr.y = 5352; break; + case 6: R_curr.x = 1603; R_curr.y = 7146; break; + case 7: R_curr.x = 289; R_curr.y = 6366; break; + case 8: R_curr.x = 452; R_curr.y = 7919; break; + case 9: R_curr.x = 1850; R_curr.y = 9782; break; + case 10: R_curr.x = 21; R_curr.y =10033; break; + case 11: R_curr.x = 2002; R_curr.y =11145; break; + case 12: R_curr.x = 676; R_curr.y =12108; break; + case 13: R_curr.x = 1020; R_curr.y =11892; break; + case 14: R_curr.x = 1498; R_curr.y =13317; break; + case 15: R_curr.x = 1505; R_curr.y =13998; break; + case 16: R_curr.x = 411; R_curr.y =15062; break; + case 17: R_curr.x = 1505; R_curr.y =15120; break; + case 18: R_curr.x = 958; R_curr.y =15610; break; + case 19: R_curr.x = 880; R_curr.y =16325; break; + case 20: R_curr.x = 96; R_curr.y =16201; break; + } + } + return; + } + + //xivepass + if (NetworkON && my_server_data.GameType == PASSEMBLOSS && (strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(), "xivepass")==0 || strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(), "ЄбЁўЁЇ бб")==0)) { + World = WORLD_THREALL; + switch (ind) { + case 0: R_curr.x = 1558; R_curr.y = 8299; World = WORLD_NECROSS; break; + case 1: R_curr.x = 1213; R_curr.y = 46; World = WORLD_XPLO; break; + case 2: R_curr.x = 1511; R_curr.y = 835; break; + case 3: R_curr.x = 228; R_curr.y = 1374; break; + case 4: R_curr.x = 1821; R_curr.y = 1882; World = WORLD_BOOZEENA; break; + case 5: R_curr.x = 1280; R_curr.y = 1559; World = WORLD_BOOZEENA; break; + case 6: R_curr.x = 177; R_curr.y = 1995; break; + case 7: R_curr.x = 1517; R_curr.y = 3339; World = WORLD_XPLO; break; + } + return; + } + + //razminka plus + if (NetworkON && my_server_data.GameType == PASSEMBLOSS && strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(), "razminka plus")==0) { + World = WORLD_GLORX; + switch (ind) { + case 0: R_curr.x = 625; R_curr.y = 4386; break; + case 1: R_curr.x = 907; R_curr.y = 2039; World = WORLD_KHOX; break; + case 2: R_curr.x = 819; R_curr.y = 3573; World = WORLD_XPLO; break; + case 3: R_curr.x = 1433; R_curr.y = 4036; World = WORLD_NECROSS; break; + case 4: R_curr.x = 709; R_curr.y = 7249; World = WORLD_FOSTRAL; break; + case 5: R_curr.x = 657; R_curr.y = 1049; World = WORLD_WEEXOW; break; + case 6: R_curr.x = 1875; R_curr.y = 1055; World = WORLD_WEEXOW; break; + case 7: R_curr.x = 1919; R_curr.y = 1063; World = WORLD_KHOX; break; + case 8: R_curr.x = 207; R_curr.y =14676; World = WORLD_NECROSS; break; + case 9: R_curr.x = 1915; R_curr.y = 1510; World = WORLD_BOOZEENA; break; + } + return; + } + + //escape + if (NetworkON && my_server_data.GameType == PASSEMBLOSS && (strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(), "escape")==0 || strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(), "Ї®ЎҐЈ")==0)) { + World = WORLD_GLORX; + switch (ind) { + case 0: R_curr.x = 741; R_curr.y = 515; break; + } + return; + } + + //vozvrat + if (NetworkON && my_server_data.GameType == PASSEMBLOSS && (strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(), "vozvrat")==0 || strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(), "ў®§ўа в")==0)) { + World = WORLD_FOSTRAL; + switch (ind) { + case 0: R_curr.x = 382; R_curr.y = 7333; break; + } + return; + } + + //ishod + if (NetworkON && my_server_data.GameType == PASSEMBLOSS && strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(), "ishod")==0) { + World = WORLD_NECROSS; + switch (ind) { + case 0: R_curr.x = 1030; R_curr.y =16700; break; + } + return; + } + + //satinan + if (NetworkON && my_server_data.GameType == PASSEMBLOSS && (strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(), "satinan")==0 || strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(), "б вЁ­ ­")==0)) { + World = WORLD_XPLO; + if (ind == 0) { R_curr.x = 1650; R_curr.y = 815; World = WORLD_GLORX; } + else { + switch (ind % 2) { + case 1: + switch(RND(4)) { + case 0: R_curr.x = 1650; R_curr.y = 310; break; + case 1: R_curr.x = 170; R_curr.y = 965; break; + case 2: R_curr.x = 1230; R_curr.y = 1175; break; + case 3: R_curr.x = 1018; R_curr.y = 606; break; + } + break; + case 0: R_curr.x = 1650; R_curr.y = 815; break; + } + } + return; + } + + //triacxlon + if (NetworkON && my_server_data.GameType == PASSEMBLOSS && (strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(), "triacxlon")==0 || strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(), "ваЁ же«®­")==0)) { + World = WORLD_THREALL; switch (ind) { - case 0: R_curr.x = 1358; R_curr.y = 7036; World = WORLD_GLORX; break; // РќР• МЕНЯТЬ !!! Связано СЃ багом вылета клиента РїСЂРё смерти РІ пассе. если чек РЅРµ РЅР° трех мирах. - case 1: R_curr.x = 390; R_curr.y = 1266; break; - case 2: R_curr.x = 1858; R_curr.y = 1849; break; - case 3: R_curr.x = 1869; R_curr.y = 232; break; - case 4: R_curr.x = 696; R_curr.y = 86; break; - case 5: R_curr.x = 1145; R_curr.y = 1210; break; - case 6: R_curr.x = 1987; R_curr.y = 1043; break; - case 7: R_curr.x = 2021; R_curr.y = 8; break; - case 8: R_curr.x = 150; R_curr.y = 378; break; - case 9: R_curr.x = 910; R_curr.y = 2014; break; - case 10: R_curr.x = 1232; R_curr.y = 717; break; - case 11: R_curr.x = 307; R_curr.y = 385; break; + case 0: R_curr.x = 1358; R_curr.y = 7036; World = WORLD_GLORX; break; + case 1: R_curr.x = 390; R_curr.y = 1266; World = WORLD_KHOX; break; + case 2: R_curr.x = 1858; R_curr.y = 1849; World = WORLD_KHOX; break; + case 3: R_curr.x = 1869; R_curr.y = 232; World = WORLD_KHOX; break; + case 4: R_curr.x = 696; R_curr.y = 86; World = WORLD_KHOX; break; + case 5: R_curr.x = 1145; R_curr.y = 1210; World = WORLD_KHOX; break; + case 6: R_curr.x = 1987; R_curr.y = 1043; World = WORLD_KHOX; break; + case 7: R_curr.x = 2021; R_curr.y = 8; World = WORLD_KHOX; break; + case 8: R_curr.x = 150; R_curr.y = 378; World = WORLD_KHOX; break; + case 9: R_curr.x = 910; R_curr.y = 2014; World = WORLD_KHOX; break; + case 10: R_curr.x = 1232; R_curr.y = 717; World = WORLD_KHOX; break; + case 11: R_curr.x = 307; R_curr.y = 385; World = WORLD_KHOX; break; + case 12: R_curr.x = 1341; R_curr.y = 5971; World = WORLD_GLORX; break; + case 13: R_curr.x = 486; R_curr.y = 5648; World = WORLD_GLORX; break; + case 14: R_curr.x = 1607; R_curr.y = 6315; World = WORLD_GLORX; break; + case 15: R_curr.x = 80; R_curr.y = 7281; World = WORLD_GLORX; break; + case 16: R_curr.x = 1341; R_curr.y = 5971; World = WORLD_GLORX; break; + case 17: R_curr.x = 486; R_curr.y = 5648; World = WORLD_GLORX; break; + case 18: R_curr.x = 1607; R_curr.y = 6315; World = WORLD_GLORX; break; + case 19: R_curr.x = 80; R_curr.y = 7281; World = WORLD_GLORX; break; + case 20: R_curr.x = 625; R_curr.y = 1293; World = WORLD_BOOZEENA; break; + case 21: R_curr.x =1048; R_curr.y = 1632; World = WORLD_BOOZEENA; break; + case 22: R_curr.x =1042; R_curr.y = 1799; World = WORLD_BOOZEENA; break; + case 23: R_curr.x = 625; R_curr.y = 1293; World = WORLD_BOOZEENA; break; + case 24: R_curr.x = 785; R_curr.y = 30; World = WORLD_BOOZEENA; break; + case 25: R_curr.x = 625; R_curr.y = 1293; World = WORLD_BOOZEENA; break; + case 26: R_curr.x = 287; R_curr.y = 1870; World = WORLD_BOOZEENA; break; + case 27: R_curr.x = 305; R_curr.y = 1491; World = WORLD_BOOZEENA; break; + case 28: R_curr.x = 287; R_curr.y = 1870; World = WORLD_BOOZEENA; break; + case 29: R_curr.x = 318; R_curr.y = 4; World = WORLD_ARKONOY; break; + case 30: R_curr.x = 411; R_curr.y = 645; World = WORLD_ARKONOY; break; + case 31: R_curr.x = 1525; R_curr.y = 1494; World = WORLD_ARKONOY; break; + case 32: R_curr.x = 1860; R_curr.y = 0; break; + case 33: R_curr.x = 1648; R_curr.y = 1510; break; + case 34: R_curr.x = 1232; R_curr.y = 139; break; + case 35: R_curr.x = 1482; R_curr.y = 1637; break; + } + return; + } + + //bullet run + if (NetworkON && my_server_data.GameType == PASSEMBLOSS && (strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(), "bullet run")==0 || strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(), "Ї® Ў®«®в ¬!")==0)) { + World = WORLD_NECROSS; + switch(ind) { + case 0 ... 2: + switch(RND(3)) { + case 0: R_curr.x = 448; R_curr.y = 2823; break; + case 1: R_curr.x = 750; R_curr.y = 2670; break; + case 2: R_curr.x = 2001; R_curr.y = 2795; break; + } + break; + case 3 ... 8: + switch(RND(6)) { + case 0: R_curr.x = 1641; R_curr.y = 3295; break; + case 1: R_curr.x = 45; R_curr.y = 3201; break; + case 2: R_curr.x = 217; R_curr.y = 3417; break; + case 3: R_curr.x = 824; R_curr.y = 3423; break; + case 4: R_curr.x = 578; R_curr.y = 3179; break; + case 5: R_curr.x = 989; R_curr.y = 3243; break; + } + break; + case 9 ... 15: + switch(RND(7)) { + case 0: R_curr.x = 1919; R_curr.y = 5237; break; + case 1: R_curr.x = 1733; R_curr.y = 5150; break; + case 2: R_curr.x = 1367; R_curr.y = 5240; break; + case 3: R_curr.x = 1261; R_curr.y = 5436; break; + case 4: R_curr.x = 805; R_curr.y = 5278; break; + case 5: R_curr.x = 630; R_curr.y = 5497; break; + case 6: R_curr.x = 442; R_curr.y = 5730; break; + } + break; + case 16 ... 20: + switch(RND(5)) { + case 0: R_curr.x = 574; R_curr.y = 7697; break; + case 1: R_curr.x = 430; R_curr.y = 7487; break; + case 2: R_curr.x = 830; R_curr.y = 7892; break; + case 3: R_curr.x = 1179; R_curr.y = 7730; break; + case 4: R_curr.x = 2002; R_curr.y = 7635; break; + } + break; + case 21 ... 23: + switch(RND(3)) { + case 0: R_curr.x = 865; R_curr.y =10338; break; + case 1: R_curr.x = 642; R_curr.y =10516; break; + case 2: R_curr.x = 474; R_curr.y =10318; break; + } + break; + case 24 ... 27: + switch(RND(4)) { + case 0: R_curr.x = 7; R_curr.y =10788; break; + case 1: R_curr.x = 1895; R_curr.y =10938; break; + case 2: R_curr.x = 33; R_curr.y =11096; break; + case 3: R_curr.x = 486; R_curr.y =11077; break; + } + break; + case 28 ... 32: + switch(RND(5)) { + case 0: R_curr.x = 1899; R_curr.y =12002; break; + case 1: R_curr.x = 2009; R_curr.y =12350; break; + case 2: R_curr.x = 248; R_curr.y =12055; break; + case 3: R_curr.x = 583; R_curr.y =12088; break; + case 4: R_curr.x = 1001; R_curr.y =12134; break; + } + break; + case 33: R_curr.x = 1461; R_curr.y =12707; break; } return; } + + //among vangers + if (NetworkON && my_server_data.GameType == PASSEMBLOSS && strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(), "among vangers")==0) { + switch (ind) { + case 0: R_curr.x = 63; R_curr.y = 7466; World = WORLD_GLORX; break; + default: + switch(RND(11)) { + case 0: R_curr.x = 574; R_curr.y = 909; World = WORLD_FOSTRAL; break; + case 1: R_curr.x = 1854; R_curr.y = 4680; World = WORLD_FOSTRAL; break; + case 2: R_curr.x = 106; R_curr.y = 8745; World = WORLD_FOSTRAL; break; + case 3: R_curr.x = 1028; R_curr.y = 7161; World = WORLD_FOSTRAL; break; + case 4: R_curr.x = 1176; R_curr.y = 8595; World = WORLD_GLORX; break; + case 5: R_curr.x = 51; R_curr.y =11678; World = WORLD_GLORX; break; + case 6: R_curr.x = 82; R_curr.y =12588; World = WORLD_GLORX; break; + case 7: R_curr.x = 2045; R_curr.y = 635; World = WORLD_NECROSS; break; + case 8: R_curr.x = 1411; R_curr.y =15242; World = WORLD_NECROSS; break; + case 9: R_curr.x = 1653; R_curr.y = 802; World = WORLD_XPLO; break; + case 10: R_curr.x = 282; R_curr.y = 1189; World = WORLD_THREALL; break; + } + } + return; + } + + //eleerection-sim + if (NetworkON && my_server_data.GameType == PASSEMBLOSS && (strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(), "eleerection-sim")==0 || strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(), "н«ЁаҐЄжЁп-бЁ¬")==0)) { + World = WORLD_FOSTRAL; + switch (ind) { + case 0: R_curr.x = 855; R_curr.y =14820; break; + } + return; + } + + //stad3la + if (NetworkON && my_server_data.GameType == PASSEMBLOSS && strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(), "stad3la")==0) { + World = WORLD_GLORX; + switch (ind) { + case 0: R_curr.x = 1223; R_curr.y = 2948; break; + default: + switch (ind % 3) { + case 0: R_curr.x = 1103; R_curr.y = 2480; break; + case 1: R_curr.x = 1451; R_curr.y = 2149; break; + case 2: R_curr.x = 1527; R_curr.y = 2577; break; + } + } + return; + } + + //huntage-sim + if (NetworkON && my_server_data.GameType == PASSEMBLOSS && (strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(), "huntage-sim")==0 || strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(), "е ­в ¦-бЁ¬")==0)) { + if(ind == 0) { + R_curr.x = 150; R_curr.y = 5435; World = WORLD_GLORX; + } else { + World = GloryRnd.aiRnd(WORLD_MAX); + + while (World == WORLD_HMOK) + World = GloryRnd.aiRnd(WORLD_MAX); + + R_curr.x = GloryRnd.aiRnd(WorldTable[World]->x_size); + if(World < MAIN_WORLD_MAX - 1) + R_curr.y = 300 + GloryRnd.aiRnd(WorldTable[World]->y_size - 600); + else + R_curr.y = GloryRnd.aiRnd(WorldTable[World]->y_size); + } + return; + } + + //aveslom + if (NetworkON && my_server_data.GameType == PASSEMBLOSS && strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(), "aveslom")==0) { + if(ind == 0) { + R_curr.x = 228; R_curr.y =15335; World = WORLD_GLORX; + } else { + World = WORLD_THREALL; + switch ((ind - 1) % 10) { + case 0: R_curr.x = 1534; R_curr.y = 591; break; + case 1: R_curr.x = 282; R_curr.y = 1189; break; + case 2: R_curr.x = 1860; R_curr.y = 0; break; + case 3: R_curr.x = 688; R_curr.y = 300; break; + case 4: R_curr.x = 290; R_curr.y = 1788; break; + case 5: R_curr.x = 1648; R_curr.y = 1510; break; + case 6: R_curr.x = 958; R_curr.y = 480; break; + case 7: R_curr.x = 1232; R_curr.y = 139; break; + case 8: R_curr.x = 566; R_curr.y = 692; break; + case 9: R_curr.x = 1482; R_curr.y = 1637; break; + } + } + return; + } //classic if(ind == 0) { - World = GloryRnd.aiRnd(3); // РќР• МЕНЯТЬ !!! Связано СЃ багом вылета клиента РїСЂРё смерти РІ пассе. если чек РЅРµ РЅР° трех мирах. + World = GloryRnd.aiRnd(3); } else { World = GloryRnd.aiRnd(WORLD_MAX); diff --git a/src/units/mechos.cpp b/src/units/mechos.cpp index 2209c0cd..3e60e398 100644 --- a/src/units/mechos.cpp +++ b/src/units/mechos.cpp @@ -1,6 +1,12 @@ #include "../global.h" #include "../lang.h" +#include "../iscreen/iscreen_options.h" +#include "../iscreen/iscreen.h" +#include "../network.h" + +extern iScreenOption** iScrOpt; + #include "../zmod_client.h" //#include "..\win32f.h" @@ -49,6 +55,8 @@ #include "magnum.h" #include "../actint/credits.h" +#include "../actint/actint.h" +extern actIntDispatcher* aScrDisp; #define INSECTOIDS @@ -4369,7 +4377,6 @@ void VangerUnit::InitEnvironment(void) }; }; }; - if(!NetworkON || (Status & SOBJ_ACTIVE)){ ExternalLastSensor = ExternalSensor; ExternalSensor = NULL; @@ -8334,8 +8341,7 @@ void CompasObject::Open(void) p->Data.SensorT = FindSensor(p->Name); break; }; - if(!p->Data.SensorT) - ErrH.Abort("Error in Compas Target Open"); + //if(!p->Data.SensorT) ErrH.Abort("Error in Compas Target Open"); p = p->Next; }; }; @@ -9434,7 +9440,7 @@ void ActionDispatcher::FunctionQuant(void) FunctionThreallDestroyActive = GAME_OVER_EVENT_TIME; break; }; - + if(NetworkON && pfActive == Active){ NetFunctionProtractor &= ~7; if(p_new) NetFunctionProtractor |= 64; @@ -9460,7 +9466,7 @@ void ActionDispatcher::FunctionQuant(void) }; break; case ACI_MECH_MESSIAH_EVENT2: - if(!NetworkON && NewFunction(MECHANIC_BEEB_NATION,MECHANIC_GAME_OVER)) + if(NewFunction(MECHANIC_BEEB_NATION,MECHANIC_GAME_OVER)) XpeditionOFF(GAME_OVER_LUCKY); break; case ACI_MECH_MESSIAH_EVENT3: @@ -13729,7 +13735,113 @@ void NetworkGetStart(char* name,int& x,int& y) int i,j,t; SensorSortedData = new SensorDataType*[SnsTableSize]; StaticSort(SnsTableSize,(StaticObject**)SensorObjectData,(StaticObject**)SensorSortedData); - + + char *game_name = iScrOpt[iSERVER_NAME]->GetValueCHR(); + if (NetworkON && (strcmp(game_name,"satinan")==0 || strcmp(game_name,"б вЁ­ ­")==0) && my_server_data.GameType == 2) { + x = 1650; + y = 815; + return; + } + else if (NetworkON && (strcmp(game_name,"necrally")==0 || strcmp(game_name,"­ҐЄа ««Ё")==0) && my_server_data.GameType == 2) { + x = 1795; + y = 515; + return; + } + else if (NetworkON && (strcmp(game_name,"aibatr")==0 || strcmp(game_name," ЁЎ ва")==0) && my_server_data.GameType == 0) { + x = 485; + y = 1310; + return; + } + else if (NetworkON && strcmp(game_name,"stad3la")==0 && my_server_data.GameType == 2) { + x = 1410; + y = 3255; + return; + } + else if (NetworkON && (strcmp(game_name,"shutle fostral")==0 || strcmp(game_name,"祫­®з­л© д®бва «")==0) && my_server_data.GameType == 2) { + x = 1835; + y = 1365; + return; + } + else if (NetworkON && strcmp(game_name,"speed konoval")==0 && my_server_data.GameType == 0) { + x = 485; + y = 1310; + return; + } + else if (NetworkON && (strcmp(game_name,"lens-one")==0 || strcmp(game_name,"«Ё­§  ®¤Ё­®з­ п")==0) && my_server_data.GameType == 2) { + x = 625; + y = 2275; + return; + } + else if (NetworkON && (strcmp(game_name,"lens-team")==0 || strcmp(game_name,"«Ё­§  Є®¬ ­¤­ п")==0) && my_server_data.GameType == 2) { + x = 625; + y = 2275; + return; + } + else if (NetworkON && (strcmp(game_name,"battle for hmok")==0 || strcmp(game_name,"ЎЁвў  §  嬮Є")==0) && my_server_data.GameType == 0) { + x = 945; + y = 1760; + return; + } + else if (NetworkON && strcmp(game_name,"tankacide-run")==0 && my_server_data.GameType == 2) { + x = 945; + y = 1760; + return; + } + else if (NetworkON && (strcmp(game_name,"eleerection-sim")==0 || strcmp(game_name,"н«ЁаҐЄжЁп-бЁ¬")==0) && my_server_data.GameType == 2) { + x = 1960; + y = 1505; + return; + } + else if (NetworkON && (strcmp(game_name,"mechoxes")==0 || strcmp(game_name,"¬Ґе®ЄбҐб")==0) && my_server_data.GameType == 0) { + x = 1870; + y = 1055; + return; + } + else if (NetworkON && strcmp(game_name,"mountain king")==0 && my_server_data.GameType == 0) { + x = 283; + y = 1186; + return; + } + +if(NetworkON && (strcmp(game_name,"passave")==0 || strcmp(game_name,"Ї бᥩў")==0) && my_server_data.GameType == 2) { + if (strcmp(name, "Podish") == 0) { + aScrDisp->send_event(EV_TELEPORT, 0); + x = 1385; + y = 1568; + } + else if (strcmp(name, "Incubator") == 0) { + aScrDisp->send_event(EV_TELEPORT, 12); + x = 1735; + y = 404; + } + else if (strcmp(name, "VigBoo") == 0) { + aScrDisp->send_event(EV_TELEPORT, 2); + x = 1976; + y = 10069; + } + else if (strcmp(name, "Lampasso") == 0) { + aScrDisp->send_event(EV_TELEPORT, 7); + x = 1991; + y = 958; + } + else if (strcmp(name, "Ogorod") == 0) { + aScrDisp->send_event(EV_TELEPORT, 6); + x = 1402; + y = 1812; + } + else if (strcmp(name, "ZeePa") == 0) { + aScrDisp->send_event(EV_TELEPORT, 1); + x = 1257; + y = 976; + } + else if (strcmp(name, "B-Zone") == 0) { + aScrDisp->send_event(EV_TELEPORT, 11); + x = 1976; + y = 1069; + } + return; + } + for(i = 0;i < NETWORK_NUM_ESCAVE;i++){ if(!strcmp(name,NetworkEscaveName[i])){ t = -1; diff --git a/src/uvs/univang.cpp b/src/uvs/univang.cpp index e0eb482e..f30f443a 100644 --- a/src/uvs/univang.cpp +++ b/src/uvs/univang.cpp @@ -45,9 +45,17 @@ #include "diagen.h" #include "univang.h" +#include "../iscreen/iscreen_options.h" +#include "../iscreen/iscreen.h" +#include "../network.h" + +extern iScreenOption** iScrOpt; + const int TABUTASK_BAD = ACI_TABUTASK_FAILED; const int TABUTASK_GOOD = ACI_TABUTASK_SUCCESSFUL; +int countFromCommand = 0; + int RACE_WAIT = 300; int uvsKronActive = 0; int uvsVersion = 14; @@ -585,7 +593,8 @@ void uniVangPrepare(void){ #else if (i == UVS_ITEM_TYPE::MACHOTINE_GUN_LIGHT || i == UVS_ITEM_TYPE::SPEETLE_SYSTEM_LIGHT || - i == UVS_ITEM_TYPE::GHORB_GEAR_LIGHT ) + i == UVS_ITEM_TYPE::GHORB_GEAR_LIGHT || + (NetworkON && (strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(),"aibatr")==0 || strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR()," ЁЎ ва")==0 || strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(),"battle for hmok")==0 || strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(),"ЎЁвў  §  嬮Є")==0))) #endif for( int j = 0; j < MAIN_WORLD_MAX; j++) WorldTable[j] -> generate_item( i ); else @@ -596,21 +605,25 @@ void uniVangPrepare(void){ #ifdef ALL_ITEM_IN_SHOP for( int j = 0; j < MAIN_WORLD_MAX; j++) WorldTable[j] -> generate_item( i ); #else - - switch(i){ - case UVS_ITEM_TYPE::COPTE_RIG: - WorldTable[2] -> generate_item( i ); - break; - case UVS_ITEM_TYPE::CROT_RIG: - WorldTable[0] -> generate_item( i ); - break; - case UVS_ITEM_TYPE::CUTTE_RIG: - WorldTable[1] -> generate_item( i ); - break; - case UVS_ITEM_TYPE::RADAR_DEVICE: - WorldTable[RND(3)] -> generate_item( i ); - break; - }// end switch + if (NetworkON && (strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(),"aibatr")==0 || strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR()," ЁЎ ва")==0 || strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(),"battle for hmok")==0 || strcmp(iScrOpt[iSERVER_NAME]->GetValueCHR(),"ЎЁвў  §  嬮Є")==0)) { + for( int j = 0; j < MAIN_WORLD_MAX; j++) WorldTable[j] -> generate_item(i); + } + else { + switch(i){ + case UVS_ITEM_TYPE::COPTE_RIG: + WorldTable[2] -> generate_item( i ); + break; + case UVS_ITEM_TYPE::CROT_RIG: + WorldTable[0] -> generate_item( i ); + break; + case UVS_ITEM_TYPE::CUTTE_RIG: + WorldTable[1] -> generate_item( i ); + break; + case UVS_ITEM_TYPE::RADAR_DEVICE: + WorldTable[RND(3)] -> generate_item( i ); + break; + }// end switch + } #endif } else for( int j = 0; j < MAIN_WORLD_MAX; j++) WorldTable[j] -> generate_item( i ); @@ -793,12 +806,28 @@ void uniVangPrepare(void){ //zNfo DEFAULT MECHOS // 16 = моток int MechosID = 0; - if (NetworkON) switch (z_my_server_data.mod_id) { - case Z_MODS_RAFARUN_ID: { MechosID = 16; break; } // моток - case Z_MODS_TRAKTRIAL_ID: { MechosID = 7; break; } // аттрактор - case Z_MODS_NEPTUN_ID: { MechosID = 21; break; } // жаба - case Z_MODS_TEST_ID: { MechosID = 5; break; } // дряхлый душегуб - default: MechosID = 5; // дряхлый душегуб + if (NetworkON) { + switch (z_my_server_data.mod_id) { + case Z_MODS_RAFARUN_ID: { MechosID = 16; break; } // моток + case Z_MODS_TRAKTRIAL_ID: { MechosID = 7; break; } // аттрактор + case Z_MODS_NEPTUN_ID: { MechosID = 21; break; } // жаба + case Z_MODS_TEST_ID: { MechosID = 5; break; } // дряхлый душегуб + default: MechosID = 5; // дряхлый душегуб + } + char *game_name = iScrOpt[iSERVER_NAME]->GetValueCHR(); + if (my_server_data.GameType == 2 && (strcmp(game_name,"travel")==0 || strcmp(game_name,"ЇаЁЄ«о祭ЁҐ")==0)) MechosID = 0; + else if (my_server_data.GameType == 0 && (strcmp(game_name,"aibatr")==0 || strcmp(game_name," ЁЎ ва")==0)) MechosID = 22; + else if (my_server_data.GameType == 1 && (strcmp(game_name,"mega mechosoma")==0 || strcmp(game_name,"¬ҐЈ  ¬Ґе®б®¬ ")==0)) MechosID = 20; + else if (my_server_data.GameType == 0 && (strcmp(game_name,"super van-war")==0 || strcmp(game_name,"бгЇҐа ў ­-ў а")==0)) MechosID = 13; + else if (my_server_data.GameType == 1 && (strcmp(game_name,"progress")==0 || strcmp(game_name,"Їа®ЈаҐбб")==0)) MechosID = RND(MAX_MECHOS_RAFFA) + MAX_MECHOS_MAIN; + else if (my_server_data.GameType == 2 && (strcmp(game_name,"satinan")==0 || strcmp(game_name,"б вЁ­ ­")==0)) MechosID = 19; + else if (strcmp(game_name,"speed konoval")==0) MechosID = 9; + else if (my_server_data.GameType == 0 && (strcmp(game_name,"mechoxes")==0 || strcmp(game_name,"¬Ґе®ЄбҐб")==0)) MechosID = 0; + else if (my_server_data.GameType == 0 && (strcmp(game_name,"new soup")==0 || strcmp(game_name,"­®ўл© бгЇ")==0)) MechosID = 10; + else if (my_server_data.GameType == 2 && (strcmp(game_name,"vozvrat")==0 || strcmp(game_name,"ў®§ўа в")==0)) MechosID = 0; + else if (my_server_data.GameType == 2 && (strcmp(game_name,"bullet run")==0 || strcmp(game_name,"Ї® Ў®«®в ¬!")==0)) MechosID = 10; + else if (my_server_data.GameType == 2 && strcmp(game_name,"raffa-run-sim")==0) MechosID = RND(MAX_MECHOS_RAFFA) + MAX_MECHOS_MAIN; + else MechosID = 5; } v -> Pescave -> Pshop -> sellMechos(v -> Pmechos, MechosID); v -> Pmechos -> type = MechosID; @@ -5336,6 +5365,11 @@ void uvsEscave::add_goods_to_shop( void ){ //znfo - добавка товаро //#endif if (Pbunch -> status == UVS_BUNCH_STATUS::UNABLE) return; + + if (NetworkON && uvsGoodsON) { + GamerResult.phlegma_buy *= (int)(GamerResult.phlegma_buy < 0); + GamerResult.toxick_buy *= (int)(GamerResult.toxick_buy < 0); + } if (NetworkON && uvsGoodsON) { GamerResult.phlegma_buy *= (int)(GamerResult.phlegma_buy < 0); @@ -5474,6 +5508,13 @@ void uvsSpot::add_goods_to_shop( void ){ uvsTradeItem *pt = (uvsTradeItem*)Ptrade; if (Pworld -> escT[0] -> Pbunch -> status == UVS_BUNCH_STATUS::UNABLE) return; + + if (NetworkON && uvsGoodsON) { + GamerResult.nymbos_buy *= (int)(GamerResult.nymbos_buy < 0); + GamerResult.heroin_buy *= (int)(GamerResult.heroin_buy < 0); + GamerResult.shrub_buy *= (int)(GamerResult.shrub_buy < 0); + GamerResult.poponka_buy *= (int)(GamerResult.poponka_buy < 0); + } if (NetworkON && uvsGoodsON) { GamerResult.nymbos_buy *= (int)(GamerResult.nymbos_buy < 0); @@ -7936,7 +7977,7 @@ stand < ConTimer.GetTime() < "BOORAWCHICK go home\n"; count = GamerResult.nymbos - ItemCount(Pitem,UVS_ITEM_TYPE::NYMBOS ); GamerResult.nymbos = ItemCount(Pitem,UVS_ITEM_TYPE::NYMBOS ); - if (NetworkON && my_server_data.GameType == MECHOSOMA && Pescave && strcmp(Pescave->name, "Podish") == 0) { + if (Pescave && strcmp(Pescave->name, "Podish") == 0) { if (GamerResult.nymbos_buy - count > uvsQuantity) GamerResult.nymbos_buy = uvsQuantity; else GamerResult.nymbos_buy -= count; } @@ -7951,15 +7992,17 @@ stand < ConTimer.GetTime() < "BOORAWCHICK go home\n"; pl = (uvsTradeItem*)pl -> next; }// end while - if (NetworkON && my_server_data.GameType == MECHOSOMA && Pspot && strcmp(Pspot->name, "Incubator") == 0){ - my_player_body.MechosomaStat.ItemCount1 += count; - send_player_body(my_player_body); + if (NetworkON && my_server_data.GameType == MECHOSOMA){ + if (Pspot && strcmp(Pspot->name, "Incubator") == 0) { + my_player_body.MechosomaStat.ItemCount1 += count; + send_player_body(my_player_body); + } } } count = GamerResult.phlegma - ItemCount(Pitem, UVS_ITEM_TYPE::PHLEGMA); GamerResult.phlegma = ItemCount(Pitem, UVS_ITEM_TYPE::PHLEGMA); - if (NetworkON && my_server_data.GameType == MECHOSOMA && Pspot && strcmp(Pspot->name, "Incubator") == 0) { + if (Pspot && strcmp(Pspot->name, "Incubator") == 0) { if (GamerResult.phlegma_buy - count > uvsQuantity) GamerResult.phlegma_buy = uvsQuantity; else GamerResult.phlegma_buy -= count; } @@ -7973,15 +8016,17 @@ stand < ConTimer.GetTime() < "BOORAWCHICK go home\n"; } pl = (uvsTradeItem*)pl -> next; }// end while - if (NetworkON && my_server_data.GameType == MECHOSOMA && Pescave && strcmp(Pescave->name, "Podish") == 0) { - my_player_body.MechosomaStat.ItemCount2 += count; - send_player_body(my_player_body); + if (NetworkON && my_server_data.GameType == MECHOSOMA){ + if (Pescave && strcmp(Pescave->name, "Podish") == 0) { + my_player_body.MechosomaStat.ItemCount2 += count; + send_player_body(my_player_body); + } } } count = GamerResult.heroin - ItemCount(Pitem,UVS_ITEM_TYPE::HEROIN ); GamerResult.heroin = ItemCount(Pitem,UVS_ITEM_TYPE::HEROIN ); - if (NetworkON && my_server_data.GameType == MECHOSOMA && Pescave && strcmp(Pescave->name, "VigBoo") == 0) { + if (Pescave && strcmp(Pescave->name, "VigBoo") == 0) { if (GamerResult.heroin_buy - count > uvsQuantity) GamerResult.heroin_buy = uvsQuantity; else GamerResult.heroin_buy -= count; } @@ -7995,15 +8040,17 @@ stand < ConTimer.GetTime() < "BOORAWCHICK go home\n"; } pl = (uvsTradeItem*)pl -> next; }// end while - if (NetworkON && my_server_data.GameType == MECHOSOMA && Pspot && strcmp(Pspot->name, "Lampasso") == 0) { - my_player_body.MechosomaStat.ItemCount1 += count; - send_player_body(my_player_body); + if (NetworkON && my_server_data.GameType == MECHOSOMA){ + if (Pspot && strcmp(Pspot->name, "Lampasso") == 0) { + my_player_body.MechosomaStat.ItemCount1 += count; + send_player_body(my_player_body); + } } } count = GamerResult.shrub - ItemCount(Pitem,UVS_ITEM_TYPE::SHRUB ); GamerResult.shrub = ItemCount(Pitem,UVS_ITEM_TYPE::SHRUB ); - if (NetworkON && my_server_data.GameType == MECHOSOMA && Pescave && strcmp(Pescave->name, "VigBoo") == 0) { + if (Pescave && strcmp(Pescave->name, "VigBoo") == 0) { if (GamerResult.shrub_buy - count > uvsQuantity) GamerResult.shrub_buy = uvsQuantity; else GamerResult.shrub_buy -= count; } @@ -8017,15 +8064,17 @@ stand < ConTimer.GetTime() < "BOORAWCHICK go home\n"; } pl = (uvsTradeItem*)pl -> next; }// end while - if (NetworkON && my_server_data.GameType == MECHOSOMA && Pspot && strcmp(Pspot->name, "Ogorod") == 0) { - my_player_body.MechosomaStat.ItemCount2 += count; - send_player_body(my_player_body); + if (NetworkON && my_server_data.GameType == MECHOSOMA){ + if (Pspot && strcmp(Pspot->name, "Ogorod") == 0) { + my_player_body.MechosomaStat.ItemCount2 += count; + send_player_body(my_player_body); + } } } count = GamerResult.poponka - ItemCount(Pitem,UVS_ITEM_TYPE::POPONKA ); GamerResult.poponka = ItemCount(Pitem,UVS_ITEM_TYPE::POPONKA ); - if (NetworkON && my_server_data.GameType == MECHOSOMA && Pspot && strcmp(Pspot->name, "ZeePa") == 0) { + if (Pspot && strcmp(Pspot->name, "ZeePa") == 0) { if (GamerResult.poponka_buy - count > uvsQuantity) GamerResult.poponka_buy = uvsQuantity; else GamerResult.poponka_buy -= count; } @@ -8039,15 +8088,17 @@ stand < ConTimer.GetTime() < "BOORAWCHICK go home\n"; } pl = (uvsTradeItem*)pl -> next; }// end while - if (NetworkON && my_server_data.GameType == MECHOSOMA && Pescave && strcmp(Pescave->name, "B-Zone") == 0) { - my_player_body.MechosomaStat.ItemCount1 += count; - send_player_body(my_player_body); + if (NetworkON && my_server_data.GameType == MECHOSOMA){ + if (Pescave && strcmp(Pescave->name, "B-Zone") == 0) { + my_player_body.MechosomaStat.ItemCount1 += count; + send_player_body(my_player_body); + } } } count = GamerResult.toxick - ItemCount(Pitem,UVS_ITEM_TYPE::TOXICK ); GamerResult.toxick = ItemCount(Pitem,UVS_ITEM_TYPE::TOXICK ); - if (NetworkON && my_server_data.GameType == MECHOSOMA && Pescave && strcmp(Pescave->name, "B-Zone") == 0) { + if (Pescave && strcmp(Pescave->name, "B-Zone") == 0) { if (GamerResult.toxick_buy - count > uvsQuantity) GamerResult.toxick_buy = uvsQuantity; else GamerResult.toxick_buy -= count; } @@ -8061,9 +8112,11 @@ stand < ConTimer.GetTime() < "BOORAWCHICK go home\n"; } pl = (uvsTradeItem*)pl -> next; }// end while - if (NetworkON && my_server_data.GameType == MECHOSOMA && Pspot && strcmp(Pspot->name, "ZeePa") == 0) { - my_player_body.MechosomaStat.ItemCount2 += count; - send_player_body(my_player_body); + if (NetworkON && my_server_data.GameType == MECHOSOMA){ + if (Pspot && strcmp(Pspot->name, "ZeePa") == 0) { + my_player_body.MechosomaStat.ItemCount2 += count; + send_player_body(my_player_body); + } } } @@ -8644,6 +8697,7 @@ void uniVangLoad(XStream &pfile){ (v = new uvsVanger(pfile)); if( v -> shape == UVS_VANGER_SHAPE::GAMER ){ Gamer = v; + v -> shape = UVS_VANGER_SHAPE::GAMER; } v -> elink(ETail); } @@ -10403,7 +10457,21 @@ uvsVanger* uvsMakeNewGamerInEscave(uvsEscave* pe, int what ){ pm -> prev -> next = pm -> next; } - pm -> type = RND(MAX_MECHOS_RAFFA) + MAX_MECHOS_MAIN; + char *game_name = iScrOpt[iSERVER_NAME]->GetValueCHR(); + if (strcmp(game_name,"travel")==0 || strcmp(game_name,"ЇаЁЄ«о祭ЁҐ")==0) pm -> type = 0; + else if (strcmp(game_name,"aibatr")==0 || strcmp(game_name," ЁЎ ва")==0) pm -> type = 22; + else if (strcmp(game_name,"eleepod bath")==0 || strcmp(game_name,"Ў ­п н«ЁЇ®¤ ")==0) pm -> type = 0; + else if (strcmp(game_name,"mega mechosoma")==0 || strcmp(game_name,"¬ҐЈ  ¬Ґе®б®¬ ")==0) pm -> type = 20; + else if (strcmp(game_name,"super van-war")==0 || strcmp(game_name,"бгЇҐа ў ­-ў а")==0) pm -> type = 0; + else if (strcmp(game_name,"shutle fostral")==0 || strcmp(game_name,"祫­®з­л© д®бва «")==0) pm -> type = 0; + else if (strcmp(game_name,"razminka plus")==0) pm -> type = 5; + else if (strcmp(game_name,"satinan")==0 || strcmp(game_name,"б вЁ­ ­")==0) pm -> type = 19; + else if (strcmp(game_name,"speed konoval")==0) pm -> type = 9; + else if (strcmp(game_name,"new soup")==0 || strcmp(game_name,"­®ўл© бгЇ")==0) pm -> type = 0; + else if (strcmp(game_name,"mechoxes")==0 || strcmp(game_name,"¬Ґе®ЄбҐб")==0) pm -> type = 0; + else if (strcmp(game_name,"bullet run")==0 || strcmp(game_name,"Ї® Ў®«®в ¬!")==0) pm -> type = 10; + else if (strcmp(game_name,"tankacide-run")==0) pm -> type = 5; + else pm -> type = RND(MAX_MECHOS_RAFFA) + MAX_MECHOS_MAIN; Gamer -> Pmechos = pm; if (!Gamer -> Pmechos) ErrH.Abort("uvsMakeNewGamer :: dont have any mechos in shop");