Last active 1549704372

Revision 369ec3c60e48d5263fa386ea6756fcc5019bbbf4

wownav.py Raw
1#!/usr/bin/env python3
2# proof of concept for an idea i've had for a while
3from peewee import *
4
5db = SqliteDatabase("wownav.db")
6
7class BaseModel(Model):
8 def __init__(self, *args, **kwargs):
9 super(*args, **kwargs)
10 self.save()
11 class Meta:
12 database = db
13
14class Faction(BaseModel):
15 name = CharField()
16 hostile_to = ForeignKeyField(Faction)
17
18class City(BaseModel):
19 name = CharField()
20 faction = ForeignKeyField(Faction, backref="cities")
21
22class Location(BaseModel):
23 name = CharField()
24 city = ForeignKeyField(City, backref="locations")
25 lat = DoubleField()
26 lon = DoubleField()
27
28class Mode(BaseModel):
29 name = CharField()
30
31class Path(BaseModel):
32 start_city = ForeignKeyField(City, backref="paths_start")
33 dest_city = ForeignKeyField(City, backref="paths_dest")
34 start_loc = ForeignKeyField(Location, backref="paths_start")
35 dest_loc = ForeignKeyField(Location, backref="paths_dest")
36 seconds = IntegerField()
37 mode = ForeignKeyField(Mode, backref="paths")
38 danger = BooleanField() # to <faction> players from npcs
39 faction = ForeignKeyField(Faction, backref="paths")
40
41if __name__ == "__main__":
42 db.connect()
43 db.create_tables([Faction,City,Location,Mode,Path])
44
45 Neutral = Faction(name="Neutral")
46 Alliance = Faction(name="Alliance")
47 Horde = Faction(name="Horde", hostile_to=Alliance)
48 Alliance.hostile_to = Horde
49
50 Boralus = City(name="Boralus", faction=Alliance)
51 DazarAlor = City(name="Dazar'alor", faction=Horde)
52
53 TradewindsFlightMaster = Location(name="Tradewinds Market Flight Master", city=Boralus, lat=67, lon=14.84)
54 BFA_Alliance_PVP_Vendor = Location(name="BFA Alliance PVP Vendor", city=Boralus, lat=55.81, lon=25.16)
55
56 GreatSealFlightMaster = Location(name="Great Seal Flight Master", city=DazarAlor, lat=51.51, lon=41.08)
57 MugumbalaFlightMaster = Location(name="Mugumbala Flight Master", city=DazarAlor, lat=35.87, lon=84.52)
58 BFA_Horde_PVP_Vendor = Location(name="BFA Horde PVP Vendor", city=DazarAlor, lat=32.28, lon=89.46)
59
60 GroundMount = Mode(name="Ground mount")
61 GoblinGlider = Mode(name="Goblin Glider")
62 FlightMaster = Mode(name="Flight Master")
63
64 tw_to_pvp = Path(start_city=Boralus,
65 dest_city=Boralus,
66 start_loc=TradewindsFlightMaster,
67 dest_loc=BFA_Alliance_PVP_Vendor,
68 seconds=17,
69 mode=GroundMount,
70 danger=False,
71 faction=Alliance)
72 gs_to_pvp = Path(start_city=DazarAlor,
73 dest_city=DazarAlor,
74 start_loc=GreatSealFlightMaster,
75 dest_loc=BFA_Horde_PVP_Vendor,
76 seconds=62,
77 mode=GoblinGlider,
78 danger=True,
79 faction=Horde)
80 gs_to_mug = Path(start_city=DazarAlor,
81 dest_city=DazarAlor,
82 start_loc=GreatSealFlightMaster,
83 dest_loc=MugumbalaFlightMaster,
84 seconds=37,
85 mode=FlightMaster,
86 danger=False,
87 faction=Horde)
88 mug_to_pvp = Path(start_city=DazarAlor,
89 dest_city=DazarAlor,
90 start_loc=MugumbalaFlightMaster,
91 dest_loc=BFA_Horde_PVP_Vendor,
92 seconds=7,
93 mode=GroundMount,
94 danger=False,
95 faction=Horde)