This commit is contained in:
tzim 2013-04-09 10:06:58 +00:00
parent 408c002c47
commit ea2847a520
5 changed files with 120 additions and 23 deletions

View file

@ -1,6 +1,6 @@
<Properties> <Properties>
<MonoDevelop.Ide.Workspace ActiveConfiguration="Debug|x86" /> <MonoDevelop.Ide.Workspace ActiveConfiguration="Debug|x86" />
<MonoDevelop.Ide.Workbench ActiveDocument="DMX-2.0/SequenceurLineaire.cs"> <MonoDevelop.Ide.Workbench ActiveDocument="DMX-2.0/IDriverDMX.cs">
<Files> <Files>
<File FileName="DMX-2.0/Main.cs" Line="4" Column="15" /> <File FileName="DMX-2.0/Main.cs" Line="4" Column="15" />
<File FileName="DMX-2.0/MainWindow.cs" Line="17" Column="1" /> <File FileName="DMX-2.0/MainWindow.cs" Line="17" Column="1" />
@ -8,7 +8,8 @@
<File FileName="DMX-2.0/AssemblyInfo.cs" Line="1" Column="1" /> <File FileName="DMX-2.0/AssemblyInfo.cs" Line="1" Column="1" />
<File FileName="DMX-2.0/UniversDMX.cs" Line="48" Column="12" /> <File FileName="DMX-2.0/UniversDMX.cs" Line="48" Column="12" />
<File FileName="DMX-2.0/Sequenceur.cs" Line="31" Column="1" /> <File FileName="DMX-2.0/Sequenceur.cs" Line="31" Column="1" />
<File FileName="DMX-2.0/SequenceurLineaire.cs" Line="28" Column="7" /> <File FileName="DMX-2.0/SequenceurLineaire.cs" Line="6" Column="22" />
<File FileName="DMX-2.0/IDriverDMX.cs" Line="13" Column="1" />
</Files> </Files>
</MonoDevelop.Ide.Workbench> </MonoDevelop.Ide.Workbench>
<MonoDevelop.Ide.DebuggingService.Breakpoints> <MonoDevelop.Ide.DebuggingService.Breakpoints>

View file

@ -57,6 +57,7 @@
<Package>gtk-sharp-2.0</Package> <Package>gtk-sharp-2.0</Package>
</Reference> </Reference>
<Reference Include="Mono.Posix" /> <Reference Include="Mono.Posix" />
<Reference Include="System.Xml" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<EmbeddedResource Include="gtk-gui\gui.stetic"> <EmbeddedResource Include="gtk-gui\gui.stetic">
@ -73,6 +74,7 @@
<Compile Include="UniversDMX.cs" /> <Compile Include="UniversDMX.cs" />
<Compile Include="Sequenceur.cs" /> <Compile Include="Sequenceur.cs" />
<Compile Include="SequenceurLineaire.cs" /> <Compile Include="SequenceurLineaire.cs" />
<Compile Include="IDriverDMX.cs" />
</ItemGroup> </ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
</Project> </Project>

View file

@ -1,12 +1,23 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Xml;
namespace DMX2 namespace DMX2
{ {
public abstract class Sequenceur public abstract class Sequenceur
{ {
static int idmax;
public Sequenceur (int id)
{
this.id = id;
idmax = Math.Max(id,idmax);
}
public Sequenceur () public Sequenceur ()
{ {
id = idmax++;
} }
int id; int id;
@ -20,11 +31,12 @@ namespace DMX2
public abstract int EtatCircuit(Circuit c); public abstract int EtatCircuit(Circuit c);
public abstract void Tick(TimeSpan time); public abstract void Tick(TimeSpan time);
public static Sequenceur Load() public static Sequenceur Load(XmlElement el)
{ {
throw new NotImplementedException(); return null;
} }
public abstract void Save();
public abstract XmlElement Save();
} }
} }

View file

