public override void RunNamedEvent(string name) { if (this.Disposed == true) { throw new ObjectDisposedException(this.GetType().Name); } string ev, group; if (name.StartsWith("cvar read") == true) { ev = name; group = ev.Substring(10); if (group == _updateGroup.ToString()) { UpdateVariables(true, true); } } else if (name.StartsWith("cvar write") == true) { ev = name; group = ev.Substring(11); if (group == _updateGroup.ToString()) { UpdateVariables(false, true); } } }
public override void RunNamedEvent(string name) { if (name.StartsWith("cvar read") == true) { if (name.Substring(10) == _cvarGroup.ToString()) { UpdateConsoleVariables(true, true); } } else if (name.StartsWith("cvar write") == true) { if (name.Substring(11) == _cvarGroup.ToString()) { UpdateConsoleVariables(false, true); } } }
protected override void PostParse() { base.PostParse(); _bindName.SetGuiInfo(this.UserInterface.State, _bindName.ToString()); _bindName.Update(); // bindName = state.GetString("bind"); this.Flags |= WindowFlags.HoldCapture | WindowFlags.CanFocus; }
private static void Script_SetFocus(idWindow window, List <idWinGuiScript> source) { idWinString parameter = source[0].Variable as idWinString; if (parameter != null) { DrawWindow drawWindow = window.UserInterface.Desktop.FindChildByName(parameter.ToString()); if ((drawWindow != null) && (drawWindow.Window != null)) { window.SetFocus(drawWindow.Window); } } }
private void InitCvar() { if (_cvarStr == string.Empty) { if (this.Buddy == null) { idConsole.Warning("idSliderWindow::InitCvar: gui '{0}' in window '{1}' has an empty cvar string", this.UserInterface.SourceFile, this.Name); } _cvarInit = true; _cvar = null; } else { _cvar = idE.CvarSystem.Find(_cvarStr.ToString()); if (_cvar == null) { idConsole.Warning("idSliderWindow::InitCvar: gui '{0}' in window '{1}' references undefined cvar '{2}'", this.UserInterface.SourceFile, this.Name, _cvarStr.ToString()); _cvarInit = true; } } }
private void InitVariables() { if (_cvarStr.ToString() != string.Empty) { _cvar = idE.CvarSystem.Find(_cvarStr.ToString()); if (_cvar == null) { idConsole.Warning("idChoiceWindow::InitVariables: gui '{0}' in window '{1}' references undefined cvar '{2}'", this.UserInterface.SourceFile, this.Name, _cvarStr); return; } _updateStr.Add(_cvarStr); } if (_guiStr.ToString().Length > 0) { _updateStr.Add(_guiStr); } _updateStr.SetGuiInfo(this.UserInterface.State); _updateStr.Update(); }
private static void Script_Transition(idWindow window, List <idWinGuiScript> source) { // transitions always affect rect or vec4 vars if (source.Count >= 4) { idWinRectangle rect = null; idWinVector4 vec4 = source[0].Variable as idWinVector4; // // added float variable idWinFloat val = null; // if (vec4 == null) { rect = source[0].Variable as idWinRectangle; // // added float variable if (rect == null) { val = source[0].Variable as idWinFloat; } // } idWinVector4 from = source[1].Variable as idWinVector4; idWinVector4 to = source[2].Variable as idWinVector4; idWinString timeStr = source[3].Variable as idWinString; // // added float variable if (((vec4 == null) && (rect == null) && (val == null)) && (from != null) && (to != null) && (timeStr != null)) { idConsole.Warning("Bad transition in gui {0} in window {1}", window.UserInterface.SourceFile, window.Name); } else { int time; int.TryParse(timeStr.ToString(), out time); float accel = 0.0f; float decel = 0.0f; if (source.Count > 4) { idWinString accelStr = source[4].Variable as idWinString; idWinString decelStr = source[5].Variable as idWinString; float.TryParse(accelStr.ToString(), out accel); float.TryParse(decelStr.ToString(), out decel); } if (vec4 != null) { vec4.Evaluate = false; window.AddTransition(vec4, from, to, time, accel, decel); } else if (val != null) { val.Evaluate = false; window.AddTransition(val, from, to, time, accel, decel); } else { rect.Evaluate = false; window.AddTransition(rect, from, to, time, accel, decel); } window.StartTransition(); } } }
public void FixupParameters(idWindow window) { if (_handler == Script_Set) { bool precacheBackground = false; bool precacheSounds = false; idWinString str = (idWinString)_parameters[0].Variable; idWindowVariable dest = window.GetVariableByName(str.ToString(), true); if (dest != null) { _parameters[0].Variable = dest; _parameters[0].Owner = false; if (dest is idWinBackground) { precacheBackground = true; } } else if (str.ToString().ToLower() == "cmd") { precacheSounds = true; } int parameterCount = _parameters.Count; for (int i = 1; i < parameterCount; i++) { str = (idWinString)_parameters[i].Variable; string strValue = str.ToString(); if (strValue.StartsWith("gui::", StringComparison.InvariantCultureIgnoreCase) == true) { // always use a string here, no point using a float if it is one // FIXME: This creates duplicate variables, while not technically a problem since they // are all bound to the same guiDict, it does consume extra memory and is generally a bad thing idWinString defVar = new idWinString(null); defVar.Init(strValue, window); window.AddDefinedVariable(defVar); _parameters[i].Variable = defVar; _parameters[i].Owner = false; //dest = win->GetWinVarByName(*str, true); //if (dest) { // delete parms[i].var; // parms[i].var = dest; // parms[i].own = false; //} // } else if (strValue.StartsWith("$") == true) { // // dont include the $ when asking for variable dest = window.UserInterface.Desktop.GetVariableByName(strValue.Substring(1), true); // if (dest != null) { _parameters[i].Variable = dest; _parameters[i].Owner = false; } } else if (strValue.StartsWith("#str_") == true) { str.Set(idE.Language.Get(strValue)); } else if (precacheBackground == true) { idE.DeclManager.FindMaterial(strValue).Sort = (float)MaterialSort.Gui; } else if (precacheSounds == true) { idConsole.Warning("TODO: PrecacheSounds"); // Search for "play <...>" /*idToken token; * idParser parser( LEXFL_NOSTRINGCONCAT | LEXFL_ALLOWMULTICHARLITERALS | LEXFL_ALLOWBACKSLASHSTRINGCONCAT ); * parser.LoadMemory(str->c_str(), str->Length(), "command"); * * while ( parser.ReadToken(&token) ) { * if ( token.Icmp("play") == 0 ) { * if ( parser.ReadToken(&token) && ( token != "" ) ) { * declManager->FindSound( token.c_str() ); * } * } * }*/ } } } else if (_handler == Script_Transition) { if (_parameters.Count < 4) { idConsole.Warning("Window {0} in gui {1} has a bad transition definition", window.Name, window.UserInterface.SourceFile); } idWinString str = (idWinString)_parameters[0].Variable; // DrawWindow destOwner = null; idWindowVariable dest = window.GetVariableByName(str.ToString(), true, ref destOwner); // if (dest != null) { _parameters[0].Variable = dest; _parameters[0].Owner = false; } else { idConsole.Warning("Window {0} in gui {1}: a transition does not have a valid destination var {2}", window.Name, window.UserInterface.SourceFile, str); } // // support variables as parameters for (int c = 1; c < 3; c++) { str = (idWinString)_parameters[c].Variable; idWinVector4 v4 = new idWinVector4(null); _parameters[c].Variable = v4; _parameters[c].Owner = true; DrawWindow owner = null; if (str.ToString().StartsWith("$") == true) { dest = window.GetVariableByName(str.ToString().Substring(1), true, ref owner); } else { dest = null; } if (dest != null) { idWindow ownerParent; idWindow destParent; if (owner != null) { ownerParent = (owner.Simple != null) ? owner.Simple.Parent : owner.Window.Parent; destParent = (destOwner.Simple != null) ? destOwner.Simple.Parent : destOwner.Window.Parent; // if its the rectangle they are referencing then adjust it if ((ownerParent != null) && (destParent != null) && (dest == ((owner.Simple != null) ? owner.Simple.GetVariableByName("rect") : owner.Window.GetVariableByName("rect")))) { idRectangle rect = ((idWinRectangle)dest).Data; ownerParent.ClientToScreen(ref rect); destParent.ScreenToClient(ref rect); v4.Set(dest.ToString()); } else { v4.Set(dest.ToString()); } } else { v4.Set(dest.ToString()); } } else { v4.Set(str.ToString()); } } } else { int c = _parameters.Count; for (int i = 0; i < c; i++) { _parameters[i].Variable.Init(_parameters[i].Variable.ToString(), window); } } }
private void UpdateChoicesAndValues() { idToken token; string str2 = string.Empty; if (_latchedChoices.Equals(_choicesStr.ToString(), StringComparison.OrdinalIgnoreCase) == true) { _choices.Clear(); idLexer lexer = new idLexer(LexerOptions.NoFatalErrors | LexerOptions.AllowPathNames | LexerOptions.AllowMultiCharacterLiterals | LexerOptions.AllowBackslashStringConcatination); if (lexer.LoadMemory(_choicesStr.ToString(), "<ChoiceList>") == true) { while ((token = lexer.ReadToken()) != null) { if (token.ToString() == ";") { if (str2.Length > 0) { str2 = idE.Language.Get(str2.TrimEnd()); _choices.Add(str2); str2 = string.Empty; } continue; } str2 += token.ToString(); str2 += " "; } if (str2.Length > 0) { _choices.Add(str2.TrimEnd()); } } _latchedChoices = _choicesStr.ToString(); } if ((_choiceValues.ToString() != string.Empty) && (_latchedChoices.Equals(_choiceValues.ToString(), StringComparison.OrdinalIgnoreCase) == false)) { _values.Clear(); str2 = string.Empty; bool negNum = false; idLexer lexer = new idLexer(LexerOptions.AllowPathNames | LexerOptions.AllowMultiCharacterLiterals | LexerOptions.AllowBackslashStringConcatination); if (lexer.LoadMemory(_choiceValues.ToString(), "<ChoiceVals>") == true) { while ((token = lexer.ReadToken()) != null) { if (token.ToString() == "-") { negNum = true; } else if (token.ToString() == ";") { if (str2.Length > 0) { _values.Add(str2.TrimEnd()); str2 = string.Empty; } } else if (negNum == true) { str2 += "-"; negNum = false; } else { str2 += token.ToString(); str2 += " "; } } if (str2.Length > 0) { _values.Add(str2.TrimEnd()); } } if (_choices.Count != _values.Count) { idConsole.Warning("idChoiceWindow:: gui '{0}' window '{1}' has value count unequal to choices count", this.UserInterface.SourceFile, this.Name); } _latchedChoices = _choiceValues.ToString(); } }