예제 #1
0
        public void AddThing(int index, Thing thing)
        {
            #if DEBUG_TILE
            if (debugEnable)
                Trace.WriteLine("[AddThing] Id: " + thing.Id + ", Index: " + index);
            #endif
            if (thing == null)
                throw new Exception("[AddThing] Null thing.");

            if (index != 0xFF)
            {
                if (index == 0)
                {
                    var item = thing as Item;
                    if (item == null || !item.IsGround)
                        throw new Exception("[AddThing] Invalid ground item.");
                }

                things.Insert(index, thing);
            }
            else
            {
                if (thing is Creature)
                {
                    int pos = things.Count;
                    for (int i = 0; i < things.Count; i++)
                    {
                        if (things[i].Order > thing.Order)
                        {
                            pos = i;
                            break;
                        }
                    }

                    things.Insert(pos, thing);
                    ((Creature)thing).Location = Location;
                }
                else
                {
                    int pos = things.Count;
                    for (int i = 0; i < things.Count; i++)
                    {
                        if (things[i].Order >= thing.Order)
                        {
                            pos = i;
                            break;
                        }
                    }

                    things.Insert(pos, thing);
                }
            }

            if (things.Count > 10)
                RemoveThing(10);
        }
예제 #2
0
 public void AddThing(Thing thing)
 {
     AddThing(0xFF, thing);
 }
예제 #3
0
        public void ReplaceThing(int index, Thing thing)
        {
            #if DEBUG_TILE
            if (debugEnable)
                Trace.WriteLine("[ReplaceThing] Id: " + thing.Id + ", Index: " + index);
            #endif

            if (index < 0 || index >= ThingCount)
                throw new Exception("[ReplaceThing] Invalid stack value: " + index);

            if (index == 0)
            {
                var item = thing as Item;
                if (item == null || !item.IsGround)
                    throw new Exception("[ReplaceThing] Invalid ground item.");
            }

            things[index] = thing;

            if(thing is Creature)
                ((Creature)thing).Location = Location;
        }