Reference

Reference

layout

https://webkit.org/blog/2518/state-of-web-inspector/

  • Toolbar
  • Navigation bar
  • Activity viewer
  • Dock controls
  • Navigation slider
  • Quick console
  • Content browser
  • Details sidebar

https://wonderunit.com/storyboarder/

  • Brush tools
  • Sketch Pane
  • Board Drawer
  • Edit in photoshop
  • Meta data anel

-- Enemy:

local Enemy = {}
Enemy.__index = Enemy

function Enemy.new()
	return setmetatable({}, Enemy)
end

-- Boss:

local Boss = setmetatable({}, Enemy)
Boss.__index = Boss

function Boss.new()
	return setmetatable({}, Boss)
end

-- Orc:

local Orc = {}

function Orc:method()

end

-- Orc methods and properties must be defined before you copy them!

local OrcBoss = setmetatable(copy(Orc), Boss)
OrcBoss.__index = OrcBoss

local OrcEnemy = setmetatable(copy(Orc), Enemy)
OrcEnemy.__index = OrcEnemy

-- You can construct the different orc types like this:

function Orc.enemy()
	return setmetatable({}, OrcEnemy)
end

function Orc.boss()
	return setmetatable({}, OrcBoss)
end

Orc.enemy()
Orc.boss()

-- or like this:

function OrcEnemy.new()
	return setmetatable({}, OrcEnemy)
end

function OrcBoss.new()
	return setmetatable({}, OrcBoss)
end

OrcEnemy.new()
OrcBoss.new()
classDiagram
    class Enemy {
        +new()
    }
    class Boss {
        +new()
    }
    class Orc {
        +method()
    }
    class OrcBoss {
        +new()
    }
    class OrcEnemy {
        +new()
    }
    Enemy <|-- Boss
    Boss <|-- OrcBoss
    Enemy <|-- OrcEnemy
    Orc --|> OrcBoss
    Orc --|> OrcEnemy

In this diagram:

Arrows with a hollow triangle (<|–) represent inheritance. The class at the base of the arrow is the superclass, and the class at the head of the arrow is the subclass. Arrows with a diamond (–|>) represent composition. The class at the base of the arrow is composed of the class at the head of the arrow. This means:

Boss and OrcEnemy are subclasses of Enemy. OrcBoss is a subclass of Boss. OrcBoss and OrcEnemy are composed of Orc. Please note that this is a simplified representation and might not capture all the nuances of your Lua code. For example, the copy(Orc) operation is not represented in the diagram. Also, the new() methods in the diagram represent the setmetatable({}, Class) operations in your Lua code. The method() in Orc is a placeholder for all the methods and properties in Orc that you might define.

I hope this helps! If you have any other questions or need further clarification, feel free to ask.


// Base class Enemy
class Enemy {
    constructor() {
        // Enemy constructor code
    }
}

// Boss inherits from Enemy
class Boss extends Enemy {
    constructor() {
        super(); // Call the constructor of the parent class Enemy
        // Boss constructor code
    }
}

// Orc inherits from Enemy
class Orc extends Enemy {
    constructor() {
        super(); // Call the constructor of the parent class Enemy
        // Orc constructor code
    }

    method() {
        // Orc method code
    }
}

// OrcEnemy inherits from Enemy
class OrcEnemy extends Enemy {
    constructor() {
        super(); // Call the constructor of the parent class Enemy
        // OrcEnemy constructor code
    }
}

// OrcBoss inherits from Boss and Orc
// TypeScript does not support multiple inheritance, so we need to use composition for Orc
class OrcBoss extends Boss {
    private orc: Orc;

    constructor() {
        super(); // Call the constructor of the parent class Boss
        this.orc = new Orc(); // Composition: include an instance of Orc
        // OrcBoss constructor code
    }

    method() {
        return this.orc.method(); // Delegate the method call to the Orc instance
    }
}

In TypeScript, multiple inheritance is not directly supported. However, you can achieve a similar effect by using composition, where OrcBoss contains an instance of Orc and delegates calls to its methods. This way, OrcBoss has the properties and methods of both Boss and Orc.

Please note that the method() in Orc and OrcBoss is a placeholder for the actual implementation you might have in your Lua code. You’ll need to replace the comments with the actual code that should be executed in those methods. If you have any further questions or need additional assistance, feel free to ask!


-- Base class Enemy
Enemy = {}
Enemy.__index = Enemy

function Enemy.new()
    local self = setmetatable({}, Enemy)
    -- Enemy constructor code
    return self
end

-- Boss inherits from Enemy
Boss = setmetatable({}, Enemy)
Boss.__index = Boss

function Boss.new()
    local self = setmetatable(Enemy.new(), Boss)
    -- Boss constructor code
    return self
end

-- Orc inherits from Enemy
Orc = setmetatable({}, Enemy)
Orc.__index = Orc

function Orc.new()
    local self = setmetatable(Enemy.new(), Orc)
    -- Orc constructor code
    return self
end

function Orc:method()
    -- Orc method code
end

-- OrcEnemy inherits from Enemy
OrcEnemy = setmetatable({}, Enemy)
OrcEnemy.__index = OrcEnemy

function OrcEnemy.new()
    local self = setmetatable(Enemy.new(), OrcEnemy)
    -- OrcEnemy constructor code
    return self
end

-- OrcBoss inherits from Boss and has an instance of Orc
OrcBoss = setmetatable({}, Boss)
OrcBoss.__index = OrcBoss

function OrcBoss.new()
    local self = setmetatable(Boss.new(), OrcBoss)
    self.orc = Orc.new() -- Composition: include an instance of Orc
    -- OrcBoss constructor code
    return self
end

function OrcBoss:method()
    return self.orc:method() -- Delegate the method call to the Orc instance
end