Skip to content

Commit 3b85ab1

Browse files
author
hamstar0
committed
v2.0.0.4 - Contextualized IBaseEmitterItem with it's definition type
* Contextualized IBaseEmitterItem with it's definition type * Added BaseEmitterDefinition.CreateOrGetDefForItem<BaseEmitterDefinition>(Item) * Tweaked some information tip texts * Fixed hologram UI fields not being set with new item selects
1 parent a800319 commit 3b85ab1

24 files changed

+120
-80
lines changed

Emitters/Definitions/BaseEmitterDefinition.cs

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1-
using System.IO;
1+
using System;
2+
using System.IO;
23
using System.Dynamic;
34
using Terraria;
45
using HamstarHelpers.Classes.Errors;
6+
using Emitters.Items;
57

68

79
namespace Emitters.Definitions {
@@ -13,8 +15,27 @@ public enum EmitterType {
1315

1416

1517

16-
18+
1719
public abstract class BaseEmitterDefinition {
20+
public static T CreateOrGetDefForItem<T>( Item item )
21+
where T : BaseEmitterDefinition {
22+
var modItem = item.modItem;
23+
if( modItem == null ) {
24+
throw new ModHelpersException( "Not an emitter or mod item." );
25+
}
26+
27+
var myitem = modItem as IBaseEmitterItem<T>;
28+
if( myitem == null ) {
29+
myitem.SetDefinition( (T)Activator.CreateInstance(typeof(T)) );
30+
}
31+
32+
return myitem.Def;
33+
}
34+
35+
36+
37+
////////////////
38+
1839
public bool IsActivated { get; set; } = true;
1940

2041

Emitters/Definitions/HologramDefinition.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,9 @@
22
using Microsoft.Xna.Framework;
33
using Microsoft.Xna.Framework.Graphics;
44
using Terraria;
5-
using Terraria.ModLoader.Config;
5+
using Terraria.ModLoader;
66
using HamstarHelpers.Classes.Errors;
77
using HamstarHelpers.Helpers.Debug;
8-
using Terraria.ModLoader;
98

109

1110
namespace Emitters.Definitions {

Emitters/Items/BaseEmitterItem.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,22 @@
11
using System;
22
using Terraria;
3+
using Emitters.Definitions;
34

45

56
namespace Emitters.Items {
67
public interface IBaseEmitterItem {
78
void OpenUI( Item emitterItem );
89
}
10+
11+
12+
13+
14+
public interface IBaseEmitterItem<T> : IBaseEmitterItem where T : BaseEmitterDefinition {
15+
T Def { get; }
16+
17+
18+
////////////////
19+
20+
void SetDefinition( T def );
21+
}
922
}

Emitters/Items/EmitterItem_Def.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77

88
namespace Emitters.Items {
9-
public partial class EmitterItem : ModItem, IBaseEmitterItem {
9+
public partial class EmitterItem : ModItem, IBaseEmitterItem<EmitterDefinition> {
1010
public EmitterDefinition Def { get; private set; } = null;
1111

1212

@@ -59,8 +59,7 @@ public override void SetDefaults() {
5959

6060
////////////////
6161

62-
public void SetEmitterDefinition( EmitterDefinition def ) {
63-
//Main.NewText( def.ToString() );
62+
public void SetDefinition( EmitterDefinition def ) {
6463
this.Def = def;
6564
}
6665

Emitters/Items/EmitterItem_Draw.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@
33
using Microsoft.Xna.Framework.Graphics;
44
using Terraria;
55
using Terraria.ModLoader;
6+
using Emitters.Definitions;
67

78

89
namespace Emitters.Items {
9-
public partial class EmitterItem : ModItem, IBaseEmitterItem {
10+
public partial class EmitterItem : ModItem, IBaseEmitterItem<EmitterDefinition> {
1011
public override bool PreDrawInInventory(
1112
SpriteBatch sb,
1213
Vector2 pos,

Emitters/Items/EmitterItem_Interactivity.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212

1313
namespace Emitters.Items {
14-
public partial class EmitterItem : ModItem, IBaseEmitterItem {
14+
public partial class EmitterItem : ModItem, IBaseEmitterItem<EmitterDefinition> {
1515
public static bool CanViewEmitters( Player plr, bool withWire ) {
1616
return (withWire && WiresUI.Settings.DrawWires) || (
1717
plr.HeldItem != null
@@ -125,7 +125,7 @@ public override bool UseItem( Player player ) {
125125
Timers.SetTimer( timerName, 15, false, () => false );
126126

127127
if( this.Def == null ) {
128-
Main.NewText( "Emitter settings must be first specified (right-click item)." );
128+
Main.NewText( "Emitter settings must be first specified (click item's button)." );
129129
return base.UseItem( player );
130130
}
131131

Emitters/Items/EmitterItem_Recipe.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
using Terraria.ID;
22
using Terraria.ModLoader;
3+
using Emitters.Definitions;
34

45

56
namespace Emitters.Items {
6-
public partial class EmitterItem : ModItem, IBaseEmitterItem {
7+
public partial class EmitterItem : ModItem, IBaseEmitterItem<EmitterDefinition> {
78
public override void AddRecipes() {
89
if( !EmittersConfig.Instance.EmitterRecipeEnabled ) {
910
return;

Emitters/Items/EmitterItem_SaveLoad.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@
66

77

88
namespace Emitters.Items {
9-
public partial class EmitterItem : ModItem, IBaseEmitterItem {
9+
public partial class EmitterItem : ModItem, IBaseEmitterItem<EmitterDefinition> {
1010
public override void Load( TagCompound tag ) {
1111
if( !tag.ContainsKey("EmitterMode") ) {
1212
return;
1313
}
1414

1515
try {
16-
this.Def = new EmitterDefinition(
16+
this.SetDefinition( new EmitterDefinition(
1717
isGoreMode: tag.GetBool( "EmitterMode" ),
1818
type: tag.GetInt( "EmitterType" ),
1919
scale: tag.GetFloat( "EmitterScale" ),
@@ -30,7 +30,7 @@ public override void Load( TagCompound tag ) {
3030
hasGravity: tag.GetBool( "EmitterHasGrav" ),
3131
hasLight: tag.GetBool( "EmitterHasLight" ),
3232
isActivated: tag.GetBool( "EmitterIsActivated" )
33-
);
33+
) );
3434
} catch { }
3535
}
3636

Emitters/Items/EmitterItem_Tooltips.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@
22
using Microsoft.Xna.Framework;
33
using Terraria;
44
using Terraria.ModLoader;
5+
using Emitters.Definitions;
56

67

78
namespace Emitters.Items {
8-
public partial class EmitterItem : ModItem, IBaseEmitterItem {
9+
public partial class EmitterItem : ModItem, IBaseEmitterItem<EmitterDefinition> {
910
public override void ModifyTooltips( List<TooltipLine> tooltips ) {
1011
int i = 1;
1112
//tooltips.Insert( i++, new TooltipLine(this.mod, "EmitterUI", "[c/00FF00:Right-click in inventory to adjust settings]") );

Emitters/Items/HologramItem_Def.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66

77
namespace Emitters.Items {
8-
public partial class HologramItem : ModItem, IBaseEmitterItem {
8+
public partial class HologramItem : ModItem, IBaseEmitterItem<HologramDefinition> {
99
public HologramDefinition Def { get; private set; } = null;
1010

1111

@@ -58,8 +58,7 @@ public override void SetDefaults() {
5858

5959
////////////////
6060

61-
public void SetHologramDefinition( HologramDefinition def ) {
62-
//Main.NewText( def.ToString() );
61+
public void SetDefinition( HologramDefinition def ) {
6362
this.Def = def;
6463
}
6564

Emitters/Items/HologramItem_Draw.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@
33
using Microsoft.Xna.Framework.Graphics;
44
using Terraria;
55
using Terraria.ModLoader;
6+
using Emitters.Definitions;
67

78

89
namespace Emitters.Items {
9-
public partial class HologramItem : ModItem, IBaseEmitterItem {
10+
public partial class HologramItem : ModItem, IBaseEmitterItem<HologramDefinition> {
1011
public override bool PreDrawInInventory(
1112
SpriteBatch sb,
1213
Vector2 pos,

Emitters/Items/HologramItem_Interactivity.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212

1313
namespace Emitters.Items {
14-
public partial class HologramItem : ModItem, IBaseEmitterItem {
14+
public partial class HologramItem : ModItem, IBaseEmitterItem<HologramDefinition> {
1515
public static bool CanViewHolograms( Player plr, bool withWire ) {
1616
return (withWire && WiresUI.Settings.DrawWires) || (
1717
plr.HeldItem != null
@@ -145,9 +145,7 @@ public void OpenUI( Item hologramItem ) {
145145
var mymod = EmittersMod.Instance;
146146
mymod.HologramEditorDialog.Open();
147147

148-
if( !mymod.HologramEditorDialog.SetItem( hologramItem ) ) {
149-
mymod.HologramEditorDialog.Close();
150-
}
148+
mymod.HologramEditorDialog.SetItem( hologramItem );
151149
}
152150
}
153151
}

Emitters/Items/HologramItem_Recipe.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
using Terraria.ID;
22
using Terraria.ModLoader;
3+
using Emitters.Definitions;
34

45

56
namespace Emitters.Items {
6-
public partial class HologramItem : ModItem, IBaseEmitterItem {
7+
public partial class HologramItem : ModItem, IBaseEmitterItem<HologramDefinition> {
78
public override void AddRecipes() {
89
if( !EmittersConfig.Instance.HologramRecipeEnabled ) {
910
return;

Emitters/Items/HologramItem_SaveLoad.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88

99
namespace Emitters.Items {
10-
public partial class HologramItem : ModItem, IBaseEmitterItem {
10+
public partial class HologramItem : ModItem, IBaseEmitterItem<HologramDefinition> {
1111
public override void Load( TagCompound tag ) {
1212
try {
1313
HologramMode mode;
@@ -39,7 +39,7 @@ public override void Load( TagCompound tag ) {
3939
shaderTime = tag.GetFloat( "HologramShaderTime" );
4040
}
4141

42-
this.Def = new HologramDefinition(
42+
this.SetDefinition( new HologramDefinition(
4343
mode: mode,
4444
type: type,
4545
scale: tag.GetFloat( "HologramScale" ),
@@ -61,7 +61,7 @@ public override void Load( TagCompound tag ) {
6161
shaderType: shaderType,
6262
shaderTime: shaderTime,
6363
isActivated: tag.GetBool( "HologramIsActivated" )
64-
);
64+
) );
6565
} catch { }
6666
}
6767

Emitters/Items/HologramItem_Tooltips.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@
22
using Microsoft.Xna.Framework;
33
using Terraria;
44
using Terraria.ModLoader;
5+
using Emitters.Definitions;
56

67

78
namespace Emitters.Items {
8-
public partial class HologramItem : ModItem, IBaseEmitterItem {
9+
public partial class HologramItem : ModItem, IBaseEmitterItem<HologramDefinition> {
910
public override void ModifyTooltips( List<TooltipLine> tooltips ) {
1011
int i = 1;
1112
//tooltips.Insert( i++, new TooltipLine( this.mod, "HologramUI", "[c/00FF00:Right-click in inventory to adjust settings]" ) );

Emitters/Items/SoundEmitterItem_Def.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66

77
namespace Emitters.Items {
8-
public partial class SoundEmitterItem : ModItem, IBaseEmitterItem {
8+
public partial class SoundEmitterItem : ModItem, IBaseEmitterItem<SoundEmitterDefinition> {
99
public SoundEmitterDefinition Def { get; private set; } = null;
1010
////////////////
1111

@@ -56,7 +56,7 @@ public override void SetDefaults() {
5656

5757
////////////////
5858

59-
public void SetSoundEmitterDefinition( SoundEmitterDefinition def ) {
59+
public void SetDefinition( SoundEmitterDefinition def ) {
6060
//Main.NewText( def.ToString() );
6161
this.Def = def;
6262
}

Emitters/Items/SoundEmitterItem_Draw.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@
33
using Microsoft.Xna.Framework.Graphics;
44
using Terraria;
55
using Terraria.ModLoader;
6+
using Emitters.Definitions;
67

78

89
namespace Emitters.Items {
9-
public partial class SoundEmitterItem : ModItem, IBaseEmitterItem {
10+
public partial class SoundEmitterItem : ModItem, IBaseEmitterItem<SoundEmitterDefinition> {
1011
public override bool PreDrawInInventory(
1112
SpriteBatch sb,
1213
Vector2 pos,

Emitters/Items/SoundEmitterItem_Interactivity.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212

1313
namespace Emitters.Items {
14-
public partial class SoundEmitterItem : ModItem, IBaseEmitterItem {
14+
public partial class SoundEmitterItem : ModItem, IBaseEmitterItem<SoundEmitterDefinition> {
1515
public static bool CanViewSoundEmitters( Player plr, bool withWire ) {
1616
return (withWire && WiresUI.Settings.DrawWires) || (
1717
plr.HeldItem != null
@@ -125,7 +125,7 @@ public override bool UseItem( Player player ) {
125125
Timers.SetTimer( timerName, 15, false, () => false );
126126

127127
if( this.Def == null ) {
128-
Main.NewText( "Sound Emitter settings must be first specified (right-click item)." );
128+
Main.NewText( "Sound Emitter settings must be first specified (click item's button)." );
129129
return base.UseItem( player );
130130
}
131131

Emitters/Items/SoundEmitterItem_Recipe.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
using Terraria.ID;
22
using Terraria.ModLoader;
3+
using Emitters.Definitions;
34

45

56
namespace Emitters.Items {
6-
public partial class SoundEmitterItem : ModItem, IBaseEmitterItem {
7+
public partial class SoundEmitterItem : ModItem, IBaseEmitterItem<SoundEmitterDefinition> {
78
public override void AddRecipes() {
89
if( !EmittersConfig.Instance.SoundEmitterRecipeEnabled ) {
910
return;

Emitters/Items/SoundEmitterItem_SaveLoad.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,21 @@
55

66

77
namespace Emitters.Items {
8-
public partial class SoundEmitterItem : ModItem, IBaseEmitterItem {
8+
public partial class SoundEmitterItem : ModItem, IBaseEmitterItem<SoundEmitterDefinition> {
99
public override void Load( TagCompound tag ) {
1010
if( !tag.ContainsKey( "SndEmitterType" ) ) {
1111
return;
1212
}
1313

1414
try {
15-
this.Def = new SoundEmitterDefinition(
15+
this.SetDefinition( new SoundEmitterDefinition(
1616
type: tag.GetInt( "SndEmitterType" ),
1717
style: tag.GetInt( "SndEmitterStyle" ),
1818
volume: tag.GetFloat( "SndEmitterVolume" ),
1919
pitch: tag.GetFloat( "SndEmitterPitch" ),
2020
delay: tag.GetInt( "SndEmitterDelay" ),
2121
isActivated: tag.GetBool( "SndEmitterIsActivated" )
22-
);
22+
) );
2323
} catch { }
2424
}
2525

Emitters/Items/SoundEmitterItem_Tooltips.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@
22
using Microsoft.Xna.Framework;
33
using Terraria;
44
using Terraria.ModLoader;
5+
using Emitters.Definitions;
56

67

78
namespace Emitters.Items {
8-
public partial class SoundEmitterItem : ModItem, IBaseEmitterItem {
9+
public partial class SoundEmitterItem : ModItem, IBaseEmitterItem<SoundEmitterDefinition> {
910
public override void ModifyTooltips( List<TooltipLine> tooltips ) {
1011
int i = 1;
1112
//tooltips.Insert( i++, new TooltipLine( this.mod, "SndEmitterUI", "[c/00FF00:Right-click in inventory to adjust settings]" ) );

0 commit comments

Comments
 (0)