Skip to content
This repository has been archived by the owner on Oct 23, 2024. It is now read-only.

Rework na iluminação e ciclo de dia e noite. #44

Merged
merged 22 commits into from
Dec 17, 2023
Merged

Rework na iluminação e ciclo de dia e noite. #44

merged 22 commits into from
Dec 17, 2023

Conversation

DoutorWhite
Copy link
Collaborator

@DoutorWhite DoutorWhite commented Dec 11, 2023

About the PR

Adiciona interpolação de luz e cor (são separados, podem ser ativados individualmente.) e mais liberdade para alterar a iluminação do jogo via comandos. Remove e altera a maioria das CVars do PR antigo para que sejam mais "direto ao ponto".

Why / Balance

Em favor da estética, para as luzes não mudarem abruptamente, e dar mais liberdade pros admins para controlar a iluminação do jogo.

Technical details

A iluminação e cor é calculada em "tempo real" atráves de quatro funções trigonometricas. A frequência em que as lâmpadas são atualizadas depende do incremento do nível de luminosidade, desta forma, é possível ajustar o quão "suave" é a transição das luzes. Os impactos no desempenho se demonstraram mínimos, senão, inexistentes, mas reforço que os testes foram todos em máquina local, na plataforma Windows.

Update: Agora é tudo feito via componente, que passa os valores pras classes de entidade de sistema realizarem os cálculos envolvendo a luz.

Changelog
-add: Interpolação de luz e cor
-add: Deve funcionar em planetas agora
-edit: Transfere a maior parte das CVars antigas para um componente ajustável

Copy link
Owner

@rbertoche rbertoche left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Além das coisas que eu tava te falando por dm, seguem aí algumas alterações pra fazer. Vou tentar marcar aqui o que realmente precisa ser feito.
Abraço

var regex = new Regex(@"^#(\d+.?\d*)-(\d+.?\d*)-(\d+.?\d*)$");
var rgb_energy = _cfg.GetCVar(CCVars.NightLightRGBIntensity);
var result = regex.Match(rgb_energy);
Match match;
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As alterações aqui em UpdateLight são meio compridas e quando mudarem algo aqui upstream vai ser bem chato fazer merge. Seria bom isolar isso em uma fução que retorna a cor. De preferência no seu system, mas coisas em funções novas ainda conflitam mas pelo menos é mais fácil fazer o merge.
Se vc tiver problemas em pegar o singleton (com a tal da "injeção de dependência") me fala, eu nunca fiz isso em sistema novo mas parece não ter mistério.

@@ -480,30 +493,45 @@ private void OnEmpPulse(EntityUid uid, PoweredLightComponent component, ref EmpP
args.Affected = true;
}

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Esses métodos que não tem no upstream, precisam mesmo estar nesse sistema?
Pelo que eu tô vendo as outras alterações realmente precisam estar aqui, como por exemplo setar a cor certa quando a luz é ligada. Mas tudo isso precisa morar nesse arquivo? Seria legal passar o que desse pro sistema novo.

private double _greenLevel;
private double _blueLevel;
private double _lightClip;
private readonly Regex _regex = new Regex(@"^#([A-Fa-f0-9]){6}$");
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Eu não faço idéia como é a inicialização de objetos declaradas fora do escopo de uma classe ou função no C#, o que em C++ é chamado de inicialização estática. Por exemplo, isso aqui claramente nunca vai ser apagado, o que pra mim não é um problema pra um regex, mas só pra ilustrar. Não deve dar nada, eu só não sei como isso funciona direito, mas isso foi intencional né?

Content.Server/Time/DayCycleSystem.cs Show resolved Hide resolved
Content.Shared/CCVar/CCVars.cs Outdated Show resolved Hide resolved
Copy link
Owner

@rbertoche rbertoche left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Muito bom. Acabou q nesse PR vc nao só adicionou as coisas novas mas também melhorou coisas do PR anterior.
Vou fazer merge aqui.

@rbertoche rbertoche merged commit 2012458 into rbertoche:pirata Dec 17, 2023
5 checks passed
rbertoche pushed a commit that referenced this pull request Aug 25, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants