[JS] Gestion des jours, season, temperature

Cette section est destinée aux scripts partagés par la communauté. Chaque post est destiné à un script. Suivez bien les recommandations.
Hoslety
Messages : 25
Inscription : 11 Juin 2015 00:27

[JS] Gestion des jours, season, temperature

Message par Hoslety » 25 Juil 2015 13:38

Bonjour,

Voiçi un petit script en JS que je viens de faire, il sera amélioré avec le temps mais je vous le montre pour plusieurs choses:
Avoir votre avis
Avoir des idées
partagée en même temps avec la Communauté une base de script ;)

Code : Tout sélectionner

private var TimeOneDay : float = 86400; // temps pour 1Jours réel 
var TimerOneDayFloat : float; // timer de la journée
var TimerOneDay : int; //timer de la journée en entier
var CountDay : int = 0; // Nombre de jours passé
var HoursRealyForOneDayGame : float; // Heure reel pour 1 jours en jeux a mettre avant de lancé le jeux
var MultiplicateurTime : float;


//time
var Hours : int;
var Minutes : int;
var Secondes : int;

//variable de date
var Days : int;
var Month : int;
var years : int;
//var NameDay : nameDay; //todo
var NameMonth : nameMonth;

//variable des saison
var Season : season;


var currentPhase : DayPhase;


//variable soleil//
var Sun : GameObject;
var SunHoursByDay : float;// todo a définir via les saison
var MultiplicateurSunTime : float; //todo ajouté le multiplicateur en foncrion du nombre d heure de la saison

//variable temperature
var WorldTemperature : float;
private var MaxSummerTemperature : float = 40.0;
private var MinSummerTemperature : float = 20.0;
private var MaxAutumnTemperature : float = 20.0;
private var MinAutumnTemperature : float = 5.0;
private var MaxWinterTemperature : float = 12.0;
private var MinWinterTemperature : float = -12.0;
private var MaxSpringTemperature : float = 20.0;
private var MinSpringTemperature : float = 5.0;
private var TemperatureDay : float;
private var TemperatureNight : float;
private var TemperatureTempo : float;



function Start()
{
Sun = GameObject.Find("Sun");
TimerOneDayFloat = 43200; //début du jeux a midi
//Initialisation du multiplicateur
MultiplicateurTime = 24.0 / HoursRealyForOneDayGame;
Days = 21;
Month = 01;
years = 2015;
NameMonth = NameMonth.January;
SetSeason();
SetNameMonth();
SetTemperatureOfDay();
}


function Update() 
{
//calcule des jours, mois, année dans le jeux//
TimerOneDay = TimerOneDayFloat;
TimerOneDayFloat += Time.deltaTime * MultiplicateurTime;
if(TimerOneDay >= TimeOneDay)
	{
		TimerOneDayFloat = 0;
		CountDay += 1;
		Days += 1;
		SetSeason();
		SetTemperatureOfDay();
	}
if(Days>30)
	{
		Month += 1;
		SetNameMonth();
		Days = 1;
	}
if(Month > 12)
	{
		years +=1;
		Month = 1;
	}
//fin du calcule jours mois année //
//définition de la phase du jour

//déplacement  du soleil
Sun.transform.Rotate((Time.deltaTime / 240) * MultiplicateurTime, 0, 0);
//todo ajouté déplacement latérale du soleil

//Calcule l heure dans le jeux
Secondes = TimerOneDay % 60;
Minutes = TimerOneDay / 60;
Hours = Minutes / 60;
Minutes = Minutes % 60;
ChangeCurrentPhase();
} 
//fonction de selection du nom du mois

function SetNameMonth()
{
if(Month == 01)
	{
	NameMonth = NameMonth.January;
	}
else if(Month == 02)
	{
	NameMonth = NameMonth.February;
	}
else if(Month == 03)
	{
	NameMonth = NameMonth.March;
	}
else if(Month == 04)
	{
	NameMonth = NameMonth.April;
	}
else if(Month == 05)
	{
	NameMonth = NameMonth.May;
	}
else if(Month == 06)
	{
	NameMonth = NameMonth.June;
	}
else if(Month == 07)
	{
	NameMonth = NameMonth.July;
	}
else if(Month == 08)
	{
	NameMonth = NameMonth.August;
	}
else if(Month == 09)
	{
	NameMonth = NameMonth.September;
	}
else if(Month == 10)
	{
	NameMonth = NameMonth.October;
	}
else if(Month == 11)
	{
	NameMonth = NameMonth.November;
	}
else if(Month == 12)
	{
	NameMonth = NameMonth.December;
	}
else
	{
	Debug.Log("erreur de selection des nom des Mois");
	}
}
//fonction de selection de la saison par rapport a la date

function ChangeCurrentPhase()
{
if(Hours >= 0 && Hours <= 6 && currentPhase != DayPhase.Night)
	{
		currentPhase = DayPhase.Night;
		WorldTemperature = TemperatureNight;
		Debug.Log("Temperature de nuit " + WorldTemperature);
	}
else if(Hours >= 6 && Hours < 12 && currentPhase != DayPhase.Dawn)
	{
		currentPhase = DayPhase.Dawn;
		WorldTemperature = (TemperatureDay - 5);
		Debug.Log("Temperature du matin " + WorldTemperature);
	}
else if(Hours >= 12 && Hours < 18 && currentPhase != DayPhase.Day)
	{
		currentPhase = DayPhase.Day;
		WorldTemperature = (TemperatureDay);
		Debug.Log("Temperature de journée " + WorldTemperature);
	}
else if(Hours >= 18 && Hours < 24 && currentPhase != DayPhase.Dusk)
	{
		currentPhase = DayPhase.Dusk;
		WorldTemperature = (TemperatureDay - 3);
		Debug.Log("Temperature du soir " + WorldTemperature);
	}
}

