Navigation

    forum

    • Login
    • Search
    • Categories
    • Recent
    • Popular
    • Users
    • Groups
    1. Home
    2. grandpa_sam
    • Flag Profile
    • block_user
    • Profile
    • Following
    • Followers
    • Topics
    • Posts
    • Groups
    • Blog

    grandpa_sam

    @grandpa_sam

    11
    Posts
    1315
    Profile views
    0
    Followers
    0
    Following
    Joined Last Online

    grandpa_sam Follow

    Posts made by grandpa_sam

    • RE: Add functionality to memory objects

      Thanks for the info Estecka. I will look into that as well.

      posted in Help
      grandpa_sam
    • RE: Add functionality to memory objects

      Ok great,

      Thanks for having this discussion. I'm at work so I can't test this stuff but you have given me multiple paths to explore so I'm going mark this as resolved.

      Thanks again for your help.

      posted in Help
      grandpa_sam
    • RE: Add functionality to memory objects

      Ok I have a question on your edit. Are you saying that while technically Object.setPrototypeOf would fix my problem, I shouldn't use it and instead should try a different line of thinking?

      I'm not at all trying to save anything but the data inside the objects but I would like to be able to keep my key functionality pertaining to the data in those objects in one place preferably nicely wrapped up in the object prototype itself.

      I guess my goal here is when its time to save to memory I rip all the data out of the class. Then on the next tick when its time to load I put that data back into a new instance of the same class made that tick.

      posted in Help
      grandpa_sam
    • RE: Add functionality to memory objects

      Ok cool. Thanks for your help. I must be doing something wrong with this. I will get back here with more information.

      EDIT: also clever joke. When I re read it I laughed

      posted in Help
      grandpa_sam
    • RE: Add functionality to memory objects

      As I said before. setPrototypeOf has the exact same problem with the exact error.

      Also from what I've read and tested, directly adding a function to an objects prototype would not be saved because JSON.stringify ignores functions all together

      posted in Help
      grandpa_sam
    • Adding functions to memory object prototypes seems to cause memory loading error.

      See this forum post for full details: https://screeps.com/forum/topic/2428/add-functionality-to-memory-objects

      Basically when I try to use the following line of reasoning:

      class basicClass{
          function test(){
             return 'test';
          }
      }
      Game.rooms['sim'].memory.test = new basicClass();
      

      I know I will have to re add the class method to the memory object prototype.

      var obj = Game.rooms['sim'].memory.test;
      //As expected obj.test is undefined
      console.log(obj.test);
      //This works but for a couple ticks in a row i will get a memory error before my script begins.
      Object.getPrototypeOf(obj).test = basicClass.prototype.test;
      

      The error I get is: "Error: "test" is not a valid memory segment ID at self.onmessage (blob:https://screeps.com/83fe0913-2d1b-43e0-83a7-d3490fc5868b:2:100470)"

      posted in Technical Issues and Bugs
      grandpa_sam
    • RE: Add functionality to memory objects

      Ok so I've been taking a look at this a little more and it seems like what I'm trying to is legal. I will put this in the bug section and see what happens there.

      posted in Help
      grandpa_sam
    • RE: Add functionality to memory objects

      Hmmm never tried that.

      Turns out the exact same thing happens.

      posted in Help
      grandpa_sam
    • Add functionality to memory objects

      I have a class with some properties and methods that will eventually be dropped into a room memory.

      On the next tick when I pull that memory object I have all the correct properties but non of the methods. I understand why that is and that isn't too big of a problem. I'll show my problem in the below code:

      class testClass {
          constructor(){
             this.prop = 'test';
          }
      
          test(){
              return this.prop;
          }
      }
      

      Later I will save this object:

      var room = Game.rooms['sim'];
      var classObj = new testClass();
      room.memory.test = classObj;
      

      On the next tick I will pull up the object:

      var room = Game.rooms['sim'];
      var classObj = room.memory.test;
      //correctly sends the word test to the console. 
      console.log(classObj.prop);
      //understandably sends undefined to the console.
      console.log(classObj.test);
      

      I have attempted to remedy this problem by adding the function to the memory object prototype.

       Object.getPrototypeOf(classObj).test = testClass.prototype.test;
      

      This works some of the time except I constantly keep getting this error in the console every couple ticks before my whole script is even started.

      "Error: "test" is not a valid memory segment ID at self.onmessage (blob:https://screeps.com/83fe0913-2d1b-43e0-83a7-d3490fc5868b:2:100470)"

      Am I doing this completely wrong? What can I do to make this error go away?

      posted in Help
      grandpa_sam
    • RE: screep.carry.energy show 50 units while right panel for creep clearly show it is not carrying anything

      Just fixed the problem. I was accidentally setting that value to 50 earlier and I guess the system resets back to the correct value in between loop calls. 

      posted in Technical Issues and Bugs
      grandpa_sam