396 lines
36 KiB
C#
396 lines
36 KiB
C#
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<string, CountryEntry> DATA = new Dictionary<string, CountryEntry>
|
||
{
|
||
{ "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<GlobeAssembler>("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<CountryData>();
|
||
if (cd == null) cd = child.gameObject.AddComponent<CountryData>();
|
||
|
||
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");
|
||
}
|
||
}
|