/// <summary> /// Adds in a junimo actor at the current location. Allows for multiple. /// </summary> /// <param name="EventManager"></param> /// <param name="EventData"></param> public static void AddInJumimoActorForEvent(EventManager EventManager, string EventData) { string[] splits = EventData.Split(' '); string name = splits[0]; string actorName = splits[1]; int xPos = Convert.ToInt32(splits[2]); int yPos = Convert.ToInt32(splits[3]); Color color = new Color(Convert.ToInt32(splits[4]), Convert.ToInt32(splits[5]), Convert.ToInt32(splits[6])); bool flipped = Convert.ToBoolean(splits[7]); List <NPC> actors = Game1.CurrentEvent.actors; Junimo junimo = new Junimo(new Vector2(xPos * 64, yPos * 64), -1, false); junimo.Name = actorName; junimo.EventActor = true; junimo.flip = flipped; IReflectedField <NetColor> colorF = StardustCore.ModCore.ModHelper.Reflection.GetField <NetColor>(junimo, "color", true); NetColor c = colorF.GetValue(); c.R = color.R; c.G = color.G; c.B = color.B; colorF.SetValue(c); actors.Add((NPC)junimo); ++Game1.CurrentEvent.CurrentCommand; //I've been told ++<int> is more efficient than <int>++; }
protected override void WriteDelta(BinaryWriter writer) { NetCoreObject obj = new NetCoreObject(Value); obj.Write(writer); NetList <KeyValuePair <Vector2, MultiTileComponent>, NetKeyValuePair <Vector2, MultiTileComponent, NetVector2, NetMultiTileComponent> > netList = new NetList <KeyValuePair <Vector2, MultiTileComponent>, NetKeyValuePair <Vector2, MultiTileComponent, NetVector2, NetMultiTileComponent> >(); if (Value.objects == null) { throw new Exception("Trying to write null object list!"); } foreach (var v in Value.objects) { StardustCore.ModCore.ModMonitor.Log(v.Value.name); netList.Add(v); } netList.Write(writer); NetColor col = new NetColor(Value.categoryColor); col.Write(writer); NetString catName = new NetString(Value.categoryName); catName.Write(writer); }
protected override void ReadDelta(BinaryReader reader, NetVersion version) { NetCoreObject obj = new NetCoreObject(); obj.Read(reader, version); //Values already taken care of in NetCoreObject NetList <KeyValuePair <Vector2, MultiTileComponent>, NetKeyValuePair <Vector2, MultiTileComponent, NetVector2, NetMultiTileComponent> > netList = new NetList <KeyValuePair <Vector2, MultiTileComponent>, NetKeyValuePair <Vector2, MultiTileComponent, NetVector2, NetMultiTileComponent> >(); netList.Read(reader, version); if (netList.ToList() == null) { throw new Exception("WTF WHY IS NETLIST NULL?!?!?!?!"); } foreach (var v in netList.ToList()) { StardustCore.ModCore.ModMonitor.Log(v.Value.name, StardewModdingAPI.LogLevel.Alert); } Value.objects = netList.ToList(); //this.value.objects=netList.ToArray().ToList(); NetColor col = new NetColor(); col.Read(reader, version); Value.categoryColor = col.Value; NetString name = new NetString(); name.Read(reader, version); Value.categoryName = name.Value; }
private static void JunimoPostfix(ref NetColor ___color) { if (!Game1.currentLocation.objects.Values.Any(o => o.modData.ContainsKey(ModEntry.harvestStatueFlag)) || Game1.currentLocation.Name == "CommunityCenter") { return; } // Set a random color for the Junimo if (Game1.random.NextDouble() < 0.01) { switch (Game1.random.Next(8)) { case 0: ___color.Value = Color.Red; break; case 1: ___color.Value = Color.Goldenrod; break; case 2: ___color.Value = Color.Yellow; break; case 3: ___color.Value = Color.Lime; break; case 4: ___color.Value = new Color(0, 255, 180); break; case 5: ___color.Value = new Color(0, 100, 255); break; case 6: ___color.Value = Color.MediumPurple; break; case 7: ___color.Value = Color.Salmon; break; } if (Game1.random.NextDouble() < 0.01) { ___color.Value = Color.White; } } else { switch (Game1.random.Next(8)) { case 0: ___color.Value = Color.LimeGreen; break; case 1: ___color.Value = Color.Orange; break; case 2: ___color.Value = Color.LightGreen; break; case 3: ___color.Value = Color.Tan; break; case 4: ___color.Value = Color.GreenYellow; break; case 5: ___color.Value = Color.LawnGreen; break; case 6: ___color.Value = Color.PaleGreen; break; case 7: ___color.Value = Color.Turquoise; break; } } }
internal static void Postfix(ref NetColor ___color) { if (Game1.currentLocation.Name != "Greenhouse") { return; } // Set a random color for the Junimo if (Game1.random.NextDouble() < 0.01) { switch (Game1.random.Next(8)) { case 0: ___color.Value = Color.Red; break; case 1: ___color.Value = Color.Goldenrod; break; case 2: ___color.Value = Color.Yellow; break; case 3: ___color.Value = Color.Lime; break; case 4: ___color.Value = new Color(0, 255, 180); break; case 5: ___color.Value = new Color(0, 100, 255); break; case 6: ___color.Value = Color.MediumPurple; break; case 7: ___color.Value = Color.Salmon; break; } if (Game1.random.NextDouble() < 0.01) { ___color.Value = Color.White; } } else { switch (Game1.random.Next(8)) { case 0: ___color.Value = Color.LimeGreen; break; case 1: ___color.Value = Color.Orange; break; case 2: ___color.Value = Color.LightGreen; break; case 3: ___color.Value = Color.Tan; break; case 4: ___color.Value = Color.GreenYellow; break; case 5: ___color.Value = Color.LawnGreen; break; case 6: ___color.Value = Color.PaleGreen; break; case 7: ___color.Value = Color.Turquoise; break; } } }