@@ -1285,18 +1285,14 @@ private void BtnEventParameterValuePreset_LeftClick(object sender, EventArgs e)
12851285 case TriggerParamType . HouseType :
12861286 selectHouseTypeWindow . IsForEvent = true ;
12871287 paramValue = Conversions . IntFromString ( triggerEvent . Parameters [ paramIndex ] , - 1 ) ;
1288- if ( paramValue > - 1 && paramValue < map . GetHouseTypes ( ) . Count )
1289- selectHouseTypeWindow . Open ( map . GetHouseTypes ( ) [ paramValue ] ) ;
1290- else
1291- selectHouseTypeWindow . Open ( null ) ;
1288+ HouseType houseType = map . GetHouseTypes ( ) . Find ( ht => ht . Index == paramValue ) ;
1289+ selectHouseTypeWindow . Open ( houseType ) ;
12921290 break ;
12931291 case TriggerParamType . House :
12941292 selectHouseWindow . IsForEvent = true ;
12951293 paramValue = Conversions . IntFromString ( triggerEvent . Parameters [ paramIndex ] , - 1 ) ;
1296- if ( paramValue > - 1 && paramValue < map . GetHouses ( ) . Count )
1297- selectHouseWindow . Open ( map . GetHouses ( ) [ paramValue ] ) ;
1298- else
1299- selectHouseWindow . Open ( null ) ;
1294+ House house = map . GetHouses ( ) . Find ( h => h . ID == paramValue ) ;
1295+ selectHouseWindow . Open ( house ) ;
13001296 break ;
13011297 case TriggerParamType . Building :
13021298 paramValue = Conversions . IntFromString ( triggerEvent . Parameters [ paramIndex ] , - 1 ) ;
@@ -1845,6 +1841,41 @@ public void SelectTrigger(Trigger trigger)
18451841 lbTriggers . ScrollToSelectedElement ( ) ;
18461842 }
18471843
1844+ private void SetDefaultParametersForNewTriggerEvent ( TriggerCondition condition )
1845+ {
1846+ TriggerEventType triggerEventType = map . EditorConfig . TriggerEventTypes [ condition . ConditionIndex ] ;
1847+
1848+ for ( int i = 0 ; i < lbEventParameters . Items . Count ; i ++ )
1849+ {
1850+ int parameterIndex = ( int ) lbEventParameters . Items [ i ] . Tag ;
1851+
1852+ if ( UserSettings . Instance . SmartScriptActionDefaultValues )
1853+ {
1854+ TriggerParamType triggerParamType = triggerEventType . Parameters [ parameterIndex ] . TriggerParamType ;
1855+
1856+ // Set default value if we can infer one from the trigger's name or from other information
1857+ switch ( triggerParamType )
1858+ {
1859+ case TriggerParamType . HouseType :
1860+ HouseType houseType = map . GetHouseTypes ( ) . Find ( ht => editedTrigger . Name . Contains ( ht . ININame , StringComparison . OrdinalIgnoreCase ) ) ;
1861+ if ( houseType != null )
1862+ condition . Parameters [ parameterIndex ] = houseType . Index . ToString ( CultureInfo . InvariantCulture ) ;
1863+ break ;
1864+ case TriggerParamType . House :
1865+ House house = map . GetHouses ( ) . Find ( ht => editedTrigger . Name . Contains ( ht . ININame , StringComparison . OrdinalIgnoreCase ) ) ;
1866+ if ( house != null )
1867+ condition . Parameters [ parameterIndex ] = house . ID . ToString ( CultureInfo . InvariantCulture ) ;
1868+ break ;
1869+ case TriggerParamType . LocalVariable :
1870+ LocalVariable localVariable = map . LocalVariables . Find ( lv => editedTrigger . Name . Contains ( lv . Name , StringComparison . OrdinalIgnoreCase ) ) ;
1871+ if ( localVariable != null )
1872+ condition . Parameters [ parameterIndex ] = localVariable . Index . ToString ( CultureInfo . InvariantCulture ) ;
1873+ break ;
1874+ }
1875+ }
1876+ }
1877+ }
1878+
18481879 private void EventWindowDarkeningPanel_Hidden ( object sender , EventArgs e )
18491880 {
18501881 if ( editedTrigger == null || selectEventWindow . SelectedObject == null )
@@ -1854,26 +1885,96 @@ private void EventWindowDarkeningPanel_Hidden(object sender, EventArgs e)
18541885
18551886 if ( selectEventWindow . IsAddingNew )
18561887 {
1857- editedTrigger . Conditions . Add ( new TriggerCondition ( triggerEventType ) ) ;
1888+ var condition = new TriggerCondition ( triggerEventType ) ;
1889+ editedTrigger . Conditions . Add ( condition ) ;
18581890 EditTrigger ( editedTrigger ) ;
18591891 lbEvents . SelectedIndex = lbEvents . Items . Count - 1 ;
1892+
1893+ if ( lbEventParameters . Items . Count > 0 )
1894+ {
1895+ if ( UserSettings . Instance . SmartScriptActionDefaultValues )
1896+ {
1897+ SetDefaultParametersForNewTriggerEvent ( condition ) ;
1898+ EditTrigger ( editedTrigger ) ;
1899+ }
1900+
1901+ lbEventParameters . SelectedIndex = 0 ;
1902+
1903+ if ( UserSettings . Instance . QuickTriggerParameterSelection )
1904+ {
1905+ BtnEventParameterValuePreset_LeftClick ( this , EventArgs . Empty ) ;
1906+ }
1907+ }
18601908 }
18611909 else
18621910 {
18631911 if ( lbEvents . SelectedItem == null )
18641912 return ;
1865- }
18661913
1867- TriggerCondition condition = editedTrigger . Conditions [ lbEvents . SelectedIndex ] ;
1868- condition . ConditionIndex = selectEventWindow . SelectedObject . ID ;
1869- SetTriggerEventHardcodedParameters ( condition ) ;
1914+ TriggerCondition condition = editedTrigger . Conditions [ lbEvents . SelectedIndex ] ;
1915+ condition . ConditionIndex = selectEventWindow . SelectedObject . ID ;
1916+ SetTriggerEventHardcodedParameters ( condition ) ;
1917+ EditTrigger ( editedTrigger ) ;
1918+ }
1919+ }
18701920
1871- EditTrigger ( editedTrigger ) ;
1921+ private void SetDefaultParametersForNewTriggerAction ( TriggerAction action )
1922+ {
1923+ TriggerActionType triggerActionType = map . EditorConfig . TriggerActionTypes [ action . ActionIndex ] ;
18721924
1873- if ( UserSettings . Instance . QuickTriggerParameterSelection && selectEventWindow . IsAddingNew && lbEventParameters . Items . Count > 0 )
1925+ for ( int i = 0 ; i < lbActionParameters . Items . Count ; i ++ )
18741926 {
1875- lbEventParameters . SelectedIndex = 0 ;
1876- BtnEventParameterValuePreset_LeftClick ( this , EventArgs . Empty ) ;
1927+ int parameterIndex = ( int ) lbActionParameters . Items [ i ] . Tag ;
1928+
1929+ TriggerParamType triggerParamType = triggerActionType . Parameters [ parameterIndex ] . TriggerParamType ;
1930+
1931+ // Set default values if we can infer ones from the trigger's name or from other information
1932+ switch ( triggerParamType )
1933+ {
1934+ case TriggerParamType . HouseType :
1935+ HouseType houseType = map . GetHouseTypes ( ) . Find ( ht => editedTrigger . Name . Contains ( ht . ININame , StringComparison . OrdinalIgnoreCase ) ) ;
1936+ if ( houseType != null )
1937+ action . Parameters [ parameterIndex ] = houseType . Index . ToString ( CultureInfo . InvariantCulture ) ;
1938+ break ;
1939+ case TriggerParamType . House :
1940+ House house = map . GetHouses ( ) . Find ( ht => editedTrigger . Name . Contains ( ht . ININame , StringComparison . OrdinalIgnoreCase ) ) ;
1941+ if ( house != null )
1942+ action . Parameters [ parameterIndex ] = house . ID . ToString ( CultureInfo . InvariantCulture ) ;
1943+ break ;
1944+ case TriggerParamType . LocalVariable :
1945+ LocalVariable localVariable = map . LocalVariables . Find ( lv => editedTrigger . Name . Contains ( lv . Name , StringComparison . OrdinalIgnoreCase ) ) ;
1946+ if ( localVariable != null )
1947+ action . Parameters [ parameterIndex ] = localVariable . Index . ToString ( CultureInfo . InvariantCulture ) ;
1948+ break ;
1949+ case TriggerParamType . TeamType :
1950+ TeamType teamType = map . TeamTypes . Count > 0 ? map . TeamTypes [ 0 ] : null ;
1951+ if ( teamType != null )
1952+ action . Parameters [ parameterIndex ] = teamType . ININame ;
1953+
1954+ // Special case for action "Reinforcement at Waypoint" - assign the team's waypoint
1955+ if ( ! string . IsNullOrWhiteSpace ( teamType . Waypoint ) && triggerActionType . Parameters [ TriggerActionType . MAX_PARAM_COUNT - 1 ] . TriggerParamType == TriggerParamType . WaypointZZ )
1956+ {
1957+ action . Parameters [ TriggerActionType . MAX_PARAM_COUNT - 1 ] = teamType . Waypoint ;
1958+ return ;
1959+ }
1960+
1961+ break ;
1962+ case TriggerParamType . WaypointZZ :
1963+ if ( map . Waypoints . Count > 0 )
1964+ action . Parameters [ parameterIndex ] = Helpers . WaypointNumberToAlphabeticalString ( map . Waypoints [ map . Waypoints . Count - 1 ] . Identifier ) ;
1965+ break ;
1966+ case TriggerParamType . Waypoint :
1967+ if ( map . Waypoints . Count > 0 )
1968+ action . Parameters [ parameterIndex ] = map . Waypoints [ map . Waypoints . Count - 1 ] . Identifier . ToString ( CultureInfo . InvariantCulture ) ;
1969+ break ;
1970+ case TriggerParamType . Text :
1971+ if ( selectTutorialLineWindow . SelectedObject . ID > - 1 &&
1972+ ! string . IsNullOrEmpty ( map . Rules . TutorialLines . GetStringByIdOrEmptyString ( selectTutorialLineWindow . SelectedObject . ID + 1 ) ) )
1973+ {
1974+ action . Parameters [ parameterIndex ] = ( selectTutorialLineWindow . SelectedObject . ID + 1 ) . ToString ( CultureInfo . InvariantCulture ) ;
1975+ }
1976+ break ;
1977+ }
18771978 }
18781979 }
18791980
@@ -1889,9 +1990,26 @@ private void ActionWindowDarkeningPanel_Hidden(object sender, EventArgs e)
18891990 if ( triggerActionType == null )
18901991 return ;
18911992
1892- editedTrigger . Actions . Add ( CreateTriggerAction ( triggerActionType ) ) ;
1993+ TriggerAction action = CreateTriggerAction ( triggerActionType ) ;
1994+ editedTrigger . Actions . Add ( action ) ;
18931995 EditTrigger ( editedTrigger ) ;
18941996 lbActions . SelectedIndex = lbActions . Items . Count - 1 ;
1997+
1998+ if ( lbActionParameters . Items . Count > 0 )
1999+ {
2000+ if ( UserSettings . Instance . SmartScriptActionDefaultValues )
2001+ {
2002+ SetDefaultParametersForNewTriggerAction ( action ) ;
2003+ EditTrigger ( editedTrigger ) ;
2004+ }
2005+
2006+ lbActionParameters . SelectedIndex = 0 ;
2007+
2008+ if ( UserSettings . Instance . QuickTriggerParameterSelection )
2009+ {
2010+ BtnActionParameterValuePreset_LeftClick ( this , EventArgs . Empty ) ;
2011+ }
2012+ }
18952013 }
18962014 else
18972015 {
@@ -1901,14 +2019,7 @@ private void ActionWindowDarkeningPanel_Hidden(object sender, EventArgs e)
19012019 TriggerAction existingAction = editedTrigger . Actions [ lbActions . SelectedIndex ] ;
19022020 existingAction . ActionIndex = selectActionWindow . SelectedObject . ID ;
19032021 SetTriggerActionHardcodedParameters ( existingAction ) ;
1904- }
1905-
1906- EditTrigger ( editedTrigger ) ;
1907-
1908- if ( UserSettings . Instance . QuickTriggerParameterSelection && selectActionWindow . IsAddingNew && lbActionParameters . Items . Count > 0 )
1909- {
1910- lbActionParameters . SelectedIndex = 0 ;
1911- BtnActionParameterValuePreset_LeftClick ( this , EventArgs . Empty ) ;
2022+ EditTrigger ( editedTrigger ) ;
19122023 }
19132024 }
19142025
0 commit comments