• ZILtoid1991@lemmy.world
    link
    fedilink
    arrow-up
    2
    ·
    edit-2
    19 hours ago

    Now someone needs to make it an entity component system!

    Attempt 1:

    public struct Entity {
      bool isDog : 1;
      bool isAircraftCarrier : 1;
      bool isFlea : 1;
      bool canFlyInAir : 1;
      ubyte opt_numOfAircrafts : 4;
      int entityID;
      int opt_parentID;
      static Entity createDog(int entityID) {
        Entity result;
        result.isDog = true;
        result.entityID = entityID;
        return result;
      }
      static Entity createFlea(int entityID) {
        Entity result;
        result.isFlea = true;
        result.canFlyInAir = true;
        result.entityID = entityID;
        return result;
      }
      void addAirCraft(ref Entity aircraft) {
        if (aircraft.canFlyInAir && this.isAircraftCarrier) {
          aircraft.opt_parentID = this.entityID;
          this.opt_numOfAircrafts++;
        }
      }
      void woof() {
        if (isDog) {
          if (isAircraftCarrier) writeln("I'm a motherfucking aircraft carrier");
          else writeln("Woof!");
        }
      }
    }
    
    void main() {
      Entity dog = Entity.createDog(1);
      Entity flea = Entity.createFlea(2);
      dog.woof();
      dog.isAircraftCarrier = true;
      dog.addAirCraft(flea);
      dog.woof();
    }