Snippet Loc

Dirac

22710180
JASS:
library Loc /* v1.1.0

*/uses/* 
*/  LinkedListModule /* thehelper.net/forums/showthread.php/168775-LinkedListModule

Replacement of the Location native.

***********************************************************************
*
*   struct Loc
*
*       readonly real x
*       readonly real y
*       readonly real z
*           -   These 3 read-only variables are the Loc's coordinates
*
*       static method create takes real x, real y, real z returns Loc
*           -   Creates a new Loc with the given coordinates.
*       method destroy takes nothing returns nothing
*           -   Deallocates the Loc.
*
*       method move takes real x, real y, real z returns nothing
*           -   Assigns the Loc new coordinates.
*
*       static method join takes Loc A, Loc B returns nothing
*           -   Joins two Locs together. You can join multiple Locs
*       method disjoint takes nothing returns nothing
*           -   Breaks the joint of the given Loc.
*
*       These 4 read-only members store the relation between
*       two Locs. Can be set manually using the "get" methods
*       or automatically using the join method.
*           readonly real angle
*               -   The angle between the Locs in the XY plane.
*           readonly real distance
*               -   The distance between the Locs in the XY plane.
*           readonly real slope
*               -   The relation between the height difference of the
*               -   two Locs and the distance between them
*           readonly real zangle
*               -   The angle of the Locs in the Z plane.
*           readonly real modulo
*               -   The distance between the Locs in the XYZ plane.
*
*       method angleGet takes Loc fromWhatLoc returns nothing
*       method distanceGet takes Loc fromWhatLoc returns nothing
*       method slopeGet takes Loc fromWhatLoc returns nothing
*           -   Sets the respective member to the required value.
*
**********************************************************************/
    
    struct Loc extends array
        
        implement LinkedList
        
        readonly static location point = Location(0,0)
        
        readonly real x 
        readonly real y
        readonly real z
        
        readonly real angle
        readonly real distance
        readonly real slope
        
        method operator zangle takes nothing returns real
            return Atan(slope)
        endmethod
        
        method operator modulo takes nothing returns real
            return distance/Cos(zangle)
        endmethod
        
        method angleGet takes Loc v returns real
            set angle = Atan2(y-v.y,x-v.x)
            return angle
        endmethod
        
        method distanceGet takes Loc v returns real
            set distance = SquareRoot((v.x-x)*(v.x-x)+(v.y-y)*(v.y-y))
            return distance
        endmethod
        
        method slopeGet takes Loc v returns real
            set slope = (v.z-z)/distance
            return slope
        endmethod
        
        method calculate takes Loc v returns nothing
            call this.angleGet(v)
            call this.distanceGet(v)
            call this.slopeGet(v)
        endmethod
        
        private method refresh takes nothing returns nothing
            local thistype exit = this
            loop
                set this = next
                exitwhen this == exit
                call exit.calculate(this)
                set angle = exit.angle+bj_PI
                set distance = exit.distance
                set slope = -exit.slope
            endloop
        endmethod
        
        static method join takes Loc A, Loc B returns nothing
            set A.next.prev = B.prev
            set B.prev.next = A.next
            set A.next = B
            set B.prev = A
            call A.refresh()
        endmethod
        
        method disjoint takes nothing returns nothing
            call this.removeNode()
        endmethod
        
        method move takes real sx, real sy, real sz returns nothing
            call MoveLocation(point,sx,sy)
            set x = sx
            set y = sy
            set z = sz+GetLocationZ(point)
            call this.refresh()
        endmethod
        
        static method create takes real sx, real sy, real sz returns thistype
            local thistype this = createNode()
            call this.move(sx,sy,sz)
            return this
        endmethod
        
        method destroy takes nothing returns nothing
            call this.removeNode()
            call this.deallocate()
        endmethod
        
    endstruct
    
endlibrary
 
General chit-chat
Help Users
  • No one is chatting at the moment.
  • C Cherry.Grove:
    So what's the whole reforged situation? Do we have to run the classic version bootleg now?
  • C Cherry.Grove:
    My boyfriend is super into Bethesda modding so I'm probably going to join him in that for a bit, then move on to making mobile/browser games.
  • C Cherry.Grove:
    I mostly just want to look at my old projects because I know I posted uploads on here somewhere.
  • C Cherry.Grove:
    My one game was basically Among Us but you sabotaged an entire medieval city simulated drastically inefficiently with dynamic NPCs :S
  • C Cherry.Grove:
    of course I never finished it x D
  • jonas jonas:
    xD
  • jonas jonas:
    I think you can still run the original game, just there's a chance your map won't work with the newer patches
  • jonas jonas:
    what development framework have you been looking at for mobile development?
  • jonas jonas:
    I'm currently creating (as a hobby) a space invaders like game for mobile using Xamarin, after starting a few larger projects that I also may not have finished :rolleyes::p
  • The Helper The Helper:
    Awesome! you should look at the Atari VCS platform it does not have a huge user base but the one it has is super active at around 11k and they have no games in there store
  • The Helper The Helper:
    basically it is linux
  • The Helper The Helper:
    OMG it is BanLord as Blackveiled on the forum
  • The Helper The Helper:
    what is up buddy
  • jonas jonas:
    thanks for the tip, that sounds cool. Never heard about the VCS before but seems like it should be a good match
  • tom_mai78101 tom_mai78101:
    The winter vacation left a toll on me. I missed staying up late and sleeping in late.
  • C Cherry.Grove:
    i haven't looked into it yet
  • C Cherry.Grove:
    If I could use something Python compatible it would save me some learning
  • C Cherry.Grove:
    But Unity might be easiest
  • C Cherry.Grove:
    looking at old posts here makes me happy. Makes me be all like "wow I was pretty smart in 2009"
  • C Cherry.Grove:
    mostly failing at life through adulthood really demotivated me for a while
  • C Cherry.Grove:
    ....what I don't get is why the fuck they would force us to permanently convert to a version of the game everyone fucking hated : \
  • C Cherry.Grove:
    Raid Shadow Legends texture pack smh
  • jonas jonas:
    Most people fail at life throughout their adulthood. Sometimes we get to learn from it. Usually it just feels like crap.
  • The Helper The Helper:
    What does not kill you makes you stronger is what they say

    Members online

    Affiliates

    Hive Workshop NUON Dome
    Top