Exemplo n.º 1
0
        /// <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;
        }
Exemplo n.º 4
0
        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;
                }
            }
        }
Exemplo n.º 5
0
        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;
                }
            }
        }