function SetSeason()
{
	if(NameMonth == NameMonth.January || NameMonth == NameMonth.February)
	{
		if(Season !=Season.Winter)
		{
			Season = Season.Winter;
		}
		
	}
	else if(NameMonth == NameMonth.March && Days <21)
	{
		if(Season !=Season.Winter)
		{
			Season = Season.Winter;
		}
	}
	else if(NameMonth == NameMonth.December && Days >=21)
	{
		if(Season !=Season.Winter)
		{
			Season = Season.Winter;
		}
	}
	else if(NameMonth == NameMonth.March && Days >=21)
	{
		if(Season !=Season.Spring)
		{
			Season = Season.Spring;
		}
	}
	else if(NameMonth == NameMonth.April || NameMonth == NameMonth.May)
	{
		if(Season !=Season.Spring)
		{
			Season = Season.Spring;
		}
	}
	else if(NameMonth == NameMonth.June && Days <21)
	{
		if(Season !=Season.Spring)
		{
			Season = Season.Spring;
		}
	}
	else if(NameMonth == NameMonth.June && Days >=21)
	{
		if(Season !=Season.Summer)
		{
			Season = Season.Summer;
		}
	}
	else if(NameMonth == NameMonth.September && Days <21)
	{
		if(Season !=Season.Summer)
		{	
			Season = Season.Summer;
		}
	}
	else if(NameMonth == NameMonth.July || NameMonth == NameMonth.August)
	{
		if(Season !=Season.Summer)
		{
			Season = Season.Summer;
		}
	}
	else
	{
		if(Season !=Season.Autumn)
		{
			Season = Season.Autumn;
		}
	}
}

function SetTemperatureOfDay()
{
if(Season == Season.Summer)
	{
		TemperatureDay = Random.Range(MinSummerTemperature, MaxSummerTemperature);
		TemperatureNight = Random.Range(MinSummerTemperature, MaxSummerTemperature);
		if(TemperatureDay < TemperatureNight)
			{
				TemperatureTempo = TemperatureDay;
				TemperatureDay = TemperatureNight;
				TemperatureNight = TemperatureTempo;
			}	
	}
else if(Season == Season.Autumn)
	{
		TemperatureDay = Random.Range(MinAutumnTemperature, MaxAutumnTemperature);
		TemperatureNight = Random.Range(MinAutumnTemperature, MaxAutumnTemperature);
		if(TemperatureDay < TemperatureNight)
			{
				TemperatureTempo = TemperatureDay;
				TemperatureDay = TemperatureNight;
				TemperatureNight = TemperatureTempo;
			}	
	}
else if(Season == Season.Winter)
	{
		TemperatureDay = Random.Range(MinWinterTemperature, MaxWinterTemperature);
		TemperatureNight = Random.Range(MinWinterTemperature, MaxWinterTemperature);
		if(TemperatureDay < TemperatureNight)
			{
				TemperatureTempo = TemperatureDay;
				TemperatureDay = TemperatureNight;
				TemperatureNight = TemperatureTempo;
			}			
	}
else if(Season == Season.Spring)
	{
		TemperatureDay = Random.Range(MinSpringTemperature, MaxSpringTemperature);
		TemperatureNight = Random.Range(MinSpringTemperature, MaxSpringTemperature);
		if(TemperatureDay < TemperatureNight)
			{
				TemperatureTempo = TemperatureDay;
				TemperatureDay = TemperatureNight;
				TemperatureNight = TemperatureTempo;
			}			
	}


}


public enum nameMonth
{
January = 0,               	
February = 1,               
March = 2,            
April = 3,
May = 4,
June = 5,
July = 6,
August = 7,    
September = 8,
October = 9,
November = 10,
December = 11,
}

public enum DayPhase
{
	    Night = 0,
        Dawn = 1,
        Day = 2,
        Dusk = 3
}
/*
public enum nameDay
{
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
}
*/



public enum season
{
Summer = 0,
Autumn = 1,
Winter = 2,
Spring = 3,
}
Merci a vous;)

Hoslety
Messages : 25
Inscription : 11 Juin 2015 00:27

Re: [JS] Gestion des jours, season, temperature

Message par Hoslety » 30 Juil 2015 03:27

Petit up ...

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: [JS] Gestion des jours, season, temperature

Message par Alesk » 30 Juil 2015 11:15

Salut,

Je vois que tu as mis 30 jours pour tous les mois... Je pense que tu devrais essayer d'utiliser ceci : https://msdn.microsoft.com/fr-fr/librar ... 10%29.aspx
afin de récupérer les infos qui te manquent.

Hoslety
Messages : 25
Inscription : 11 Juin 2015 00:27

Re: [JS] Gestion des jours, season, temperature

Message par Hoslety » 01 Août 2015 03:23

Merci la modifications etais prevue.
Je devais juste trouver une formule pour le mois de février. Je vais essayer avec ton lien
merci

Répondre

Revenir vers « Scripts »