This commit is contained in:
tzim 2013-04-16 15:25:46 +00:00
parent d897ecc4ab
commit ddbc724475
2 changed files with 109 additions and 112 deletions

View file

@ -1,20 +1,12 @@
<Properties> <Properties>
<MonoDevelop.Ide.Workspace ActiveConfiguration="Debug|x86" /> <MonoDevelop.Ide.Workspace ActiveConfiguration="Debug|x86" />
<MonoDevelop.Ide.Workbench ActiveDocument="DMX-2.0/SeqLinUI.cs"> <MonoDevelop.Ide.Workbench ActiveDocument="DMX-2.0/SequenceurLineaire.cs">
<Files> <Files>
<File FileName="DMX-2.0/Conduite.cs" Line="40" Column="23" /> <File FileName="DMX-2.0/SeqLinUI.cs" Line="127" Column="4" />
<File FileName="DMX-2.0/AssemblyInfo.cs" Line="1" Column="1" /> <File FileName="DMX-2.0/MainWindow.cs" Line="98" Column="47" />
<File FileName="DMX-2.0/UniversDMX.cs" Line="20" Column="13" /> <File FileName="DMX-2.0/SequenceurLineaire.cs" Line="69" Column="22" />
<File FileName="DMX-2.0/Conduite.cs" Line="29" Column="17" />
<File FileName="DMX-2.0/Sequenceur.cs" Line="42" Column="4" /> <File FileName="DMX-2.0/Sequenceur.cs" Line="42" Column="4" />
<File FileName="DMX-2.0/SequenceurLineaire.cs" Line="9" Column="3" />
<File FileName="DMX-2.0/IDriverDMX.cs" Line="13" Column="1" />
<File FileName="DMX-2.0/Main.cs" Line="17" Column="4" />
<File FileName="DMX-2.0/MainWindow.cs" Line="74" Column="4" />
<File FileName="DMX-2.0/SeqLinUI.cs" Line="38" Column="4" />
<File FileName="DMX-2.0/SequenceurUI.cs" Line="21" Column="3" />
<File FileName="DMX-2.0.sln" Line="4" Column="89" />
<File FileName="DMX-2.0/SelSeqCircuits.cs" Line="16" Column="18" />
<File FileName="DMX-2.0/GestionCircuits.cs" Line="104" Column="33" />
</Files> </Files>
</MonoDevelop.Ide.Workbench> </MonoDevelop.Ide.Workbench>
<MonoDevelop.Ide.DebuggingService.Breakpoints> <MonoDevelop.Ide.DebuggingService.Breakpoints>

View file

