using UnityEngine; using UnityEditor; using System.IO; using System.Collections.Generic; public class GlobeAssembler : EditorWindow { private GameObject globeObject; public struct CountryEntry { public float baseOffset; public string baseLabel; public float dstOffset; public string dstLabel; public int dstStartMonth; public int dstEndMonth; public bool anomaly; public string fact; public string nameUkr; public CountryEntry(float baseOff, string baseLbl, float dstOff, string dstLbl, int dstStart, int dstEnd, bool anom, string f, string ukr) { baseOffset = baseOff; baseLabel = baseLbl; dstOffset = dstOff; dstLabel = dstLbl; dstStartMonth = dstStart; dstEndMonth = dstEnd; anomaly = anom; fact = f; nameUkr = ukr; } } static CountryEntry NoDST(float off, string lbl, bool anom = false, string fact = "", string ukr = "") => new CountryEntry(off, lbl, off, lbl, 0, 0, anom, fact, ukr); static CountryEntry NorthDST(float stdOff, string stdLbl, float dstOff, string dstLbl, bool anom = false, string fact = "", string ukr = "") => new CountryEntry(stdOff, stdLbl, dstOff, dstLbl, 3, 10, anom, fact, ukr); static CountryEntry SouthDST(float stdOff, string stdLbl, float dstOff, string dstLbl, bool anom = false, string fact = "", string ukr = "") => new CountryEntry(stdOff, stdLbl, dstOff, dstLbl, 10, 3, anom, fact, ukr); private static readonly Dictionary DATA = new Dictionary { { "Afghanistan", NoDST(4.5f, "UTC+4:30", false, "", "Афганістан") }, { "Akrotiri Sovereign Base Area", NoDST(2f, "UTC+2", false, "", "Акротірі") }, { "Aland", NorthDST(2f, "UTC+2", 3f, "UTC+3", false, "", "Аландські острови") }, { "Albania", NorthDST(1f, "UTC+1", 2f, "UTC+2", false, "", "Албанія") }, { "Algeria", NoDST(1f, "UTC+1", false, "", "Алжир") }, { "American Samoa", NoDST(-11f, "UTC-11", false, "", "Американське Самоа") }, { "Andorra", NorthDST(1f, "UTC+1", 2f, "UTC+2", false, "", "Андорра") }, { "Angola", NoDST(1f, "UTC+1", false, "", "Ангола") }, { "Anguilla", NoDST(-4f, "UTC-4", false, "", "Ангілья") }, { "Antarctica", NoDST(0f, "UTC+0", false, "", "Антарктида") }, { "Antigua and Barbuda", NoDST(-4f, "UTC-4", false, "", "Антигуа і Барбуда") }, { "Argentina", NoDST(-3f, "UTC-3", false, "", "Аргентина") }, { "Armenia", NoDST(4f, "UTC+4", false, "", "Вірменія") }, { "Aruba", NoDST(-4f, "UTC-4", false, "", "Аруба") }, { "Ashmore and Cartier Islands", NoDST(8f, "UTC+8", false, "", "Острови Ашмор і Картьє") }, { "Australia", SouthDST(10f, "UTC+10", 11f, "UTC+11", false, "", "Австралія") }, { "Austria", NorthDST(1f, "UTC+1", 2f, "UTC+2", false, "", "Австрія") }, { "Azerbaijan", NoDST(4f, "UTC+4", false, "", "Азербайджан") }, { "Bahrain", NoDST(3f, "UTC+3", false, "", "Бахрейн") }, { "Bajo Nuevo Bank Petrel Is", NoDST(-6f, "UTC-6", false, "", "Банк Бахо Нуево") }, { "Bangladesh", NoDST(6f, "UTC+6", false, "", "Бангладеш") }, { "Barbados", NoDST(-4f, "UTC-4", false, "", "Барбадос") }, { "Baykonur Cosmodrome", NoDST(6f, "UTC+6", false, "", "Байконур") }, { "Belarus", NoDST(3f, "UTC+3", false, "", "Білорусь") }, { "Belgium", NorthDST(1f, "UTC+1", 2f, "UTC+2", false, "", "Бельгія") }, { "Belize", NoDST(-6f, "UTC-6", false, "", "Беліз") }, { "Benin", NoDST(1f, "UTC+1", false, "", "Бенін") }, { "Bermuda", NorthDST(-4f, "UTC-4", -3f, "UTC-3", false, "", "Бермуди") }, { "Bhutan", NoDST(6f, "UTC+6", false, "", "Бутан") }, { "Bir Tawil", NoDST(3f, "UTC+3", false, "", "Бір-Тавіль") }, { "Bolivia", NoDST(-4f, "UTC-4", false, "", "Болівія") }, { "Bosnia and Herzegovina", NorthDST(1f, "UTC+1", 2f, "UTC+2", false, "", "Боснія і Герцеговина") }, { "Botswana", NoDST(2f, "UTC+2", false, "", "Ботсвана") }, { "Brazil", NoDST(-3f, "UTC-3", false, "", "Бразилія") }, { "Brazilian Island", NoDST(-3f, "UTC-3", false, "", "Бразильський острів") }, { "British Indian Ocean Territory", NoDST(6f, "UTC+6", false, "", "Британська територія в Індійському океані") }, { "British Virgin Islands", NoDST(-4f, "UTC-4", false, "", "Британські Віргінські острови") }, { "Brunei", NoDST(8f, "UTC+8", false, "", "Бруней") }, { "Bulgaria", NorthDST(2f, "UTC+2", 3f, "UTC+3", false, "", "Болгарія") }, { "Burkina Faso", NoDST(0f, "UTC+0", false, "", "Буркіна-Фасо") }, { "Burundi", NoDST(2f, "UTC+2", false, "", "Бурунді") }, { "Cabo Verde", NoDST(-1f, "UTC-1", false, "", "Кабо-Верде") }, { "Cambodia", NoDST(7f, "UTC+7", false, "", "Камбоджа") }, { "Cameroon", NoDST(1f, "UTC+1", false, "", "Камерун") }, { "Canada", NorthDST(-5f, "UTC-5", -4f, "UTC-4", false, "", "Канада") }, { "Cayman Islands", NoDST(-5f, "UTC-5", false, "", "Кайманові острови") }, { "Central African Republic", NoDST(1f, "UTC+1", false, "", "Центральноафриканська Республіка") }, { "Chad", NoDST(1f, "UTC+1", false, "", "Чад") }, { "Chile", SouthDST(-3f, "UTC-3", -4f, "UTC-4", false, "", "Чилі") }, { "China", NoDST(8f, "UTC+8", true, "Китай розміром з США використовує один пояс UTC+8. На заході сонце сходить о 10 ранку.", "Китай") }, { "Clipperton Island", NoDST(-8f, "UTC-8", false, "", "Острів Кліппертон") }, { "Colombia", NoDST(-5f, "UTC-5", false, "", "Колумбія") }, { "Comoros", NoDST(3f, "UTC+3", false, "", "Коморські острови") }, { "Cook Islands", NoDST(-10f, "UTC-10", false, "", "Острови Кука") }, { "Coral Sea Islands", NoDST(11f, "UTC+11", false, "", "Острови Кораловного моря") }, { "Costa Rica", NoDST(-6f, "UTC-6", false, "", "Коста-Ріка") }, { "Croatia", NorthDST(1f, "UTC+1", 2f, "UTC+2", false, "", "Хорватія") }, { "Cuba", NorthDST(-5f, "UTC-5", -4f, "UTC-4", false, "", "Куба") }, { "Curacao", NoDST(-4f, "UTC-4", false, "", "Кюрасао") }, { "Cyprus", NorthDST(2f, "UTC+2", 3f, "UTC+3", false, "", "Кіпр") }, { "Cyprus No Mans Area", NoDST(2f, "UTC+2", false, "", "Нейтральна зона Кіпру") }, { "Czechia", NorthDST(1f, "UTC+1", 2f, "UTC+2", false, "", "Чехія") }, { "Czech Republic", NorthDST(1f, "UTC+1", 2f, "UTC+2", false, "", "Чехія") }, { "Democratic Republic of the Congo", NoDST(1f, "UTC+1", false, "", "ДР Конго") }, { "Denmark", NorthDST(1f, "UTC+1", 2f, "UTC+2", false, "", "Данія") }, { "Dhekelia Sovereign Base Area", NorthDST(2f, "UTC+2", 3f, "UTC+3", false, "", "Декелія") }, { "Djibouti", NoDST(3f, "UTC+3", false, "", "Джибуті") }, { "Dominica", NoDST(-4f, "UTC-4", false, "", "Домініка") }, { "Dominican Republic", NoDST(-4f, "UTC-4", false, "", "Домініканська Республіка") }, { "East Timor", NoDST(9f, "UTC+9", false, "", "Східний Тимор") }, { "Ecuador", NoDST(-5f, "UTC-5", false, "", "Еквадор") }, { "Egypt", NoDST(2f, "UTC+2", false, "", "Єгипет") }, { "El Salvador", NoDST(-6f, "UTC-6", false, "", "Сальвадор") }, { "Equatorial Guinea", NoDST(1f, "UTC+1", false, "", "Екваторіальна Гвінея") }, { "Eritrea", NoDST(3f, "UTC+3", false, "", "Еритрея") }, { "Estonia", NorthDST(2f, "UTC+2", 3f, "UTC+3", false, "", "Естонія") }, { "eSwatini", NoDST(2f, "UTC+2", false, "", "Есватіні") }, { "Ethiopia", NoDST(3f, "UTC+3", false, "", "Ефіопія") }, { "Falkland Islands", NoDST(-3f, "UTC-3", false, "", "Фолклендські острови") }, { "Faroe Islands", NorthDST(0f, "UTC+0", 1f, "UTC+1", false, "", "Фарерські острови") }, { "Federated States of Micronesia", NoDST(11f, "UTC+11", false, "", "Мікронезія") }, { "Fiji", SouthDST(12f, "UTC+12", 13f, "UTC+13", false, "", "Фіджі") }, { "Finland", NorthDST(2f, "UTC+2", 3f, "UTC+3", false, "", "Фінляндія") }, { "France", NorthDST(1f, "UTC+1", 2f, "UTC+2", false, "", "Франція") }, { "French Polynesia", NoDST(-10f, "UTC-10", false, "", "Французька Полінезія") }, { "French Southern and Antarctic Lands", NoDST(5f, "UTC+5", false, "", "Французькі південні території") }, { "Gabon", NoDST(1f, "UTC+1", false, "", "Габон") }, { "Gambia", NoDST(0f, "UTC+0", false, "", "Гамбія") }, { "Georgia", NoDST(4f, "UTC+4", false, "", "Грузія") }, { "Germany", NorthDST(1f, "UTC+1", 2f, "UTC+2", false, "", "Німеччина") }, { "Ghana", NoDST(0f, "UTC+0", false, "", "Гана") }, { "Gibraltar", NorthDST(1f, "UTC+1", 2f, "UTC+2", false, "", "Гібралтар") }, { "Greece", NorthDST(2f, "UTC+2", 3f, "UTC+3", false, "", "Греція") }, { "Greenland", NorthDST(-3f, "UTC-3", -2f, "UTC-2", false, "", "Гренландія") }, { "Grenada", NoDST(-4f, "UTC-4", false, "", "Гренада") }, { "Guam", NoDST(10f, "UTC+10", false, "", "Гуам") }, { "Guatemala", NoDST(-6f, "UTC-6", false, "", "Гватемала") }, { "Guernsey", NorthDST(0f, "UTC+0", 1f, "UTC+1", false, "", "Гернсі") }, { "Guinea", NoDST(0f, "UTC+0", false, "", "Гвінея") }, { "Guinea-Bissau", NoDST(0f, "UTC+0", false, "", "Гвінея-Бісау") }, { "Guyana", NoDST(-4f, "UTC-4", false, "", "Гаяна") }, { "Haiti", NorthDST(-5f, "UTC-5", -4f, "UTC-4", false, "", "Гаїті") }, { "Heard Island and McDonald Islands", NoDST(5f, "UTC+5", false, "", "Острів Херд") }, { "Honduras", NoDST(-6f, "UTC-6", false, "", "Гондурас") }, { "Hong Kong SAR", NoDST(8f, "UTC+8", false, "", "Гонконг") }, { "Hungary", NorthDST(1f, "UTC+1", 2f, "UTC+2", false, "", "Угорщина") }, { "Iceland", NoDST(0f, "UTC+0", false, "", "Ісландія") }, { "India", NoDST(5.5f, "UTC+5:30", true, "Індія використовує UTC+5:30 щоб вся країна жила за одним часом попри 30 градусів довготи.", "Індія") }, { "Indian Ocean Territories", NoDST(7f, "UTC+7", false, "", "Території Індійського океану") }, { "Indonesia", NoDST(7f, "UTC+7", false, "", "Індонезія") }, { "Iran", NorthDST(3.5f,"UTC+3:30", 4.5f, "UTC+4:30", true, "Іран використовує UTC+3:30, влітку переходить на UTC+4:30.", "Іран") }, { "Iraq", NoDST(3f, "UTC+3", false, "", "Ірак") }, { "Ireland", NorthDST(0f, "UTC+0", 1f, "UTC+1", false, "", "Ірландія") }, { "Isle of Man", NorthDST(0f, "UTC+0", 1f, "UTC+1", false, "", "Острів Мен") }, { "Israel", NorthDST(2f, "UTC+2", 3f, "UTC+3", false, "", "Ізраїль") }, { "Italy", NorthDST(1f, "UTC+1", 2f, "UTC+2", false, "", "Італія") }, { "Ivory Coast", NoDST(0f, "UTC+0", false, "", "Кот-д'Івуар") }, { "Jamaica", NoDST(-5f, "UTC-5", false, "", "Ямайка") }, { "Japan", NoDST(9f, "UTC+9", false, "", "Японія") }, { "Jersey", NorthDST(0f, "UTC+0", 1f, "UTC+1", false, "", "Джерсі") }, { "Jordan", NorthDST(2f, "UTC+2", 3f, "UTC+3", false, "", "Йорданія") }, { "Kazakhstan", NoDST(6f, "UTC+6", false, "", "Казахстан") }, { "Kenya", NoDST(3f, "UTC+3", false, "", "Кенія") }, { "Kiribati", NoDST(14f, "UTC+14", true, "Кірібаті у 1995 зсунув острови з UTC-12 на UTC+14 щоб жити в одному дні з сусідами.", "Кірібаті") }, { "Kosovo", NorthDST(1f, "UTC+1", 2f, "UTC+2", false, "", "Косово") }, { "Kuwait", NoDST(3f, "UTC+3", false, "", "Кувейт") }, { "Kyrgyzstan", NoDST(6f, "UTC+6", false, "", "Киргизстан") }, { "Laos", NoDST(7f, "UTC+7", false, "", "Лаос") }, { "Latvia", NorthDST(2f, "UTC+2", 3f, "UTC+3", false, "", "Латвія") }, { "Lebanon", NorthDST(2f, "UTC+2", 3f, "UTC+3", false, "", "Ліван") }, { "Lesotho", NoDST(2f, "UTC+2", false, "", "Лесото") }, { "Liberia", NoDST(0f, "UTC+0", false, "", "Ліберія") }, { "Libya", NoDST(2f, "UTC+2", false, "", "Лівія") }, { "Liechtenstein", NorthDST(1f, "UTC+1", 2f, "UTC+2", false, "", "Ліхтенштейн") }, { "Lithuania", NorthDST(2f, "UTC+2", 3f, "UTC+3", false, "", "Литва") }, { "Luxembourg", NorthDST(1f, "UTC+1", 2f, "UTC+2", false, "", "Люксембург") }, { "Macao SAR", NoDST(8f, "UTC+8", false, "", "Макао") }, { "Madagascar", NoDST(3f, "UTC+3", false, "", "Мадагаскар") }, { "Malawi", NoDST(2f, "UTC+2", false, "", "Малаві") }, { "Malaysia", NoDST(8f, "UTC+8", false, "", "Малайзія") }, { "Maldives", NoDST(5f, "UTC+5", false, "", "Мальдіви") }, { "Mali", NoDST(0f, "UTC+0", false, "", "Малі") }, { "Malta", NorthDST(1f, "UTC+1", 2f, "UTC+2", false, "", "Мальта") }, { "Marshall Islands", NoDST(12f, "UTC+12", false, "", "Маршаллові острови") }, { "Mauritania", NoDST(0f, "UTC+0", false, "", "Мавританія") }, { "Mauritius", NoDST(4f, "UTC+4", false, "", "Маврикій") }, { "Mexico", NorthDST(-6f, "UTC-6", -5f, "UTC-5", false, "", "Мексика") }, { "Moldova", NorthDST(2f, "UTC+2", 3f, "UTC+3", false, "", "Молдова") }, { "Monaco", NorthDST(1f, "UTC+1", 2f, "UTC+2", false, "", "Монако") }, { "Mongolia", NoDST(8f, "UTC+8", false, "", "Монголія") }, { "Montenegro", NorthDST(1f, "UTC+1", 2f, "UTC+2", false, "", "Чорногорія") }, { "Montserrat", NoDST(-4f, "UTC-4", false, "", "Монтсеррат") }, { "Morocco", NoDST(1f, "UTC+1", false, "", "Марокко") }, { "Mozambique", NoDST(2f, "UTC+2", false, "", "Мозамбік") }, { "Myanmar", NoDST(6.5f, "UTC+6:30", true, "М'янма використовує нестандартне зміщення UTC+6:30.", "М'янма") }, { "Namibia", NoDST(2f, "UTC+2", false, "", "Намібія") }, { "Nauru", NoDST(12f, "UTC+12", false, "", "Науру") }, { "Nepal", NoDST(5.75f, "UTC+5:45", true, "Непал використовує UTC+5:45 - зміщення на 45 хвилин, щоб відрізнятися від Індії.", "Непал") }, { "Netherlands", NorthDST(1f, "UTC+1", 2f, "UTC+2", false, "", "Нідерланди") }, { "New Caledonia", NoDST(11f, "UTC+11", false, "", "Нова Каледонія") }, { "New Zealand", SouthDST(12f, "UTC+12", 13f, "UTC+13", false, "", "Нова Зеландія") }, { "Nicaragua", NoDST(-6f, "UTC-6", false, "", "Нікарагуа") }, { "Niger", NoDST(1f, "UTC+1", false, "", "Нігер") }, { "Nigeria", NoDST(1f, "UTC+1", false, "", "Нігерія") }, { "Niue", NoDST(-11f, "UTC-11", false, "", "Ніуе") }, { "Norfolk Island", SouthDST(11f, "UTC+11", 12f, "UTC+12", false, "", "Острів Норфолк") }, { "North Korea", NoDST(9f, "UTC+9", false, "", "Північна Корея") }, { "North Macedonia", NorthDST(1f, "UTC+1", 2f, "UTC+2", false, "", "Північна Македонія") }, { "Northern Cyprus", NorthDST(2f, "UTC+2", 3f, "UTC+3", false, "", "Північний Кіпр") }, { "Northern Mariana Islands", NoDST(10f, "UTC+10", false, "", "Північні Маріанські острови") }, { "Norway", NorthDST(1f, "UTC+1", 2f, "UTC+2", false, "", "Норвегія") }, { "Oman", NoDST(4f, "UTC+4", false, "", "Оман") }, { "Pakistan", NoDST(5f, "UTC+5", false, "", "Пакистан") }, { "Palau", NoDST(9f, "UTC+9", false, "", "Палау") }, { "Palestine", NorthDST(2f, "UTC+2", 3f, "UTC+3", false, "", "Палестина") }, { "Panama", NoDST(-5f, "UTC-5", false, "", "Панама") }, { "Papua New Guinea", NoDST(10f, "UTC+10", false, "", "Папуа Нова Гвінея") }, { "Paraguay", SouthDST(-4f, "UTC-4", -3f, "UTC-3", false, "", "Парагвай") }, { "Peru", NoDST(-5f, "UTC-5", false, "", "Перу") }, { "Philippines", NoDST(8f, "UTC+8", false, "", "Філіппіни") }, { "Pitcairn Islands", NoDST(-8f, "UTC-8", false, "", "Острови Піткерн") }, { "Poland", NorthDST(1f, "UTC+1", 2f, "UTC+2", false, "", "Польща") }, { "Portugal", NorthDST(0f, "UTC+0", 1f, "UTC+1", false, "", "Португалія") }, { "Puerto Rico", NoDST(-4f, "UTC-4", false, "", "Пуерто-Ріко") }, { "Qatar", NoDST(3f, "UTC+3", false, "", "Катар") }, { "Republic of Serbia", NorthDST(1f, "UTC+1", 2f, "UTC+2", false, "", "Сербія") }, { "Republic of the Congo", NoDST(1f, "UTC+1", false, "", "Республіка Конго") }, { "Romania", NorthDST(2f, "UTC+2", 3f, "UTC+3", false, "", "Румунія") }, { "Russia", NoDST(3f, "UTC+3", true, "Росія охоплює 11 часових поясів - від UTC+2 до UTC+12.", "Росія") }, { "Rwanda", NoDST(2f, "UTC+2", false, "", "Руанда") }, { "Saint Barthelemy", NoDST(-4f, "UTC-4", false, "", "Сен-Бартелемі") }, { "Saint Helena", NoDST(0f, "UTC+0", false, "", "Острів Святої Єлени") }, { "Saint Kitts and Nevis", NoDST(-4f, "UTC-4", false, "", "Сент-Кітс і Невіс") }, { "Saint Lucia", NoDST(-4f, "UTC-4", false, "", "Сент-Люсія") }, { "Saint Martin", NoDST(-4f, "UTC-4", false, "", "Сен-Мартен") }, { "Saint Pierre and Miquelon", NorthDST(-3f, "UTC-3", -2f, "UTC-2", false, "", "Сен-П'єр і Мікелон") }, { "Saint Vincent and the Grenadines", NoDST(-4f, "UTC-4", false, "", "Сент-Вінсент і Гренадини") }, { "Samoa", NoDST(13f, "UTC+13", false, "", "Самоа") }, { "San Marino", NorthDST(1f, "UTC+1", 2f, "UTC+2", false, "", "Сан-Маріно") }, { "Sao Tome and Principe", NoDST(0f, "UTC+0", false, "", "Сан-Томе і Принсіпі") }, { "Saudi Arabia", NoDST(3f, "UTC+3", false, "", "Саудівська Аравія") }, { "Scarborough Reef", NoDST(8f, "UTC+8", false, "", "Риф Скарборо") }, { "Senegal", NoDST(0f, "UTC+0", false, "", "Сенегал") }, { "Serbia", NorthDST(1f, "UTC+1", 2f, "UTC+2", false, "", "Сербія") }, { "Serranilla Bank", NoDST(-5f, "UTC-5", false, "", "Банк Серранілья") }, { "Seychelles", NoDST(4f, "UTC+4", false, "", "Сейшели") }, { "Siachen Glacier", NoDST(5f, "UTC+5", false, "", "Льодовик Сіачен") }, { "Sierra Leone", NoDST(0f, "UTC+0", false, "", "Сьєрра-Леоне") }, { "Singapore", NoDST(8f, "UTC+8", false, "", "Сінгапур") }, { "Sint Maarten", NoDST(-4f, "UTC-4", false, "", "Сінт-Мартен") }, { "Slovakia", NorthDST(1f, "UTC+1", 2f, "UTC+2", false, "", "Словаччина") }, { "Slovenia", NorthDST(1f, "UTC+1", 2f, "UTC+2", false, "", "Словенія") }, { "Solomon Islands", NoDST(11f, "UTC+11", false, "", "Соломонові острови") }, { "Somalia", NoDST(3f, "UTC+3", false, "", "Сомалі") }, { "Somaliland", NoDST(3f, "UTC+3", false, "", "Сомаліленд") }, { "South Africa", NoDST(2f, "UTC+2", false, "", "Південна Африка") }, { "South Georgia and the Islands", NoDST(-2f, "UTC-2", false, "", "Південна Джорджія") }, { "South Korea", NoDST(9f, "UTC+9", false, "", "Південна Корея") }, { "South Sudan", NoDST(3f, "UTC+3", false, "", "Південний Судан") }, { "Southern Patagonian Ice Field", NoDST(-3f, "UTC-3", false, "", "Патагонський льодовик") }, { "Spain", NorthDST(1f, "UTC+1", 2f, "UTC+2", false, "", "Іспанія") }, { "Spratly Islands", NoDST(8f, "UTC+8", false, "", "Острови Спратлі") }, { "Sri Lanka", NoDST(5.5f, "UTC+5:30", false, "", "Шрі-Ланка") }, { "Sudan", NoDST(3f, "UTC+3", false, "", "Судан") }, { "Suriname", NoDST(-3f, "UTC-3", false, "", "Суринам") }, { "Sweden", NorthDST(1f, "UTC+1", 2f, "UTC+2", false, "", "Швеція") }, { "Switzerland", NorthDST(1f, "UTC+1", 2f, "UTC+2", false, "", "Швейцарія") }, { "Syria", NorthDST(2f, "UTC+2", 3f, "UTC+3", false, "", "Сирія") }, { "Taiwan", NoDST(8f, "UTC+8", false, "", "Тайвань") }, { "Tajikistan", NoDST(5f, "UTC+5", false, "", "Таджикистан") }, { "Thailand", NoDST(7f, "UTC+7", false, "", "Таїланд") }, { "The Bahamas", NorthDST(-5f, "UTC-5", -4f, "UTC-4", false, "", "Багамські острови") }, { "Togo", NoDST(0f, "UTC+0", false, "", "Того") }, { "Tonga", NoDST(13f, "UTC+13", false, "", "Тонга") }, { "Trinidad and Tobago", NoDST(-4f, "UTC-4", false, "", "Тринідад і Тобаго") }, { "Tunisia", NoDST(1f, "UTC+1", false, "", "Туніс") }, { "Turkey", NoDST(3f, "UTC+3", false, "", "Туреччина") }, { "Turkmenistan", NoDST(5f, "UTC+5", false, "", "Туркменістан") }, { "Turks and Caicos Islands", NorthDST(-5f, "UTC-5", -4f, "UTC-4", false, "", "Острови Теркс і Кайкос") }, { "Tuvalu", NoDST(12f, "UTC+12", false, "", "Тувалу") }, { "Uganda", NoDST(3f, "UTC+3", false, "", "Уганда") }, { "Ukraine", NorthDST(2f, "UTC+2", 3f, "UTC+3", false, "", "Україна") }, { "United Arab Emirates", NoDST(4f, "UTC+4", false, "", "ОАЕ") }, { "United Kingdom", NorthDST(0f, "UTC+0", 1f, "UTC+1", false, "", "Велика Британія") }, { "United Republic of Tanzania", NoDST(3f, "UTC+3", false, "", "Танзанія") }, { "United States Minor Outlying Islands", NoDST(-12f, "UTC-12", false, "", "Малі віддалені острови США") }, { "United States of America", NorthDST(-5f, "UTC-5", -4f, "UTC-4", false, "", "США") }, { "United States Virgin Islands", NoDST(-4f, "UTC-4", false, "", "Американські Віргінські острови") }, { "Uruguay", NoDST(-3f, "UTC-3", false, "", "Уругвай") }, { "US Naval Base Guantanamo Bay", NoDST(-5f, "UTC-5", false, "", "Гуантанамо") }, { "Uzbekistan", NoDST(5f, "UTC+5", false, "", "Узбекистан") }, { "Vanuatu", NoDST(11f, "UTC+11", false, "", "Вануату") }, { "Vatican", NorthDST(1f, "UTC+1", 2f, "UTC+2", false, "", "Ватикан") }, { "Venezuela", NoDST(-4f, "UTC-4", true, "Венесуела у 2007 перейшла на UTC-4:30 за наказом Чавеса, у 2016 повернулась на UTC-4.", "Венесуела") }, { "Vietnam", NoDST(7f, "UTC+7", false, "", "В'єтнам") }, { "Wallis and Futuna", NoDST(12f, "UTC+12", false, "", "Уолліс і Футуна") }, { "Western Sahara", NoDST(1f, "UTC+1", false, "", "Західна Сахара") }, { "Yemen", NoDST(3f, "UTC+3", false, "", "Ємен") }, { "Zambia", NoDST(2f, "UTC+2", false, "", "Замбія") }, { "Zimbabwe", NoDST(2f, "UTC+2", false, "", "Зімбабве") }, }; [MenuItem("Tools/Globe Assembler")] public static void ShowWindow() { GetWindow("Globe Assembler"); } void OnGUI() { GUILayout.Label("Об'єкт Globe у сцені:"); globeObject = (GameObject)EditorGUILayout.ObjectField(globeObject, typeof(GameObject), true); GUILayout.Space(10); if (GUILayout.Button("Додати CountryData + UTC всім країнам", GUILayout.Height(40))) AddCountryData(); } void AddCountryData() { if (globeObject == null) { EditorUtility.DisplayDialog("Помилка", "Вибери об'єкт Globe!", "OK"); return; } int count = 0; int found = 0; int skipped = 0; foreach (Transform child in globeObject.transform) { if (child.gameObject.name == "Ocean") { skipped++; continue; } CountryData cd = child.GetComponent(); if (cd == null) cd = child.gameObject.AddComponent(); string rawName = child.gameObject.name.Replace("_", " ").Trim(); cd.countryName = rawName; if (DATA.TryGetValue(rawName, out CountryEntry entry)) { int month = System.DateTime.Now.Month; bool isDST = false; if (entry.dstStartMonth != 0) { if (entry.dstStartMonth > entry.dstEndMonth) isDST = (month >= entry.dstStartMonth || month <= entry.dstEndMonth); else isDST = (month >= entry.dstStartMonth && month <= entry.dstEndMonth); } cd.utcOffset = isDST ? entry.dstOffset : entry.baseOffset; cd.utcLabel = isDST ? entry.dstLabel : entry.baseLabel; cd.hasAnomaly = entry.anomaly; cd.anomalyFact = entry.fact; cd.countryNameUkr = entry.nameUkr; cd.baseUtcOffset = entry.baseOffset; cd.baseUtcLabel = entry.baseLabel; cd.dstUtcOffset = entry.dstOffset; cd.dstUtcLabel = entry.dstLabel; cd.dstStartMonth = entry.dstStartMonth; cd.dstEndMonth = entry.dstEndMonth; found++; } else { cd.utcOffset = 0f; cd.utcLabel = "UTC+0"; cd.countryNameUkr = rawName; cd.baseUtcOffset = 0f; cd.baseUtcLabel = "UTC+0"; cd.dstUtcOffset = 0f; cd.dstUtcLabel = "UTC+0"; cd.dstStartMonth = 0; cd.dstEndMonth = 0; } count++; } UnityEditor.SceneManagement.EditorSceneManager.MarkSceneDirty( UnityEngine.SceneManagement.SceneManager.GetActiveScene()); EditorUtility.DisplayDialog("Готово!", $"Оброблено: {count}\nЗнайдено UTC: {found}\nБез UTC: {count - found}\nПропущено (Ocean): {skipped}", "OK"); } }