mart. Ритуал.
Каждый день, утром и вечером, мы этот ритуал делаем!
Работы с прошлой темы:
@Kukabara, вот!
Знаете, я к своим вещами отношусь трепетно и аккуратно. Вот, допустим, я не разбила ни одного стекла на своих телефонах. Не потеряла, не утопила случайно. Все в целости и сохранности. Да, аккумулятор может не вынести моей осторожности и жахнуться сам, чтоб, значит, я додумалась новую модель телефона купить и оставить его в покое на старости лет. А так нет, так я вещи берегу.
И особенно мне некомфортно, когда мои вещи берёт кто-то другой. Даже если и с моего разрешения. А тем более ─ если кто-то вещь неаккуратно спиздит.
Тут я, конечно, теряю самоконтроль.
Учила я как-то детей резать по дереву. Конечно, в полном смысле детьми этих оболтусов назвать нельзя ─ в основном это хулиганистые подростки, которые достались мне от предыдущего педагога, Доминика ─ настоящего художника и резчика. (Он совсем не вовремя спился и начал резать портреты и эпитафии на каменных могильных плитах).
Этот бывший педагог человеком был добрым и покладистым, много им позволял, потому что всегда был или подшофе, или с бодуна. И ко мне эта банда попала с расшатанной психикой и неровными моральными принципами.
И вот они у меня сидят. Скучают по своему любимому Доминику и режут… Его резаками в основном режут (добрейший Доминик передал мне и все резаки, и все дрова).
Но, конечно, не только его ученики были. Были и мои личные. И резаки мои личные тоже были. Пара штук, но были. Мне их подарил другой резчик. Они мне, может, дороги как память. Я их, может, привела в порядок, покрасила морилкой и любуюсь всякую минуту.
И вот как-то смотрю ─ а нет на месте одного моего резака!! Вот совсем нет! Такого чтоб резаки пропадали ─ такого эти раненые в душу подростки ещё не видели. И очень огорчились. И обещали сломать руки, нос и шею гаду, который покусился на святое.
Надо, конечно, понимать, что мальчики были в очень растрёпанных чувствах после ухода (в запой и с работы, а не то что вы подумали...) любимого педагога. Их можно понять. И хотя возобновление занятий по резьбе несколько примирило их с потерей, но угроза расправы с любым, кто попадёт под подозрение, оставалась.
─ Не переживайте, ─ поспешила я их успокоить, ─ любой, кто притронется к моим вещами без спроса ─ обязательно пострадает!
Самое главное, думаю я, не допустить рукоприкладства. Смотрю, вроде успокоились. Хорошо, сидим, дальше, пытаемся изобразить что-то из дерева, потому что изобразить что-то приличное на лице не получается: они свирепы, я скалюсь, как идиотка.
Проходит, может, час. Или другое какое-то время. Некоторые уже и домой ушли.
И входит тут ко мне в кабинет преподаватель с первого этажа и говорит, что я нарушаю технику безопасности, разбрасываю везде свои резаки, и дети, может быть, об них травмируются. И вводит в кабинет пострадавшего отрока лет двенадцати. Мой.
─ Как это нарушаю, — говорю, ─ нету такого. Весь инструмент на месте. А если кто и спёр чего по недомыслию ─ то я тут не виновата. Это пусть их родители отвечают.
─ А я, ─ говорит преподаватель, ─ не интересуюсь, кто отвечает. Это пусть милиция разбирается. А только вот вам пострадавший! ─ и толкает ко мне этого отрока. ─ Он, ─ говорит преподаватель, ─ порезался, и ему даже пришлось клеить лейкопластырь на пострадавшую область!..
А отрок глазки прячет и смущается. С чего бы это? Вроде так-то тип нагловатый…
— …Вот туда! ─ громогласно заканчивает обличительную речь преподаватель с первого этажа и указывает пальцем на задницу отрока.
Мы все дружно смотрим туда же. А отрок блеет:
─ Я, ─ говорит, ─ сел на лавочку переобуться, а оно мне как впилось!.. ─ и вздыхает.
Преподаватель с первого этажа ушла, осуждающе окинув всех взглядом.
Мы с остатками мстителей внимательно смотрим на пострадавшего.
─ Вот ваш резак, ─ робко говорит он и выкладывает на стол пропажу.
Мы смотрим и понимаем, что как ни пристраивай на него свою жопу, порезать её не получится. Тем более ─ если жопа в толстых трикотажных штанах.
─ А ну! ─ один из мстителей несколько грубо развернул отрока пострадавшей частью тела к нам: дырки на штанах на означенном месте не наблюдалось.
─ Да там царапина просто, ─ заюлил отрок и начал отступать к двери. ─ Кто-то бросил резак на лавку… Наверное слышал, что вы сказали… Испугался…
Он не уточнил, кто именно и что сказал: то ли про нос и шею, то ли про другие неприятности.
─ Знаете, как иголкой кольнуло, ─ продолжал отрок, продолжая отступать. Мы молчали. ─ Ну, от иголки же штаны не рвутся? ─ он неестественно засмеялся и сдриснул из кабинета.
Никто за ним не побежал. По лицам присутствующих было понятно, что отроку никто не поверил.
─ Надо было внутри кармана посмотреть, там дырка, ─ предположил один.
─ Догоним? ─ это второй.
─ Догонишь его, он как заяц подстреленный, ─ это третий.
─ Не надо никого догонять, ─ это я. ─ И лезть в карманы не надо ─ это незаконно, ─ постаралась я предупредить незаконные действия подопечных.
Конечно, опасения были. Но, с другой стороны, резак вот он, лежит на столе. А значит, и репрессии надо отменять.
Больше у меня в кабинете ничего не пропадало. Или я просто не замечала. А только с того времени меня стали называть ведьмой. Не то чтобы прямо в глаза. А при случае. Не может кто-то найти, допустим, батарейку или какой другой необходимый предмет, ножницы какие-нибудь.
─ Ничего, ─ говорят, ─ вот кто щас ногу сломает ─ тот и спёр.
─ Не бери без спроса, ─ учили новеньких, ─ а то с лестницы свалишься и шею сломаешь.
Такие разговоры дошли и до моего начальства…
Но это уже совсем другая история.
@Kukabara держи птифс!
Это вяхирь. Вообще они лесные, но Кисловодский парк им видимо так понравился, что они решили там поселиться. Я их понимаю: посчитала, оказалось что мы шестой раз были в Кисловодске )
Когда первый раз его увидели, муж утверждал, что это просто голубь так разъелся, и меня пытался в этом убедить. Считаю что это был газлайтинг ) Пришлось гуглить )
Птиц реально сильно крупнее обычной гульки, ходит вразвалочку, видно что более массивный и тяжёлый (кстати это охотничий вид, их стреляють и жруть, поэтому они не с таким энтузиазмом селятся в городах, как обычные голуби).
Это сойка, у нас они не водятся, а в Кисловодске их полно. Мы их с любовью называем "слойки". Стоя у одной и приманивая орешком, услышала как вслед за нами их так же стала называть прошедшая мимо пара. Распространяем новое название :-)
Ещё синичка
О, уже две!
А вот это другая синичка, маленькая. Такие более храбрые, их больше садилось чем обычных жёлтеньких
Что-то уткоподобное плавает в озере
Похожи на огарей, которых мы видели в Москве
Стоит оговориться, что речь не просто про Godot как таковой. Потому как я сделал форк Redot'а (форка Godot'а) и там уже в исходниках движка внёс исправления.
Мне показалось странным, что такой базовой вещи, как менеджер пакетов нет в движке из коробки, поэтому я вооружился буквами и пошёл насыпать их в код. В качестве первого этапа разработки подключил АПИ NuGet'а, дальше в будущем планирую добавить добавление пакетов из гита и в последствии, думаю, это будет логично, планирую поднять собственный репозиторий, чтобы хранить там свои какие-то переиспользуемые пакеты или пакеты, предназначенные только для движка.
Вообще, если вы используете для работы не встроенный редактор скриптов, а VS, то стандартного нюгет пакета вполне хватит на первое время, но так как я сморю чуть дальше и чуть глубже, я пошёл по пути собственного инструмента. Дополнительно: я пишу на шарпе, а Годот по умолчанию работает с GDScript и шарп у него подключается отдельно. Я сбилдил свою версию так, чтоб она по умолчанию работала с шарпом.
И так, что же у нас тут по менеджеру пакетов?
В папочке modules/mono/editor/GodotTools/GodotTools/ создаём новую папку нашего инструмента, я назвал её NuGet на текущем этапе. При доработках думаю, переименую уже во что-то более универсальное.
Внутри папки создаётся три файла: NuGetManagerWindow.cs
Класс описывающий окно, наследует и имплементрирует ConfirmationDialog, ISerializationListener. Описать обязательно несколько методов:
public override void _Ready()
{
Title = "NuGet Package Manager";
Size = new Vector2I(800, 600);
Exclusive = true;
_apiClient = new NuGetApiClient();
BuildUI();
RefreshInstalledPackages();
}
BuildUI и RefreshInstalledPackages соответственно это не обязательные прям с точки зрения Годота методы, просто я в них вынес нужную мне логику.
Второй класс NuGetPackageInfo - это буквально описание каждого пакета. То есть просто DTO для пакетов с основной информации:
/// <summary>
/// Represents a NuGet package from search results.
/// </summary>
public class NuGetPackageInfo
{
[JsonPropertyName("id")]
public string Id { get; set; } = string.Empty;
[JsonPropertyName("version")]
public string Version { get; set; } = string.Empty;
[JsonPropertyName("description")]
public string Description { get; set; } = string.Empty;
[JsonPropertyName("authors")]
[JsonConverter(typeof(StringOrArrayConverter))]
public List<string> Authors { get; set; } = new();
[JsonPropertyName("projectUrl")]
public string ProjectUrl { get; set; } = string.Empty;
[JsonPropertyName("iconUrl")]
public string IconUrl { get; set; } = string.Empty;
[JsonPropertyName("totalDownloads")]
public long TotalDownloads { get; set; }
[JsonPropertyName("versions")]
public List<NuGetVersionInfo> Versions { get; set; } = new();
public string AuthorsString => string.Join(", ", Authors);
}
Ну и NuGetApiClient – логично, что дёргает запросы в сторону нюгета, для получения информации о пакетах.
После того, как мы всё что нужно описали, надо отредактировать GodotSharpEditor.cs и добавить туда ссылку на наше окно, добавить пункт меню и его обработчик для открытия нашего окна
_menuPopup.AddItem("NuGet Packages...".TTR(), (int)MenuOptions.NuGetPackages);
private enum MenuOptions
{
CreateSln,
NuGetPackages,
}
private void OpenNuGetManager()
{
if (!File.Exists(GodotSharpDirs.ProjectCsProjPath))
{
ShowErrorDialog("No C# project found. Create a C# solution first.".TTR());
return;
}
if (_nugetWindow == null)
{
_nugetWindow = new NuGetManagerWindow();
_nugetWindow.SetUnparentWhenInvisible(true);
}
EditorInterface.Singleton.PopupDialogCentered(_nugetWindow);
}
На выходе получаем удобный способ управления внешними пакетами
Если есть упоротые, которые пойти по пути внесения правок в исходники движка, могу поделиться решением и скинуть архив с файликами.
Что?
Да не такая! Вот же она:
Это лягушка, обитающая в Южной Америке. Из-за огромного рта её также называют Пакманом. Собственно, основное название также отражает внешний вид. Лягушка вся покрыта разноцветными полосами и пятнами, а над глазами у неё есть небольшие выросты, напоминающие рога.
Рогатка очень крупная, размеры достигают 16 см. Прокормиться такому внушительному созданию трудно, так что лягушка обладает исключительной прожорливостью. Она буквально пытается поглотить всё, что видит, вплоть до грызунов, небольших птиц, ящериц и других лягушек. Даже если от этого задохнётся.
Рогатка может даже больно укусить человека, если посчитает его угрозой.
Тем не менее, большое количество жировых отложений позволяет лягушке долго голодать.
И вновь всем мяу ква! Думали, раз жабий челлендж завершён, то жаб больше не будет? Как бы не так! Теперь это станет нерегулярной жабьей рубрикой. Ура? Ура!
На самом деле удивляюсь, почему начала не с него – он же буквально первое, что приходит в голову при слове «лягушка». Да и вышивается очень легко: всего 4 цвета ниток, весь бэкстич счётный.
Думаю, никого не удивлю, если скажу, что он тоже стал магнитиком и отправился на мой системный блок к остальным жабкам. Раньше у меня на столе была капибармия (привет @capybarystic), а теперь – жабармия.
Это среда, мои чуваки!
Кукуха улетела...
да не, это норма к которой привыкаешь