@ -6,25 +6,19 @@ namespace DMX2
{ {
public class SequenceurLineaire : Sequenceur public class SequenceurLineaire : Sequenceur
{ {
public class Effet
TimeSpan timeStamp = TimeSpan.Zero; {
public TimeSpan TimeStamp {
get {
return timeStamp;
}
}
public class Effet {
string _nom; string _nom;
public Effet(string nom, Dictionary<Circuit,int> valeurs, TimeSpan duree, TimeSpan transition)
public Effet (string nom, Dictionary<Circuit,int> valeurs, TimeSpan duree, TimeSpan transition)
{ {
_nom=nom; _nom = nom;
_valeurs = new Dictionary<Circuit, int>(valeurs); _valeurs = new Dictionary<Circuit, int> (valeurs);
_duree=duree; _duree = duree;
_transition=transition; _transition = transition;
} }
public string Nom { public string Nom {
get { get {
return _nom; return _nom;
@ -32,23 +26,29 @@ namespace DMX2
} }
Dictionary<Circuit,int> _valeurs; Dictionary<Circuit,int> _valeurs;
public int this [Circuit index] { public int this [Circuit index] {
get { get {
if(!_valeurs.ContainsKey(index)) if (!_valeurs.ContainsKey (index))
_valeurs.Add(index,0); _valeurs.Add (index, 0);
return _valeurs[index]; return _valeurs [index];
} }
} }
public void RetireCircuit(Circuit c){
_valeurs.Remove(c); public void RetireCircuit (Circuit c)
{
_valeurs.Remove (c);
} }
TimeSpan _duree =TimeSpan.Zero ;
TimeSpan _duree = TimeSpan.Zero ;
TimeSpan _transition = TimeSpan.Zero; TimeSpan _transition = TimeSpan.Zero;
public TimeSpan Duree { public TimeSpan Duree {
get { get {
return _duree; return _duree;
} }
} }
public TimeSpan Transition { public TimeSpan Transition {
get { get {
return _transition; return _transition;
@ -58,64 +58,15 @@ namespace DMX2
} }
List<Circuit> circuitsSeq = new List<Circuit>(); TimeSpan timeStamp = TimeSpan.Zero;
List<Circuit> circuitsSeq = new List<Circuit> ();
public ReadOnlyCollection<Circuit> Circuits { List<Effet> effets = new List<Effet> ();
get { Effet effetcourrant = null;
return circuitsSeq.AsReadOnly(); bool enTransition = false;
} Dictionary<Circuit,int> valeurscourantes = new Dictionary<Circuit, int> ();
} Dictionary<Circuit,int> valeursinitiales = new Dictionary<Circuit, int> ();
Dictionary<Circuit,bool> valeurschangees = new Dictionary<Circuit, bool> ();
public void ChangeCircuits (System.Collections.Generic.List<Circuit> list) SeqLinUI ui = null;
{
foreach (var c in circuitsSeq.ToArray()) {
if(!list.Contains(c))
RetireCircuit(c);
}
foreach(var c in list)
if(!circuitsSeq.Contains(c))
AjouteCircuit(c);
circuitsSeq = list;
}
void AjouteCircuit (Circuit c)
{
valeurscourantes[c]=0;
valeursinitiales[c]=0;
}
private void RetireCircuit(Circuit c)
{
foreach (var ef in effets) {
ef.RetireCircuit(c);
}
circuitsSeq.Remove(c);
valeurscourantes.Remove(c);
valeursinitiales.Remove(c);
}
public override void MajCircuitsSupprimes ()
{
foreach (var c in circuitsSeq.ToArray()) {
if(!Conduite.Courante.Circuits.Contains(c))
RetireCircuit(c);
}
}
List<Effet> effets = new List<Effet>();
public ReadOnlyCollection<Effet> Effets {
get {
return effets.AsReadOnly() ;
}
}
Effet effetcourrant=null;
bool enTransition=false;
Dictionary<Circuit,int> valeurscourantes = new Dictionary<Circuit, int>();
Dictionary<Circuit,int> valeursinitiales = new Dictionary<Circuit, int>();
Dictionary<Circuit,bool> valeurschangees = new Dictionary<Circuit, bool>();
public SequenceurLineaire () public SequenceurLineaire ()
{ {
@ -126,22 +77,76 @@ namespace DMX2
} }
public TimeSpan TimeStamp {
get {
return timeStamp;
}
}
public ReadOnlyCollection<Circuit> Circuits {
get {
return circuitsSeq.AsReadOnly ();
}
}
public ReadOnlyCollection<Effet> Effets {
get {
return effets.AsReadOnly ();
}
}
public void ChangeCircuits (System.Collections.Generic.List<Circuit> list)
{
foreach (var c in circuitsSeq.ToArray()) {
if (!list.Contains (c))
RetireCircuit (c);
}
foreach (var c in list)
if (!circuitsSeq.Contains (c))
AjouteCircuit (c);
circuitsSeq = list;
}
void AjouteCircuit (Circuit c)
{
valeurscourantes [c] = 0;
valeursinitiales [c] = 0;
}
private void RetireCircuit (Circuit c)
{
foreach (var ef in effets) {
ef.RetireCircuit (c);
}
circuitsSeq.Remove (c);
valeurscourantes.Remove (c);
valeursinitiales.Remove (c);
}
public override void MajCircuitsSupprimes ()
{
foreach (var c in circuitsSeq.ToArray()) {
if (!Conduite.Courante.Circuits.Contains (c))
RetireCircuit (c);
}
}
public override int EtatCircuit (Circuit c) public override int EtatCircuit (Circuit c)
{ {
if (!circuitsSeq.Contains (c)) if (!circuitsSeq.Contains (c))
return 0; return 0;
return valeurscourantes[c]; return valeurscourantes [c];
} }
public void ChangeCircuit (Circuit c, int value) public void ChangeCircuit (Circuit c, int value)
{ {
valeurschangees[c]=true; valeurschangees [c] = true;
valeurscourantes[c]= value; valeurscourantes [c] = value;
} }
public bool EstChange (Circuit c) public bool EstChange (Circuit c)
{ {
return valeurschangees.ContainsKey(c); return valeurschangees.ContainsKey (c);
} }
public override void Tick (TimeSpan time) public override void Tick (TimeSpan time)
@ -150,7 +155,7 @@ namespace DMX2
if (enTransition) { if (enTransition) {
if (timeStamp < effetcourrant.Transition) { if (timeStamp < effetcourrant.Transition) {
foreach (Circuit c in circuitsSeq) { foreach (Circuit c in circuitsSeq) {
if (valeurscourantes [c] != effetcourrant [c] && !valeurschangees.ContainsKey(c)) { if (valeurscourantes [c] != effetcourrant [c] && !valeurschangees.ContainsKey (c)) {
valeurscourantes [c] = (effetcourrant [c] - valeursinitiales [c]) * effetcourrant.Duree.Milliseconds / time.Milliseconds + valeursinitiales [c]; valeurscourantes [c] = (effetcourrant [c] - valeursinitiales [c]) * effetcourrant.Duree.Milliseconds / time.Milliseconds + valeursinitiales [c];
} }
} }
@ -159,45 +164,45 @@ namespace DMX2
} }
} }
if (timeStamp >= effetcourrant.Duree) { if (timeStamp >= effetcourrant.Duree) {
int index = effets.IndexOf(effetcourrant) +1; int index = effets.IndexOf (effetcourrant) + 1;
if (index < effets.Count) ChangeEffet(index); if (index < effets.Count)
ChangeEffet (index);
} }
} }
void FinDeTransition () void FinDeTransition ()
{ {
enTransition = false; enTransition = false;
foreach( Circuit c in circuitsSeq) foreach (Circuit c in circuitsSeq)
valeurscourantes[c]=effetcourrant[c]; valeurscourantes [c] = effetcourrant [c];
} }
public void ChangeEffet (int index)
public void ChangeEffet(int index)
{ {
effetcourrant = effets[index]; effetcourrant = effets [index];
valeurschangees.Clear(); valeurschangees.Clear ();
valeursinitiales = new Dictionary<Circuit, int>(valeurscourantes); valeursinitiales = new Dictionary<Circuit, int> (valeurscourantes);
enTransition = true; enTransition = true;
timeStamp = TimeSpan.Zero; timeStamp = TimeSpan.Zero;
} }
public void SauveEffet (string nom, TimeSpan duree, TimeSpan transition) public void SauveEffet (string nom, TimeSpan duree, TimeSpan transition)
{ {
effets.Add(new Effet(nom, valeurscourantes,duree,transition)); effets.Add (new Effet (nom, valeurscourantes, duree, transition));
} }
public override System.Xml.XmlElement Save () public override System.Xml.XmlElement Save ()
{ {
throw new System.NotImplementedException (); throw new System.NotImplementedException ();
} }
SeqLinUI ui=null;
public override SequenceurUI GetUI () public override SequenceurUI GetUI ()
{ {
if (ui == null) { if (ui == null) {
ui = new SeqLinUI (this); ui = new SeqLinUI (this);
ui.Destroyed += UiDestroyed;; ui.Destroyed += UiDestroyed;
} }
return ui; return ui;
@ -205,7 +210,7 @@ namespace DMX2
void UiDestroyed (object sender, EventArgs e) void UiDestroyed (object sender, EventArgs e)
{ {
ui=null; ui = null;
} }