@ -1,12 +1,13 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.ObjectModel;
namespace DMX2 namespace DMX2
{ {
public class SequenceurLineaire : Sequenceur public class SequenceurLineaire : Sequenceur
{ {
TimeSpan timeStamp; TimeSpan timeStamp = TimeSpan.Zero;
public TimeSpan TimeStamp { public TimeSpan TimeStamp {
get { get {
@ -15,37 +16,69 @@ namespace DMX2
} }
public class Effet { public class Effet {
public string Nom;
Dictionary<Circuit,int> valeurs = new Dictionary<Circuit, int>(); string _nom;
public Effet(string nom, Dictionary<Circuit,int> valeurs, TimeSpan duree, TimeSpan transition)
{
_nom=nom;
_valeurs = new Dictionary<Circuit, int>(valeurs);
_duree=duree;
_transition=transition;
}
public string Nom {
get {
return _nom;
}
}
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];
}
set {
if(valeurs.ContainsKey (index))
valeurs[index] = value;
else
valeurs.Add(index,value);
} }
} }
public void RetireCircuit(Circuit c){ public void RetireCircuit(Circuit c){
valeurs.Remove(c); _valeurs.Remove(c);
} }
public TimeSpan Duree; TimeSpan _duree =TimeSpan.Zero ;
public TimeSpan Transition; TimeSpan _transition = TimeSpan.Zero;
public TimeSpan Duree {
get {
return _duree;
}
}
public TimeSpan Transition {
get {
return _transition;
}
}
} }
List<Circuit> circuitsSeq = new List<Circuit>(); List<Circuit> circuitsSeq = new List<Circuit>();
List<Effet> effets; List<Effet> effets = new List<Effet>();
public ReadOnlyCollection<Effet> Effets {
get {
return effets.AsReadOnly() ;
}
}
Effet effetcourrant=null;
bool enTransition=false; bool enTransition=false;
Dictionary<Circuit,int> valeurscourantes = new Dictionary<Circuit, int>();
Dictionary<Circuit,int> valeursinitiales = new Dictionary<Circuit, int>();
public SequenceurLineaire () public SequenceurLineaire ()
{ {
}
public SequenceurLineaire (int id) :base (id)
{
} }
@ -53,11 +86,53 @@ namespace DMX2
{ {
if (!circuitsSeq.Contains (c)) if (!circuitsSeq.Contains (c))
return 0; return 0;
return valeurscourantes[c];
} }
public override void Tick (TimeSpan time) public override void Tick (TimeSpan time)
{ {
timeStamp += time;
if (enTransition) {
if(timeStamp<effetcourrant.Duree){
foreach( Circuit c in circuitsSeq)
{
if(valeurscourantes[c] != effetcourrant[c])
{
valeurscourantes[c] = (effetcourrant[c]-valeursinitiales[c]) * effetcourrant.Duree.Milliseconds / time.Milliseconds + valeursinitiales[c];
}
}
}
else
{
FinDeTransition();
}
}
}
void FinDeTransition ()
{
enTransition = false;
foreach( Circuit c in circuitsSeq)
valeurscourantes[c]=effetcourrant[c];
}
public void ChangeEffet(Effet effet)
{
effetcourrant = effet;
valeursinitiales = new Dictionary<Circuit, int>(valeurscourantes);
enTransition = true;
timeStamp = TimeSpan.Zero;
}
public void SauveEffet (string nom, TimeSpan duree, TimeSpan transition)
{
effets.Add(new Effet(nom, valeurscourantes,duree,transition));
}
public override System.Xml.XmlElement Save ()
{
throw new System.NotImplementedException ();
} }
} }

View file

@ -7,8 +7,15 @@ namespace DMX2
public class UniversDMX public class UniversDMX
{ {
Grada[] _gradas = new Grada[512]; static int nb=1;
public UniversDMX()
{
Nom = "Univers DMX n°"+ nb++.ToString();
}
Grada[] _gradas = new Grada[512];
public string Nom;
public enum FTransfer { public enum FTransfer {
lineaire, lineaire,
log, log,